特定のマシンでは、時々Sudo
コマンドを実行する必要があります。ほとんどの場合、Sudo
にパスワードを入力しても大丈夫です。
ただし、つのSudo
コマンドを実行しますパスワードを入力せずに:
Sudo reboot
Sudo shutdown -r now
Sudo shutdown -P now
これらのコマンドをパスワード保護からSudo
に除外するにはどうすればよいですか?
NOPASSWD
ディレクティブを使用します/etc/sudoers
file でNOPASSWD
ディレクティブを使用できます。
ユーザーの名前が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
申し訳ありませんが、これといくつかの本当に複雑な答えについては非常に混乱しているので、誰かが誤解して何かおかしなことをする前にここで計量しなければならないと感じています。
visudo !!を使用
構成に次の行を追加します。
ALL ALL=NOPASSWD: /sbin/reboot,/sbin/shutdown
これにより、コマンド、リブート、およびシャットダウンをパラメーターを使用して任意のユーザーから実行できます。
スタック交換してください、単純な簡潔な答えを与えてください。