쉼표가 포함된 명령에 대한 비밀번호 없는 sudo

쉼표가 포함된 명령에 대한 비밀번호 없는 sudo

저는 데스크톱 컴퓨터 사용자가 많으며 각 사용자는 원격 삼바 서버에 폴더를 가지고 있습니다. 여기에 설명된 대로 이러한 네트워크 폴더의 사용자별 설치를 설정하려고 합니다.

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)매뉴얼 페이지 에서 :

명령 인수에 사용되는 경우 ",", ":", "=", "\" 문자는 "\"로 이스케이프해야 합니다.

관련 정보