IT技術で仕事を減らしたい!

ITエンジニアのメモ+α

su/sudoの設定

どうも、nippaです。

ユーザ管理を勉強中です。

su、sudoでよく混乱するのでまとめておきたい思います。

1. suとsudoの違い

この2つのコマンド似ていましが意味が全く違います。

su: Switch Userの略
sudo: Super User DOの略

suはutil-linuxのパッケージで、かなり昔から存在しています。

sudoはsudoパッケージになります。

2. suコマンド

2.1 wheelグループで管理

ユーザのwheelグループにすることで管理するのが一般的です。 (ちなみに、wheelはbig wheel:すごいパワー、偉大な力という意味の1970年代のスラングが由来らしいです。参考))

suコマンドの設定は、/etc/pam.d/suで管理されています。/etc/pam.d/suのファイルの下記の部分を編集します。

# Uncomment the following line to implicitly trust users in the "wheel" group.
# 下の行のコメントアウトを外す
auth            sufficient      pam_wheel.so trust use_uid 

これで、wheelグループに属するユーザがsuコマンドを利用できるようになります。

もちろん、属していないユーザは利用できません。

suでログインする場合、ログインするユーザのパスワード入力が必要です。

2.2 あるグループに属するユーザが特定のユーザにのみsu可能にする設定

testユーザがsuコマンドでadminにユーザ変更する設定になります。adminユーザ以外へのsuはできない設定になります。

まず、adminmembersグループを作成します。

groupadd adminmembers

次に、testユーザのグループにadminmembersを追加します。

usermod -a -G adminmembers test

-aはすでに設定されているグループを残してグループを追加します。 -Gはユーザのセカンダリーグループに追加を意味します。 ちなみに-gはプライマーグループになります。

次に、/etc/security/su-adminmembers-accessにadminmembersグループがアクセス可能なユーザを指定します。ここではadmin

cat /etc/security/su-adminmembers-access
# 結果
admin

ファイルの権限が644になっていることを確認します。

ls -l /etc/security/su-adminmembers-access
-rw-r--r-- 1 root root 7 Mar 3 19:44 /etc/security/su-adminmembers-access

/etc/pam.d/suの設定をします。pamの設定は上から順に読み込まれるので、下の追加部分を書き加えてください。

auth            required        pam_env.so
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
auth [success=2 default=ignore] pam_succeed_if.so use_uid user notingroup adminmembers #追加
auth  required    pam_wheel.so use_uid group=adminmembers # 追加
auth  required    pam_listfile.so item=user sense=allow onerr=fail file=/etc/security/su-adminmembers-access # 追加

これで、testユーザはadminユーザにのみ、suコマンドでスイッチすることができる設定になります。

他のグループ設定を入れることも可能です。

3. sudoコマンド

sudoerのman pageを参考にしています。

3.1 visudoコマンド

sudoコマンドは管理者権限でコマンドを実行するためのコマンドです。

設定は/etc/sudoersになります。visudoコマンドを利用してファイルを編集することができます。

visudo

-cオプションで文法チェック、-fでファイル指定、

3.2 wheelグループのユーザでsudoコマンドを利用可能にする。

rootユーザでvisudoを実行するとエディタが開かれます。

開かれたファイルの中の

## Allows people in group wheel to run all commands
%wheel ALL=(ALL)       ALL  #コメントアウトをはず、もしくは、追加

と書き込むとwheelグループに属するユーザがsudoコマンドを実行できます。

3.3 sudoerの設定例

例えば、usersグループにcdromのmount/umountを実行できる権限を付けるときは、

%users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

との設定が可能。

%はグループを示しているので、ユーザ指定も可能です。

testuser  ALL=(ALL)  /sbin/service httpd start

testuserにhttpdの起動を許可(停止はできない)。

感想

suとsudoの違い、細かな設定を確認しました。

suコマンドのオプションでパスの設定がどうなるかもまとめておきたいです。

ではでは、また次回。