読者です 読者をやめる 読者になる 読者になる

俺が生きている可能性は高い

人生ガンバローン

sudoをパスワード無しで使う

unix sudo

こんばんは、こんばんは

sudoしてますかーーーー?

unix系OSにはrootとして任意のコマンドを実行する sudo というコマンドがあります。 このコマンドはデフォルトだと wheel グループに所属しているユーザのみ利用可能ですが、それ以外のユーザでも使いたいケースがあると思います。

そういう時には visudo コマンドで表示されるfileに下記のように追記すればOKです。 ちなみに、みんな大好きviでfileは開かれるので初めての人、苦手な人は気をつけて下さい(?)

some-user ALL=(ALL)     ALL

上記の意味は、ざっくり言うと「some-userユーザに対して、すべてのコマンドに対してsudoを許可する」です。

この時、some-userユーザにパスワードが設定されている場合、そのユーザのログイン後最初のsudo時にパスワードが要求されます。 どうしてもパスワードを要求されるのがアレだわーみたいな時はNOPASSWDオプションを指定してあげれば要求されません。

some-user ALL=(ALL)     NOPASSWD: ALL

で、 ここまでは「あっ、はい。」って感じだと思うのですが、

実は今日気づきがあって、こんな感じのsudoersで、some-userユーザがwheelグループに属している場合、some-userユーザのsudoコマンド実行時に パスワードが要求される んですね!

some-user ALL=(ALL)     NOPASSWD: ALL
%wheel  ALL=(ALL)       ALL

some-userについての記述がwheelグループについての記述より後の場合は、パスワードが要求されませんでした。 なので、ユーザレベルでの設定よりもグループレベルでの設定の方が優先される、とかではなくて、単純にそのユーザに対して適用されるルールをオーバーライドしていくロジックっぽいですね。

余談

visudoの実体としては /etc/sudoersvimで開いて、saveする時に構文エラーがないかチェックしてからsaveしてくれます。

ちなみにちなみに、一般ユーザの状態で直接 sudo vim /etc/sudoers とかして構文エラーがある状態でsaveしちゃうとそれ移行のsudoが一切できなくなるので察してください。 考えただけでも胸がドキドキしますね!