Linuxで別ユーザとしてコマンドを実行する
投稿日:
環境
Amazon Linux AMI release 2013.03
今更ですがsudoコマンドについて整理しておきたかったので書きました。
まず基本として、rootユーザーとしてコマンドを実行する場合はsudo {コマンド}
を打ちます。
$ sudo id
uid=0(root) gid=0(root) 所属グループ=0(root)
もしrootユーザー以外になり代わるたい場合は-u
オプションで指定します。
$ sudo -u apache id
uid=48(apache) gid=48(apache) 所属グループ=48(apache)
もし特定のユーザーに頻繁になり代わる場合は
.bashrc
などにfunction定義しておくと楽です。
(今回一番書きたかったこと)
# Apacheユーザとしてコマンド実行する
sudoa () {
sudo -u apache $*
}
# Apacheユーザとしてgitコマンドを実行する
agit() {
sudo -u apache git $*
}
こうしておくとagit pull
と打てば
Apacheユーザとしてgit pull
を打つことができます。
また、以下のような簡単なスクリプトも書けます。
hoge() {
sudo -u yamada sh -c '
NAME=`id | grep -o -E "\([^)]+\)" | grep -o -m 1 -E "[^\()]+"`
echo "hello ${NAME}!"
'
}
実行結果は以下のようになります。
$ hoge
hello yamada!