2013-03-17

[sudo] 任意の UID と GID を指定してコマンドを実行する

オプション -u, -g を接頭辞 # を付けて使うと passwd に存在しない任意の UID, GID を設定してコマンドを実行できますが、なぜかデフォルトでは -g が上手く動きません。

$ sudo -u#123 id
uid=123 gid=0(root) groups=0(root)

$ sudo -u#123 -g#456 id
Sorry, user USERNAME is not allowed to execute '/usr/bin/id' as #123:#456 on SOMEHOST.

/etc/sudoers の許可エントリを以下のように任意の GID を指定できるように少し直す必要があります。

$ sudo visudo

# admin ALL=(ALL) ALL
admin ALL=(ALL:ALL) ALL

この設定を行うと上手く動きます。

$ sudo -u#123 -g#456 id
uid=123 gid=456 groups=456

参考
man sudoers