sudo コマンドを実行し、同じ行にパスワードを指定します。

sudo コマンドを実行し、同じ行にパスワードを指定します。

私はこのようなことをしたい:

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]

そしてパスワードを尋ねません。

関連情報