いつも 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 を利用する設定が完了。