사용자가 자신에게 속하지 않은 디렉터리에 ACL을 설정하도록 하려면 어떻게 해야 합니까?

사용자가 자신에게 속하지 않은 디렉터리에 ACL을 설정하도록 하려면 어떻게 해야 합니까?

저는 Linux 시스템에 모두 770/root:root(perms/owner:group)의 저장소 디렉터리 세트를 갖고 있으며 ACL을 사용하여 사용자 액세스를 관리합니다. (그룹이 LDAP를 통해 관리되는 네트워크를 통해 디렉토리가 공유되고 관리자가 아니기 때문에 유닉스 그룹을 사용할 수 없습니다.)

각 디렉터리에 대해 한 명의 사용자는 ACL을 통해 전체 rwx 액세스 권한을 갖고, 다른 모든 사용자는 ACL을 통해 rx 액세스 권한을 갖습니다.

현재는 사용자 추가/제거 요청에 수동으로 응답해야 하며, 이 기능을 "rwx" 사용자에게 전달하여 그들이 소유한 디렉터리를 가져오고 싶습니다(저는 원래 게으른 시스템 관리자이기 때문입니다).

내가 생각할 수 있는 가장 좋은 해결책은 주어진 디렉터리에서 호출 사용자의 "rwx" ACL 상태를 확인하고 아래와 같이 "rx" ACL 사용자를 추가/제거할 수 있도록 허용하는 루트 setuid를 사용하여 스크립트/프로그램을 만드는 것입니다.

$ modify_acls.sh [--remove] [--add] <my_directory> <other_user>

더 쉬운 방법이 있습니까, 아니면 위의 해결 방법이 어떤 이유로 작동하지 않습니까?

답변1

setuid 쉘 스크립트 대신 특정 스크립트를 활성화하는 것을 고려하십시오 sudo.

이 방법이 가장 일반적으로 사용되지만 sudo"누군가가 루트로 모든 프로그램을 실행하도록 허용하는 것"에만 국한되지는 않습니다. 자세한 내용은 에서 쉽게 수행할 수 있습니다 /etc/sudoers.man sudoers

sudo보안상의 이유로 setuid 스크립트가 완전히 비활성화된 시스템에서는 두 번째 대안이 작동하지 않는다는 점을 제외하고는 setuid 스크립트를 대신 사용하는 데 실질적인 이점이 없습니다 . 사용자 정의 setuid 바이너리를 작성할 수도 있지만 sudoers사용자를 추가하거나 제거하려는 경우 줄을 삽입하여 변경하는 것이 더 간단하고 빠르며 쉽습니다.

답변2

setuid 쉘 스크립트는 일반적으로 Linux에서 지원되지 않으므로 쉘 스크립트를 사용하면 작동하지 않을 수 있습니다.

해결책은 필요한 기능을 제공하고 실행 파일의 uid 루트를 설정하는 작은 실행 파일을 C로 작성하는 것입니다.

관련 정보