テックブログ

技術ネタ

sudoの設定について

こんにちは。技術部のmshindoです。

一般ユーザーがスーパーユーザー(rootユーザー)の権限を使って操作したいとき、
sudoコマンドを使ってroot権限を持った状態で操作ができるように設定してみます。

※注意※
この設定は信頼できるユーザーのみに権限を付与するようにしてください。

設定の前にコマンド「sudo」と「su」コマンドの意味を確認しておきます。

————————————————————————————-
■sudoコマンド(Switch User DO)
rootやその他のユーザーに切り替わった状態でコマンドを実行する
exitやlogoutでそのユーザーから抜けることができる

■suコマンド(Switch User)
ユーザーを切り替える
特にユーザー指定がなければ、rootに切り替えるが、rootのパスワードを入力する必要がある
exitやlogoutでそのユーザーから抜けることができる

■「-」オプション
ログインシェルを使用してユーザーを切り替える
————————————————————————————-

今回は、信頼できる「test」というユーザーがsudoコマンドを使えるように権限を付与します。

まずはsudoパッケージがインストールされていることが条件となりますので、
インストールされているか確認してみましょう。

[root@web ~]# rpm -q sudo
sudo-1.8.6p3-24.el6.x86_64

インストールされているようです。

/etc/sudoersにsudoを利用できるユーザーを追加します。

sudoersに設定されていないユーザーは、sudoでスイッチしようとすると…

[test@web ~]$ sudo su –
[sudo] password for test:
test は sudoers ファイル内にありません。この事象は記録・報告されます。

怒られてしまいます。

root権限がないと見ることができないファイルを開こうとするとこのように表示されます。

[test@web ~]$ sudo cat /var/log/messages
[sudo] password for test:
test は sudoers ファイル内にありません。この事象は記録・報告されます。

では、設定していきます。

この設定を行う際は必ず/usr/sbin/visudoコマンドで編集します。
-fオプションを付けファイル名を指定します。

[root@web ~]# visudo -f /etc/sudoers
——————————————————
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
test    ALL=(ALL)       /bin/su
——————————————————
↑のように一般ユーザー「test」を追加します。

ここで切り替わるユーザーや、使うことができるコマンドを指定することができます。

上記の構文は、
「testユーザーは、すべてのユーザーになることができ、suコマンドのみ実行できる」
という意味になります。

設定が完了したので、上書き保存をしてスイッチできるか確認してみます。
ここで要求されるのは、rootのパスワードではなく、一般ユーザーのパスワードになります。

[test@web ~]$ sudo su –
[sudo] password for test:
[root@web ~]#

rootにスイッチすることができました。

ですが、設定前と同じように、sudoでcatを実行しようとすると…

[test@web ~]$ sudo cat /var/log/messages
[sudo] password for test:
ユーザー test は’/bin/cat /var/log/messages’ を root として web 上で実行することは許可されていません。すみません。

suコマンドの実行しか許可していないので、rootとしてcatコマンドを実行することができませんでした。

sudoの設定をするうえで、いろいろと検索してみたのですが、奥が深いです。

また、冒頭にも書きましたが、
sudoの設定をするのはどうしてもroot権限が必要な場合に使用してください。
扱いには注意が必要なコマンドです。

今回はこれで失礼します。

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください