VineLinuxパフォーマンスアッププロジェクト:0119
■別のユーザでコマンドを実行する方法■
通常コマンドを実行する場合、ログインユーザ・rootユーザ・登録されているユーザのどれかで行うことが多いと思います。そんな時にログインユーザのままで違うユーザ権限としてコマンドを実行できると便利ですよね。今回はそれを実現してくれるコマンドを紹介します。
sudoコマンドは別のユーザでコマンドを実行できる環境を提供してくれます。例えばログインユーザのままsnortユーザ権限としてコマンドpsqlを実行したい場合、
sudo -u snort psql
のようにターミナル上で入力します。ここでのオプション"-u"はユーザ指定をする際に必要なものです。
ただし実行できるコマンドはユーザによって変わってきます。当たり前ですが、一般ユーザがrootユーザ権限のコマンドをそのままでは実行できるわけがありません。その際にはちゃんとログインユーザ(上の場合rootユーザ)のパスワードを聞いてきますので入力してください(上のオプション"-u"をつけるとrootユーザ権限での実行はできません)。
sudoコマンドについてはこの他にも様々なオプションが指定可能です。オンラインマニュアル等を参考にしてください。
※以下から2006/11/24追記
sudoの場合、/etc/sudoersというファイルに権利が書かれていないユーザはsudoを使用することができないことが判明しました。デフォルトで/etc/sudoersを開くと以下のようになっていると思います。
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
# Runas alias specification
# User privilege specification
root ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
ここにはrootユーザの設定が記述されているため、rootユーザはすべてのユーザのすべてのコマンドを実行することができるようになっています。
例えばユーザabcが、ユーザefg権限で実行できるすべてのコマンドを使えるようにするには"root ALL=(ALL) ALL"の下に
abc ALL=(efg) ALL
と記述を追加します。
各フィールドは以下のような意味をもちます。
ユーザ名 ●=(▼) ◆
・ユーザ名:sudoするためのユーザ名を記述します
・●=:ホストへの許可(通常ALLにしておけばよいみたいです。)
・(▼):sudoされるユーザ名(ALLにしておけば全ユーザが対象となります。)
・◆:利用できるコマンドの制限記述(ALLにするとすべてのコマンドが利用できます。)
★掲示板にて情報提供をしてくださったanmochiさん、ありがとうございました!