web-dev-qa-db-ja.com

パスワードなしで特定のSudoコマンドを実行するにはどうすればよいですか?

特定のマシンでは、時々Sudoコマンドを実行する必要があります。ほとんどの場合、Sudoにパスワードを入力しても大丈夫です。

ただし、つのSudoコマンドを実行しますパスワードを入力せずに

  • Sudo reboot
  • Sudo shutdown -r now
  • Sudo shutdown -P now

これらのコマンドをパスワード保護からSudoに除外するにはどうすればよいですか?

208
Bhavesh Diwan

NOPASSWDディレクティブを使用します

/etc/sudoers fileNOPASSWDディレクティブを使用できます。

ユーザーの名前がuserで、ホストの名前がHostの場合、これらの行を/etc/sudoersに追加できます。

user Host = (root) NOPASSWD: /sbin/shutdown
user Host = (root) NOPASSWD: /sbin/reboot

これにより、ユーザーuserはパスワードを入力せずにHostで目的のコマンドを実行できます。他のすべての Sudo edコマンドには、引き続きパスワードが必要です。

sudoers manページ で説明されているように、sudoersファイルで指定されたコマンドは must 完全修飾(つまり、実行するコマンドへの絶対パスを使用)する必要があります。相対パスを指定すると、構文エラーと見なされます。

コマンドが末尾の/文字で終了し、ディレクトリを指している場合、ユーザーはそのディレクトリ内のコマンドを実行できます(ただし、その中のサブディレクトリでは実行できません)。次の例では、ユーザーuserは、ディレクトリ/home/someuser/bin/で任意のコマンドを実行できます。

user Host = (root) NOPASSWD: /home/someuser/bin/

注:常にコマンド visudo を使用してsudoersファイルを編集し、システムからロックアウトされないようにします–誤ってsudoersファイルに何か間違ったことを書き込んでしまった場合に備えて。 visudoは、変更されたファイルを一時的な場所に保存し、変更されたファイルをエラーなしで解析できる場合、実際のsudoersファイルを only 上書きします。

/etc/sudoers.dを変更する代わりに/etc/sudoersを使用する

/etc/sudoersファイルを編集する代わりに、/etc/sudoers.dの新しいファイルに2行を追加できます。 /etc/sudoers.d/shutdown。これは、Sudo権限に対するさまざまな変更を分離するエレガントな方法であり、アップグレードを容易にするために元のsudoersファイルをそのまま残します。

注:繰り返しますが、コマンド visudo を使用してファイルを編集し、ロックアウトされないようにしてください。システム:

Sudo visudo -f /etc/sudoers.d/shutdown 

また、これにより、新しいファイルの所有者とアクセス許可が正しく設定されます。

sudoersが台無しになった場合

visudoを使用してファイルを編集せずに、誤って/etc/sudoersを台無しにしたり、/etc/sudoers.dでファイルを台無しにした場合、Sudoからロックアウトされます。

解決策は、 pkexec を使用してファイルを修正することです。これは、Sudoの代替です。

/etc/sudoersを修正するには:

pkexec visudo

/etc/sudoers.d/shutdownを修正するには:

pkexec visudo -f /etc/sudoers.d/shutdown

sudoersファイルの所有権または許可、あるいはその両方が正しくない場合、このファイルはSudoによって無視されるため、この状況でもロックアウトされる可能性があります。この場合も、pkexecを使用してこれを修正できます。

正しい許可は次のようになります。

$ ls -l /etc/sudoers.d/shutdown 
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown

このようにpkexecを使用して、 所有権と権限 を修正します。

pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown
281
mgd

申し訳ありませんが、これといくつかの本当に複雑な答えについては非常に混乱しているので、誰かが誤解して何かおかしなことをする前にここで計量しなければならないと感じています。

visudo !!を使用

構成に次の行を追加します。

ALL ALL=NOPASSWD: /sbin/reboot,/sbin/shutdown

これにより、コマンド、リブート、およびシャットダウンをパラメーターを使用して任意のユーザーから実行できます。

スタック交換してください、単純な簡潔な答えを与えてください。

2
Owl