こんにちは
「サーバ管理を任せたいsudo権限とか持ったユーザ追加を追加した」かったです。
「じゃあsudo
グループに追加すればいいじゃん」って話なんですが、ディストリビューションの種類とか、入っているミドルウェアの種類とかで「だいたい自分が管理していることをやってもらいたいな」っていう場合にグループを指定するのが面倒でした。
例えばウェブ系のサーバだと下記のようにwheel
以外にもmysql
やnginx
、kusanagi
(ウェブサーバだとKUSANAGI最高です!)といったグループに追加してあげたいです。
$ id
uid=1002(yousan) gid=1002(yousan) groups=1002(yousan),0(root),4(adm),10(wheel),48(apache),991(mysql),992(nginx),1001(kusanagi)
自分と同じユーザに追加させる
@sak39 くんに自分と同じグループに所属させる場合。
(ただし自分ユーザ名と同じグループを除く)
$ groups | tr ' ' '\n' | grep -v `whoami` | xargs -I{} sudo usermod -aG {} sak39
結果です。
$ id sak39
uid=1008(sak39) gid=1008(sak39) groups=1008(sak39),0(root),4(adm),10(wheel),48(apache),992(nginx),991(mysql),1001(kusanagi)
うまくいってますね。
コマンド | 意味 |
---|---|
groups | 所属グループをスペース区切りで表示 |
tr | 文字の置換 |
grep -v whoami
|
自分自身のユーザグループを除く |
xargs -I{} | 行ごとに動作させる |
usermod -aG | グループに追加 |
変数化
対象ユーザ名が後ろに来ているので、前に変数で取ったほうが使いやすいかもです。
$ USER=sak39 groups | tr ' ' '\n' | grep -v `whoami` | sudo xargs -I{} usermod -aG {} ${USER}
これで今まで面倒だった、「存在しないグループ」に追加しようとするとエラーになっちゃうのが解消されますね。
$ sudo usermod -aG apache,http someuser
usermod: group 'http' does not exist
快適なサーバライフを送っていきます。
参考