기본적으로 나는 응용 프로그램 서버를 가지고 있으며 응용 프로그램의 소유자/관리자가 응용 프로그램과 관련된 디렉터리에서 sudo 명령을 실행할 수 있도록 허용하고 싶습니다. 예를 들어 애플리케이션 디렉터리가 /opt/my-application인 경우 사용자는 "sudo vim /opt/my-application/some-file"을 실행할 필요가 없고 대신 "sudo vim /var/some-file"을 실행합니다.
올바른 접근 방식은 응용 프로그램 디렉터리에서 자주 사용하는 명령을 결정하는 것이라고 생각합니다. 하지만 이렇게 하면 시스템에서 여전히 너무 많은 권한을 부여하게 될 것 같습니다.
편집 9/11: 답변 중 일부를 보면 내 질문이 명확해질 것이라고 생각했습니다. 이 시점에서 사용자는 sudo 액세스 권한을 갖습니다. 나는 그들이 필요한 작업을 수행하기 위해 sudo 액세스 권한을 갖는 것에 반대하지 않습니다. 정기적으로 수정하는 특정 디렉터리에서 더 쉽게 작업할 수 있도록 구현할 수 있는 잠재적인 솔루션이 궁금합니다. 이러한 특정 디렉터리에서 실행되는 모든 명령에 대해 비밀번호 없는 sudo를 활성화할 수 있었으면 좋겠습니다. 지금까지의 답변은 애플리케이션을 관리할 수 있는 systemctl과 같이 필요한 일부 시스템 명령에 대해 비밀번호 없는 sudo를 구현하는 데 도움이 되었습니다.
답변1
sudoers 파일에서:
user ALL=(root) NOPASSWD: /usr/bin/vim /opt/my-application/some-file
이 줄에서는 특정 명령만 실행할 수 있습니다.
하지만 디렉토리(chmod 또는 setfacl)의 권한은 변경할 수 없습니까? 아니면 기본 umask 값을 변경하시겠습니까?
답변2
파일 액세스의 경우 올바른 접근 방식은 파일에 대한 액세스를 허용하도록 권한을 설정하는 것입니다. 필요한 경우 크론 작업을 설정하여 새로 생성/수정된 파일의 권한과 소유권을 소급하여 적용합니다.
특정 요구 사항(Apache/NginX를 다시 시작해야 할 수 있음)의 경우 자신을 호출 sudo
하고 엄격한 제어 하에 적절한 명령을 실행하는 셸 래퍼 스크립트를 작성하세요.