사용자가 일반적으로 루트로 제한된 특정 시스템 파일을 편집하도록하려면 어떻게해야합니까?


8

/etc/network/interfaces루트 권한이없는 사용자 에게 쓰려고합니다 .

이것에 쓰려는 이유는 명령 줄 전용 서버를 실행 중이므로 사용자가 고정 IP를 설정할 수 있기 때문입니다. 사용자에게 어떤 권한을 부여해야 etc/sudoers합니까?

사용자가 전체 루트 권한을 갖기를 원하지 않습니다. 이 파일을 편집하는 기능 만 있습니다.

답변:


25

를 사용하는 대신 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'은 이제 자신이 좋아하는 편집기를 사용하여 파일을 편집 할 수 있습니다.


조금 혼란 스러웠다. 인가 /var/tmp/foo= /etc/network/interfaces? 당신이 거기에서 말하는 것을 실제로 본 적이 없습니다. 저는 Linux를 처음 접했습니다.
Keith

파일 일뿐입니다. 원하는 파일을 모두 사용할 수 있습니다.
Jeff White

1
좋은. ACL은 권한을 제한하고 권한을 부여하지 않는 데에만 사용할 수 있다고 생각했습니다. 사실이 아님을 알게되어 기쁩니다!
Rmano

WSL에서 지원되지 않는 것 같습니다 :setfacl: /etc/logrotate.conf: Operation not supported
mpen

8

정적 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 -isudoers 메커니즘을 수정할 때 루트 세션이 열린 터미널을 열어두고 ( ) 백업을 편리하게합니다.


이것에 대한 유일한 문제는 요청시 고정 IP 설정을 변경해야한다는 것입니다. 당신이 권장하는 스크립트에 대한 나의 이해는 기본적으로 /etc/network/interfaces파일을 무엇이든 다시 작성합니다 /root/set_static_ip. 사용자에게 IP 주소, 게이트웨이 등을 입력하도록 요청하는 스크립트를 만들 수 없다면 ... 이것만으로는 충분하지 않습니다.
Keith

매개 변수를 허용하는 스크립트를 작성할 수 있습니다. 그러나 가장 안전한 방법입니다. 사용자가 파일을 맹목적으로 편집하게하면 오류가 발생하면 어떻게됩니까? 서버를 손이 닿지 않는 곳에 보관할 수 있습니다. 따라서 스크립트는 매개 변수를 요구할뿐만 아니라 안전한지 확인해야합니다.
Rmano

3
에 관해서 /etc/sudoersvisudo그렇지 않습니다 sudoedit.
saiarcot895

누군가 이런 종류의 질문을하고 있다면 아마도 안전한 배쉬 스크립트를 작성하는 것이 기술을 넘어선 것입니다. bash 스크립트를 root로 설정할 수없는 이유가 있습니다.
rox0r
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.