mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Linux - sudo でパスワード要求しない!

[ pc_tips ] [ Linux, LinuxMint ]

こんばんは。

Linux の一般ユーザで root 権限のコマンドを実行する際に sudo をコマンドを使用します。
デフォルトでは実行時にパスワードが要求されますが、場合によってはパスワード要求を不要にしたい場合もあります。

以下、備忘録です。

0. 前提条件

  • Linux Mint 14(64bit) での作業を想定しているが、他のディストリビューションでも同様と思われる。
  • “/etc/sudoers” や “/etc/sudoers.d” 配下のファイルの設定を誤ると大変なことになるらしい!厳重注意!

1. sudoers 確認

まず、以下のコマンドで sudo コマンドの設定を確認してみる。

1
$ sudo visudo

デフォルトでは以下のようになっているはず。(環境により多少異なる)

/etc/sudoers
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#
# 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»-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

# 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

2. 設定追加

“/etc/sudoers” を直接編集しても良いだろうが、"/etc/sudoers.d" ディレクトリ配下に個別の設定ファイルを作成する方が良さそう。
(ちなみに、“/etc/sudoers” 内の #includedir /etc/sudoers.d 行頭の # はコメントではないので削除しないこと

特定のユーザに対して一切パスワード要求をしないようにする場合は以下のとおり。
(書式は ユーザ名 ホスト名=(権限) コマンド で)

/etc/sudoers.d/hoge
1
hoge  ALL=(ALL) NOPASSWD:ALL

特定のユーザ、特定のコマンドに対してパスワード要求をしないようにする場合は以下のとおり。(以下は “shutdown” コマンドの例)
(書式は ユーザ名 ホスト名=(権限) コマンド で)

/etc/sudoers.d/hoge
1
hoge  ALL=(ALL) NOPASSWD:/sbin/shutdown

指定したいコマンドが複数ある場合はカンマで区切るか、行を分ける。

/etc/sudoers.d/hoge
1
hoge  ALL=(ALL) NOPASSWD:/sbin/shutdown, NOPASSWD:/usr/bin/find

か、以下のように。

/etc/sudoers.d/hoge
1
2
hoge  ALL=(ALL) NOPASSWD:/sbin/shutdown
hoge  ALL=(ALL) NOPASSWD:/usr/bin/find

ちなみに、 “/etc/sudoers” ファイル内に %admin 等の設定があるが、"hoge" ユーザが “admin” グループに属している場合は、まず %admin の設定が有効になり、それから追加の設定が有効になる。

“sudoers” で設定済みのグループに属さない一般ユーザで、特定のコマンド以外はパスワード要求するように設定するには、以下のようにする。

/etc/sudoers.d/hoge
1
hoge  ALL=(ALL) PASSWD:ALL, NOPASSWD:/sbin/shutdown

3. パーミッション設定

そして、パーミッションを設定する。(このファイルのパーミッションは 0440 でなければならないので)

1
$ sudo chmod 440 /etc/sudoers.d/hoge

再度このファイルを編集する場合は、chmod +w 等で書き込み権限を付与してからでないと編集できないので注意。

4. 動作確認

実際にコマンドラインで sudo コマンドを使ってコマンドを入力して確認する。
パスワード要求されなくなっていれば成功である。

5. その他

当方の場合、「一般ユーザである時間のかかるコマンドを実行して、その処理が終了したら shutdown する」ために、今回のような設定をしている。
実際には、コマンドラインで以下のように実行する場合。("hoge.sh" が時間のかかる処理)

1
$ ./hoge.sh ; sudo shutdown -h now

ちょっとしたことですが、設定しておくだけで格段に便利になります。

ただ、本来 root 権限で実行されるべきコマンドがパスワード要求されなくなるので、そのことを充分把握しておくことも必要です。

以上。

Comments