특정 사용자에게만 setuid를 적용할 수 있나요?

특정 사용자에게만 setuid를 적용할 수 있나요?

내가 이해한 바로는 setuid 비트는 파일을 실행할 수 있는 모든 사용자가 파일의 소유자로서 해당 파일을 실행한다는 것을 의미합니다. ACL 등을 사용하여 선택된 사용자 목록만 파일을 소유자로 실행하고 다른 모든 사용자는 파일을 스스로 실행하도록 하는 것이 가능합니까?

sudo아니면 (or)를 사용해야 할까요 sudo?su

답변1

한 사용자가 파일을 실행하면 setuid가 실행될 수 없지만, 다른 사용자가 파일을 실행하면 setuid 없이 실행되는 것은 불가능합니다. setuid 비트는 액세스 제어 목록에 포함되지 않습니다. 파일의 경우 열려 있거나 닫혀 있습니다.

부분적으로 목표를 달성할 수 있습니다. 특정 사용자만 setuid 파일을 실행하도록 허용할 수 있지만 다른 사용자는 실행이 완전히 차단됩니다.

예를 들어 가상의 "privileged_command" 프로그램을 생각해 보세요. setuid로 설정하고 adm 그룹의 구성원만 acl을 통해 실행할 수 있도록 허용하려면 다음 방법으로 수행할 수 있습니다.

$ chown root.root privileged_command
$ chmod 4000 privileged_command
$ ls -l privileged_command
---S------ 1 root root 152104 Nov 17 21:15 privileged_command
$ setfacl -m g:adm:rx privileged_command

이는 그룹 권한만 필요한 매우 간단한 예입니다. 그러나 계속해서 setfacl을 사용하여 프로그램을 실행할 수 있거나 실행할 수 없는 복잡한 사용자/그룹 집합을 만들 수 있습니다. 유일한 문제는 명령을 실행할 수 있는 모든 사람이 해당 명령을 setuid로 실행한다는 것입니다. 다른 사람은 거부되고 전혀 실행할 수 없습니다.

이것은 귀하가 실제로 요구하는 것과 제가 생각할 수 있는 가장 가까운 것입니다. 즉, 귀하가 요구하는 것은 아마도 Bad Idea™일 것입니다. 추가 권한에 대한 모범 사례는 다음 사용자에게 적용됩니다.인정 받은이러한 특권을 행사하다적극적으로권력을 행사할 의도가 있는 경우에만 권력을 취하십시오. 이것이 sudo의 전체 목적입니다. 특정 명령을 실행하는 사람에 따라 다른 권한으로 자동 실행되도록 하면 실수로 오용될 수 있습니다. 이것이 일반적으로 항상 루트로 로그인하지 않는 이유입니다.

또한 이러한 방식으로 ACL을 사용하면 나중에 보안 취약점이 발생할 수 있습니다. ACL은 거의 사용되지 않으며 덜 필요합니다. 이 경우 setuid 프로그램을 실행할 수 있는 사람을 제어하기 위해 이를 사용하면 누가 어떤 권한을 가지고 있는지 즉시 알 수 없으며, 누가 어떤 권한을 가지고 있는지 또는 어떤 파일에 어떤 ACL 조건이 있는지 보여주는 중앙 파일이나 저장소가 없습니다. 이는 곧 행정적인 악몽이 될 수 있습니다.

ACL을 사용할 수 있는 곳이 전혀 없을 것이라고는 말할 수 없지만, 사용하지 않는 손가락이 많은 경우 이것이 좋은 아이디어라는 설득력 있는 사례를 본 횟수는 한 손에 꼽을 수 있습니다.

관련 정보