![특정 프로그램에만 접근 허용](https://linux55.com/image/185016/%ED%8A%B9%EC%A0%95%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%97%90%EB%A7%8C%20%EC%A0%91%EA%B7%BC%20%ED%97%88%EC%9A%A9.png)
때때로 내가 실행하는 명령은 루트가 소유한 디렉토리에 대한 액세스를 요구합니다. 예를 들어 npm install -g ...
심볼릭 링크가 거기에 배치될 수 있습니다./usr/local/bin
sudo
접촉하는 모든 파일은 루트의 소유가 되기 때문에 명령을 실행하고 싶지 않지만 (예를 들어 sudo touch tmp
질문을 시도한 후 ll
루트 및 루트 그룹의 소유임을 알 수 있음) 여전히 원합니다. 그것을 주기 위해 들어간다/usr/local/bin
현재는 임시로 디렉토리 소유권을 로 변경했다 (whoami)
가 다시 로 변경하고 있습니다 root
.
root
Linux에서 동일한 액세스를 허용하면서 파일을 건드리거나 쓰는 경우 현재 사용자에게 소유권을 부여할 수 있는 방법이 있습니까 ? 예를 들어 명령을 사용하여 idk npm install -g ...
. 또 다른 것이 어디에 idk
있습니까 sudo
?
이 질문은 특정 예제/사용 사례와 관련이 없습니다 /usr/bin/local
. 모든 Linux 사용자가 잘 알고 있듯이 권한 문제가 다시 발생하지 않도록 디렉터리 권한을 영구적으로 변경할 수 있습니다.
문제는 명령별로 이 작업을 수행할 수 있는 능력에 관한 것입니다(예: sudo
명령별로 루트 권한 부여).
Linux 권한 모델은 "사용자 x가 p를 실행할 수 있음"이고 sudo를 사용하면 "사용자 x가 사용자 y처럼 행동하도록 허용"이라고 말할 수 있습니다. 나는 "사용자 x가 y처럼 행동하도록 하되 실제로는 y가 아니라 x라는 사실에 유의하세요"라고 말할 수 있는 방법이 있는지 물었습니다.
답변1
처음에 액세스를 sudo
제공하는 것보다 더 많은 것이 있지만 root
여기서는 관련이 없습니다.
귀하의 문제는 루트와 관련이없는 것 같습니다. 이는 디렉토리에 대한 쓰기 권한을 갖는 것과 관련된 것 같습니다.
ACL을 사용하여 그룹 권한을 추가하고 새 파일이 동일한 그룹 권한을 갖도록 기본값을 추가합니다.
- 이 작업을 위한 그룹 만들기
- 자신을 그룹에 추가합니다(이 단계에서는 로그아웃했다가 다시 로그인하는 것이 가장 쉽지만 이를 방지할 수 있는 방법이 있습니다(
newgrp
혼란을 피하기 위해 프로세스가 소유권을 상속하는 방법을 이해해야 함). - 반복적으로 디렉토리에 그룹 권한 추가
setfacl -R -d -m g:«group»:rwx .
setfacl -R -m g:«group»:rwx .
(메모리에서: 테스트되지 않음)
특정 프로그램에만 접근 허용
위 내용을 다음과 결합합니다 sudo
. 즉, "sudo --group «group" 명령,
또는
프로그램의 set-gid를 사용하십시오(통역된 언어에는 사용할 수 없음).
답변2
이 기능을 독점적으로 사용하는 경우 루트 액세스 없이도 이 작업을 수행 /usr/local
할 수 있으며 이는 root/sudo를 사용하는 것보다 여전히 더 안전합니다. chown -R username /usr/local
대부분의 Linux 배포판에서 이 디렉터리는 어떤 목적으로도 전혀 사용되지 않습니다.
답변3
자신을 포함한 모든 사용자의 검색 경로에 /usr/local/bin
있기 때문에 루트가 소유합니다 . root
속하지 않는 파일을 거기에 넣으면 root
다른 사용자가 해당 파일을 실행하여 심각한 결과를 초래할 수 있습니다.
whatever
in이 소유한 실행 파일이 있고 사용자 계정이 손상된 경우 해당 파일이 교체될 수 있다는 점을 생각해 보십시오 . 그러면 파일은 루트와 시스템의 다른 모든 사용자의 검색 경로에 있게 됩니다.user:user
/usr/local/bin
루트의 소유권이 어떻게 되었는지는 불분명합니다. 당신을 보호하기 위해서입니다.