1

public_html ディレクトリに html を生成する doxygen を時々実行するソース リポジトリを用意します。次のように、umask を変更して bash のプライマリ グループをハックする必要があることに気付きました。

echo "umask $UMASK; doxygen include_config.conf" | newgrp $GROUP

しかし、それは不格好に思えます.doxygenが生成するすべてのファイル/ディレクトリにUID/グループと権限を直接設定するための構成設定またはオプションスイッチがあるかどうか疑問に思わずにはいられませんか? これは、Web サイトで HTML を生成するために頻繁に使用されるため、ほとんどすべての人が出力を誰でも読み取り可能にする必要があります。Web、構成ファイル、およびマニュアルページを無駄に検索しました。

更新:組み込みの機能を見つけたいと思っていましたが、何もないようです。いくつかの反復の後、このラッパーは仕事をしているようです:

#!/bin/bash
OUTPUT_PATH=/path/to/output
CONFIG_PATH=/path/to/include_config.conf
GROUP=somegroup
PERM=750
UMASK=027 

if [[ ! -e $OUTPUT_PATH ]]; then mkdir $OUTPUT_PATH; fi
chmod $PERM $OUTPUT_PATH
chmod g+s $OUTPUT_PATH
chgrp $GROUP $OUTPUT_PATH
umask $UMASK
doxygen $CONFIG_PATH

これは、元のスクリプトよりも堅牢で、移植性が高く、扱いにくいものではありませんが、1 つのパスで動作し、競合状態もありません。

4

1 に答える 1

1

私の知る限り、生成されたファイルの所有権の詳細を設定するよう Doxygen に指示する方法はありません。Doxygen が Linux スタイルのファイルシステムのパーミッションの概念をまったく持たないシステムで実行されることを考えると、そのようなものがアプリケーションに組み込まれているとしたら、私は驚くでしょう。ただし、ドキュメントを作成して権限を自動的に調整する簡単なスクリプトを作成するのは簡単です。

#!/bin/bash

doxygen include_config.conf
chgrp -R $GROUP $PATH_TO_OUTPUT_FOLDER
chmod -R $UMASK $PATH_TO_OUTPUT_FOLDER

更新: あなたのコメントに応えて (少しトピックから外れていることを認めます): これを行うために使用newgrpしないことをお勧めします。これは、一度に 1 つのグループにしか所属できなかった古い UNIX の時代を思い起こさせる、時代遅れのコマンドです。最新のシステムで使用すると、奇妙な問題が発生する可能性があります。呼び出しの前に次を追加するdoxygenと、ディレクトリに作成されたものはすべて、親フォルダーのグループを継承します (これは基本的に必要なものです)。

mkdir $PATH_TO_OUTPUT_FOLDER
chgrp $GROUP $PATH_TO_OUTPUT_FOLDER
chmod g+s $PATH_TO_OUTPUT_FOLDER

Doxygen を実行したchgrp後は不要になります。おまけとして、現在のログイン セッションまたは実行中のプロセスのグループ ID を変更せず、サブシェルをフォークしません (newgrp通常、これら 2 つのうちの 1 つを行います)。

于 2012-04-20T20:35:12.310 に答える