Na página sudoers(5)
man:
Note that the following characters must be escaped with a '\' if they are used in command arguments: ',', ':', '=', '\'.
Eu tenho um número de usuários de uma máquina desktop, cada um com uma pasta em um servidor samba remoto. Estou tentando configurar a instalação por usuário dessas pastas de rede seguindo as instruções aqui:
Esse artigo recomenda adicionar a seguinte linha aos sudoers:
user ALL= NOPASSWD: /bin/mount -t cifs -o cred=/home/user/.Music.cred //server/music /home/user/MyMusicFolder
Esse comando funciona bem, mas eu preciso montar os compartilhamentos para que eles sejam de propriedade de um grupo específico. Eu tentei mudar a linha para ler assim:
user ALL= NOPASSWD: /bin/mount -t cifs -o cred=/home/user/.Music.cred,gid=xxx //server/music /home/user/MyMusicFolder
Mas com a adição do arquivo gid = xxx, o arquivo sudoers não é mais analisado corretamente. Suponho que isso ocorra porque o comando NOPASSWD, na verdade, recebe uma lista de argumentos separados por vírgula, portanto, preciso escapar da vírgula no comando. Eu posso fazer isso usando uma barra invertida, assim:
user ALL= NOPASSWD: /bin/mount -t cifs -o cred=/home/user/.Music.cred\,gid=xxx //server/music /home/user/MyMusicFolder
Agora o arquivo sudoers será analisado e eu posso executar o comando mount com o sudo sem que seja solicitada uma senha. Infelizmente, agora recebo este erro:
Sorry, user is not allowed to execute '/bin/ls /home/' as root on ubuntu.
quando tento executar qualquer outro comando. Eu não recebo este erro se eu remover o \,gid=xxx
da linha. Então, qual é o caminho certo para escapar de vírgulas no arquivo sudoers?