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


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/sudoers는 visudo그렇지 않습니다 sudoedit.
— saiarcot895

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