답변:
를 사용하는 대신 sudo
파일에서 ACL을 설정하십시오.
$ ls -l /var/tmp/foo
-rw-rw---- 1 root root 4 Jul 31 15:26 /var/tmp/foo
$ sudo setfacl -m u:white:rw /var/tmp/foo
$ whoami
white
$ cat /var/tmp/foo
bar
이제 파일은 'root'가 소유하지만 'white'사용자는 파일을 읽고 쓸 수 있습니다. 사용자 'white'은 이제 자신이 좋아하는 편집기를 사용하여 파일을 편집 할 수 있습니다.
setfacl: /etc/logrotate.conf: Operation not supported
정적 IP로 올바른 파일을 작성하는 스크립트와 같이 원하는 편집을 수행하는 스크립트를 준비하십시오 (이 스크립트에 넣는 내용은이 Q & A의 범위를 벗어남). 이 스크립트를 호출 해 봅시다 /root/set_static_ip
. (1)
편집 /etc/sudoers
(2) ( visudo
더 나은, 온전함을 확인 하고, 잘못된 sudoers 파일을 가진 시스템을 복구하는 것은 매우 어렵고 심지어 원격 (3)에서는 불가능 합니다)
user_name_to_authorize ALL=NOPASSWD: /root/set_static_ip
이제 사용자는 sudo /root/set_static_ip
비밀번호를 요구하지 않고 사용할 수 있으며 스크립트는 모든 권한으로 실행됩니다. 다른 명령은 허용되지 않습니다.
당신은 단지 그들이 원하는 무엇이든을 가진 파일을 대체하기 위해 사용자가 원하는 경우, 스크립트는 단순히 (호출 될 수 있습니다 /root/unsafe-overwrite-interface
)
#! /bin/bash -e
#
cp /tmp/temp-iface.txt /etc/network/interfaces
exit 0
... 그리고 사용자에게 위에서 지정한대로 sudoers에서 편집 /tmp/temp-iface.txt
하고 실행하도록 sudo /root/unsafe-overwrite-interface
--- 명령합니다. 또는 사용자를 ACL 목록에 추가하고 특정 파일에 대한 쓰기 권한을 부여 할 수 있습니다 .
그러나 파일 내용의 안전성을 검사하지 않으면 의도적이든 의도하지 않든 혼란 이 발생할 수 있습니다.
(1)이 스크립트는 가능한 안전해야합니다. 입력 등을 확인하십시오. 모든 권한으로 실행됩니다.
(2) 최신 sudo 설치에서 /etc/sudoers.d/
디렉토리에 파일을 추가하면 더 나은 --- 업데이트 후에도 살아남을 수 있습니다.
(3) 일반적으로 sudo -i
sudoers 메커니즘을 수정할 때 루트 세션이 열린 터미널을 열어두고 ( ) 백업을 편리하게합니다.
/etc/network/interfaces
파일을 무엇이든 다시 작성합니다 /root/set_static_ip
. 사용자에게 IP 주소, 게이트웨이 등을 입력하도록 요청하는 스크립트를 만들 수 없다면 ... 이것만으로는 충분하지 않습니다.
/etc/sudoers
는 visudo
그렇지 않습니다 sudoedit
.
/var/tmp/foo
=/etc/network/interfaces
? 당신이 거기에서 말하는 것을 실제로 본 적이 없습니다. 저는 Linux를 처음 접했습니다.