CentOSにsudoを設定

いつも su を使って、root ユーザーに切り替えてから操作していたが、セキュリティ上の配慮があるので、sudo で root ユーザー権限を利用することがだんだん普及された。
方法としては、以下の通り:

1.まず sudo がインストールされているかを確認

[test@localhost ~]$ yum list installed | grep sudo
sudo.i386   1.7.2p1-14.el5_8.3   installed
[test@localhost ~]$

もしインストールされていなければ、root ユーザーに切り替え、下記のようにインストール。

[root@localhost ~]$ yum install sudo

2.次に sudo を設定

sudo コマンドのヘルプを確認しましょう。

[root@localhost ~]$ man sudo

上記のコマンドを実行すると、コマンドの使い方の説明が出てくる、最後の方に関連項目がある。

stat(2), login_cap(3), sudoers(5), passwd(5), visudo(8), grep(1),su(1).

visudo コマンドを使って sudo の設定を行う。

visudo(/usr/sbin/visudo)を使って、sudo できるユーザーを /etc/sudoers に追記できる。

[root@localhost ~]# visudo

いくつの設定箇所があるんのだが、sudo を利用できる最小限の箇所を弄る方針として、少なくでも下記の箇所を修正する必要がある。

① ユーザーアカウント毎に設定するには

ユーザーID   ALL=(ALL)   ALL

② グループ毎に設定するには

この場合、グループ名の前に%を付ける。

%wheel   ALL=(ALL)   ALL

単なるユーザーとグループを設定するには、sudo コマンドを実行できるが下記のエラーメッセージが出る可能性がある。

[test@localhost ~]$ sudo  service httpd status
[sudo] password for test:
sudo: service: command not found

このエラーメッセージが出た原因はコマンドのパスが通れていないことを示している。この場合、以下の修正が必要となる。

# Defaults specification

#
# Disable “ssh hostname sudo <cmd>”, because it will show the password in clear.
#         You have to run “ssh -t hostname sudo <cmd>”.
#
# Defaults    requiretty                                                  #←←コメントアウト
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin    #←←追加
#

再度確認してみる。

[test@localhost ~]$ sudo service httpd status
[sudo] password for test:
httpd (pid  xxxxx) を実行中…

[sudo] password for test: のところに、ユーザー test のパスワードを入力する。

これで sudo を利用する設定が完了。