私はこのようなことをしたい:
sudo -p password rm /a/file
パスワードとユーザーを同じ行に入れることはできますか?
私のsudoバージョンは1.8.9p5
答え1
sudo
パスワードを指定するオプションはありませんが、次のようにコマンドラインから認証できます。
echo password | sudo -u root --stdin
そうでなければ
echo password | sudo -S
おすすめsudo のマニュアルページ:
-S
、--stdin
標準エラーにプロンプトを作成し、端末デバイスを使用する代わりに、標準入力からパスワードを読みます。パスワードの後には改行文字が続きます。
そして
-u
ユーザー、--user=
ユーザー
デフォルトのターゲットユーザー(通常はroot)ではなくユーザーとしてコマンドを実行します。ユーザーは、ユーザー名、または「#」文字の前に付いた数字のユーザーID(UID)です(たとえば、#0はUID 0を意味します)。コマンドを UID として実行する場合、多くのシェルでは '#' をバックスラッシュ ('\') にエスケープする必要があります。一部のセキュリティポリシーでは、UIDをパスワードデータベースにリストされているものに制限することがあります。 sudoersポリシーは、targetpwオプションが設定されていない限り、パスワードデータベースにないUIDを許可します。他のセキュリティポリシーはこれをサポートしていない可能性があります。
しかし、sudo
長い間開発が進んできました。バージョン確認:
-V
、--version
sudo
セキュリティポリシープラグインとI / Oプラグインのバージョン文字列を含むバージョン文字列を印刷します。呼び出し側のユーザーがすでにrootの場合、この-V
オプションはビルド時に構成に渡されたパラメーターを表示し、sudo
プラグインはデフォルトのオプションなどのより詳細な情報を表示できます。
長いオプションのサポートが追加されました。2013年。
認証に加えて、いくつかのsudo
ことが必要です。する、コマンドなど。私はしばしば次のことを行い、正しく機能していることを確認します。
sudo id
これは表示する必要があります根次のユーザー
uid=0(root) gid=0(root) groups=0(root)
答え2
OPがこれを望む妥当な理由があるかもしれませんが、通常これは悪い考えです(パスワードはpsなどで読むことができます)。したがって、私はより安全な代替案を提案したいと思います。
sudoを使用してパスワードを入力せずにいくつかのコマンドを実行したい場合、より良い解決策は、ユーザーがパスワードなしでコマンドを実行できるようにすることです。
sudoersファイルを開き、sudo visudo
次の行を追加します(明らかに最初のユーザー名と最後のコマンドを置き換えます)。
alice ALL = NOPASSWD: /full/path/to/command
ここにもっと説明があります:https://askubuntu.com/a/39294
答え3
ほとんどの場合、パスワードをパイプする代わりにsudoを維持したくありません。資格情報が更新されました。:
refreshPermissions () {
local pid="${1}"
while kill -0 "${pid}" 2> /dev/null; do
sudo -v
sleep 10
done
}
sudo -v
refreshPermissions "$$" &
だから注文するプログラムにはルートアクセスが必要です。以下を実行してください。
sudo [command]
そしてパスワードを尋ねません。