⚙️
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!
Discussion