まず、絶対に使用しないでecho password | ...
ください。コマンドラインで。これは、パスワードが履歴ファイルに残り、他のユーザーがps
コマンドを使用してパスワードを見ることができるため、安全ではありません。sudo
パスワードを入力せずにコマンドを実行したい場合は、 のNOPASSWD
オプションを使用できます/etc/sudoers
。これを確認してください: https://unix.stackexchange.com/questions/18830/how-to-run-a-specific-program-as-root-without-a-password-prompt
パーミッションの問題について。そうです、問題は出力リダイレクト>
です。で実行されているコマンドではなく、シェルが出力ファイルを開くことを知っておく必要がありますsudo
。
この例では:
sudo command > output.file
シェルは を開こうとしoutput.file
、起動sudo command
して標準出力を開いているファイルに設定します。ただし、シェルにはルート権限がありません。
tee
回避策は、次のようなコマンドを使用することです。
command | sudo tee output.file
ただし、そのファイルを編集するための適切なアクセス許可を付与するだけです。例として、グループを作成し、そのファイルのグループ所有権を変更し、あなたをそのグループに変更することができます。例えば:
# Add group
sudo groupadd developers
# Change group ownership of the file
sudo chown root:developers output.file
# make the file writable by the group
sudo chmod g+w output.file
# Finally put you into that group
sudo usermod -a -G developers YOU
しかし、管理ユーザーである場合、つまり ですべてのコマンドを実行できる場合はsudo
、上記のtee
ソリューションで十分です。