14.04に。マシンにSSHで接続し、/etc/sudoers
に次の行を追加しました。
myuser ALL=NOPASSWD: ALL
そして、実行してみました:
Sudo mkdir /etc/blah
...パスワードの入力を求められます。なぜ?!?
私はnotこの操作を行うときにパスワードの入力を求められませんls -ltr /
を実行すると、次のメッセージが表示されることに注意してください。
drwxr-xr-x 94 root root 4096 Jul 30 13:28 etc
しかし、私は自分を「スーダー」として設定したので、これは重要ではないと思いますか?
さらに重要なことは、パスワードを求められることなく、現在のユーザー(myuser
)としてSudo mkdir /etc/blah
を実行できるようにするために何をする必要がありますか?
これが私の/etc/sudoers
ファイル全体です。
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
fizzbuzz ALL=NOPASSWD: ALL
chadmin ALL=NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group Sudo to execute any command
%Sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
これを引き起こしたのは、ルールのシーケンス/順序です。最後のルールが優先されます。
問題を解決するには、単に行を移動し、
fizzbuzz ALL=NOPASSWD: ALL
chadmin ALL=NOPASSWD: ALL
sudoers
ファイルから
Sudo visudo -f /etc/sudoers.d/myOverrides
これは、プレーンテキストエディタでsudoers
ファイルを編集するよりも優れたアプローチです。誤ってファイルにエラーを挿入すると、Sudo
を実行できなくなる可能性があります。常にvisudo
を使用して、構文がチェックされ、間違いに関する警告が表示されるようにしてください!
次のようにオーバーライドされているため、ディレクティブは機能しません。
%admin ALL=(ALL) ALL
%Sudo ALL=(ALL:ALL) ALL
groups
コマンドを実行すると、ユーザーがこれらのグループに属していることがわかります。
myuserがSudoグループにある場合、3番目の行が1番目の行をオーバーライドするため、この順序の行はパスワードなしのアクセスを提供しません(Florian Dieschによると)。 。
myuser ALL=(www-data:www-data) NOPASSWD: ALL
# Allow members of group Sudo to execute any command
%Sudo ALL=(ALL:ALL) ALL
したがって、次の順序で行を配置します。
# Allow members of group Sudo to execute any command
%Sudo ALL=(ALL:ALL) ALL
myuser ALL=(www-data:www-data) NOPASSWD: ALL
myuserアカウントでSudo -l
を使用して、myuserが持つ権限を確認します。
ユーザーに対して複数のエントリが一致する場合、last oneが使用されます。したがって、fizzbuzz
とchadmin
がグループadmin
またはSudo
のメンバーである場合、パスワードの入力が求められます。
#includedir
行の後のsudoers
ファイルの最後に2行を追加します。
Sudo
を介して実行できるコマンドをカスタマイズする場合、sudoers
ファイルを直接編集するのではなく、/etc/sudoers.d/
の下の別のファイルでこれらの変更を行うのが理想的です。また、ファイルを編集するには、常にvisudo
を使用する必要があります。 NOPASSWD
コマンドでALL
を許可しないでください。
例:Sudo visudo -f /etc/sudoers.d/mynotriskycommand
許可を与える行を挿入:myuser ALL= NOPASSWD: /bin/mkdir
次に、保存して終了すると、visudo
は、構文エラーがある場合に警告します。
Sudo -l
を実行して、ユーザーに付与された権限を確認できます。ユーザー固有のNOPASSWD
コマンドが出力の%groupyouarein ALL=(ALL) ALL
コマンドの前に表示される場合、パスワードの入力を求められます。
これらのsudoers.dファイルを大量に作成している場合は、ユーザーごとに名前を付けて作成し、視覚化しやすくすることをお勧めします。ファイル内のファイル名とルールの順序は非常に重要であり、前回のエントリよりも許容範囲が広くても少なくても、最後にロードされたものが優先されることに注意してください。
00-99またはaa/bb/ccのプレフィックスを使用してファイル名の順序を制御できますが、数字のプレフィックスを持たないファイルがある場合は、番号の付いたファイルの後にロードされ、上書きされることに注意してください設定。これは、言語設定に応じて、シェルが最初に使用する「字句ソート」が番号をソートし、次に「昇順」でソートするときに大文字と小文字をインターリーブするためです。
printf '%s\n' {{0..99},{A-Z},{a-z}} | sort
およびprintf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort
を実行して、現在の言語がAaBbCc
などを印刷するか、ABC
を表示してからabc
を使用して、最適な「最後の」文字プレフィックスを決定しますだろう。