コンマを含むコマンドのパスワードなしのsudo

コンマを含むコマンドのパスワードなしのsudo

私はデスクトップコンピュータのユーザーが多く、各ユーザーはリモートのSambaサーバーにフォルダを持っています。ここで説明されているように、これらのネットワークフォルダのユーザー固有のインストールを設定しようとしています。

https://askubuntu.com/questions/67405/auto-mounting-network-shares-per-user

この記事では、sudoersに次の行を追加することをお勧めします。

user ALL= NOPASSWD: /bin/mount -t cifs -o cred=/home/user/.Music.cred //server/music /home/user/MyMusicFolder

コマンドは正常に機能しますが、特定のグループが所有するように共有をマウントする必要があります。私は次のように行を変更してみました。

user ALL= NOPASSWD: /bin/mount -t cifs -o cred=/home/user/.Music.cred,gid=xxx //server/music /home/user/MyMusicFolder

ただし、gid = xxxを追加した後、sudoersファイルは正しく解析されなくなります。これは、NOPASSWDコマンドが実際にはコンマで区切られたパラメータのリストを使用しているためと思われるため、コマンドからコンマをエスケープする必要があります。次のようにバックスラッシュを使用してこれを実行できます。

user ALL= NOPASSWD: /bin/mount -t cifs -o cred=/home/user/.Music.cred\,gid=xxx //server/music /home/user/MyMusicFolder

sudoersファイルが解析され、パスワードを入力しなくてもsudoを使用してmountコマンドを実行できるようになりました。残念ながら、次のエラーが発生します。

Sorry, user is not allowed to execute '/bin/ls /home/' as root on ubuntu.

別のコマンドを実行しようとしたとき。\,gid=xxx行から削除すると、このエラーは発生しません。もしそうなら、sudoersファイルからコンマをエスケープする正しい方法は何ですか?

答え1

sudoers(5)マニュアルページから:

コマンド引数に使用される場合、「、」、「:」、「=」、および「\」文字は「\」にエスケープする必要があります。

関連情報