LoginSignup
1
1

More than 5 years have passed since last update.

[Linux] あるユーザーの権限と同じ権限を別ユーザーに付与する

Last updated at Posted at 2019-02-03

環境

OS: Ubuntu 16.04

背景

新しいユーザー(名前はansible)を作成したのですが、

ふと、、、この新ユーザーの権限は、

「vagrantユーザーと同等の権限を付与したいなー」

という風に思ったわけです。

ということで権限確認するわけですが、

$ id vagrant
uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),115(lpadmin),116(sambashare)

この結果から、group名を1つ1つ取り出して、

$ sudo gpasswd -a ansible adm 

を手打ちで繰り返すの嫌だな、、、 と思い、

正規表現で何とかならないかなー

と考えたのが背景です。

(2019/2/4追記) コメントより抜粋

@angel_p_57 さんのご指摘により 1行のコマンドでまとめられる事を教えていただきました。

以下がスマートで良いです。

$ sudo usermod -a -G $(id -nG vagrant | tr " " ,) ansible

正規表現でなんとかしてみる(当初自分で考えたやり方)

普段、sedをあまり使わないので、手探りですが、

以下のように書いてみました。

$ echo `id vagrant` | sed -e 's/[0-9\(,\ ]//g'| sed -e 's/)/\n/g' > vagrant_group.txt

2回sedを噛ましてますが、

1回目は、数字と左括弧、カンマとスペースを消してます。

2回目は、右括弧を改行に変えてます

最後に、加工した内容を vagrant_group.txt に出力します。

結果

vagrant_group.txtは下記のようになります。

vagrant_group.txt
uid=vagrant
gid=vagrant
groups=vagrant
adm
cdrom
sudo
dip
plugdev
lxd
lpadmin
sambashare

最初の3行もsedで削除すべきですが、コマンドが長くなりそうだったので、やめました。

後は4行目からvagrant_group.txtを読み込んで、group_add するだけです。

$ tail -n +4 vagrant_group.txt | xargs -I {} sudo gpasswd -a ansible {} 

参考

ファイルのn行目以降を表示する

1
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1