SUDO:sudoersファイルのユーザー名条件

SUDO:sudoersファイルのユーザー名条件

sudo私のユーザーが(スクリプトから開始された)ホームディレクトリからWebディレクトリにファイルをコピーできるようにしたいと思います。

コマンドは次のとおりです。

sudo cp /home/$LOGNAME/file_source /var/www/$LOGNAME_file_dest

そのため、sudoersファイルに次の行を追加しました。

%users ALL=(ALL)NOPASSWD:/bin/cp /home/$LOGNAME/file_source /var/www/$LOGNAME_file_dest

パスワードを入力するように求められますので、正しく機能しませんが、入力しないsudoでください。$LOGNAMEsudoerファイルや同様の内容で説明されていない変数の問題のようです。

私は制御光であり、これは非常に厳しい条件でなければならず、*そうでなければ他の何も受け入れられないということに言及することをほとんど忘れてしまった。

誰でもこのような問題を解決できますか?それとも、痛みを伴う道を進んで、1人のユーザーが自分のファイルをディレクトリcpに追加できるようにする必要がありますか?/var/www

ベストアンサー1

シェル変数はシェルによって解釈され、sudoまたはそれを使用して開始された他のプログラムでは表示されません。つまり、実行時foo=bar; echo "$foo"にシェルが実行される前にそれを拡張するechoため、渡すデータが「foo」という変数から来るという事実は全くわかりません。echoしたがって、sudoersファイルでシェル変数を透過的に機能させることは不可能です。

また、何でも可能であるため、使用するかどうかにかかわらず、デフォルトで$LOGNAME実行したいことは、デフォルトで後ろにアスタリスクがあるのと/home同じです。sudoersデフォルトでは、ルートとして何でもコピーできるので、これはお勧めできません。これは大きなセキュリティリスクです($LOGNAME含まれる可能性があるため..)。結局は使いたくないと言うが*、取ろうとする行動も同様に危険です。

最善の方法は、これらのユーザーにすべてのものへの読み取りアクセスを許可し、/home/$LOGNAME/file_sourceそれらへの書き込みアクセスを許可することです/var/wwwwww-logsこれらのパスに対してグループ読み取りとグループ書き込みを実行するグ​​ループがある可能性があります。

おすすめ記事