cap_setfcap 함수가 포함된 파일(prog라고 부르겠습니다)이 있습니다. 이것을 사용하여 prog(파일 자체)에 전체 기능을 부여할 수 있습니까? 권장되지 않는다는 것을 알고 있습니다. 수행할 수 있는지 알고 싶었습니다.
편집: 명확히 하기 위해: 시스템에 있는 모든 기능(모든 세트)을 prog에 부여하고 싶습니다. 나는 파일이 그 자체로 완전한 "파일 기능"을 부여할 수 있다는 것을 알고 있습니다. 문제는 그 파일이 자신에게도 완전한 "런타임 기능"을 부여할 수 있느냐는 것입니다.
당신의 도움을 주셔서 감사합니다!
답변1
예.
파일 기능을 모든 항목에 부여하려고 하지만 온전성 검사나 특정 형태의 인증을 수행하는 코드를 포함하지 않는 프로그램을 작성하는 경우 가능합니다. (프로그래머는 다양한 작업을 수행하는 코드를 작성할 수 있습니다.)
실제로는 /sbin/setcap
다음과 같은 프로그램입니다.
$ cp /sbin/setcap ./easycap
$ chmod go-rwx ./easycap
$ sudo ./easycap cap_setfcap=p ./easycap
$ ./easycap =ep ./easycap
$ /sbin/getcap ./easycap
easycap =ep
setuid-root
동일한 작업을 수행할 수 있는 프로그램과 달리 chmod go-rwx ./easycap
이 강력한 바이너리는 사용자에게만 제한됩니다 whoami
.
프로그램에 해당 기능을 부여하려면 cap_setfcap
프로그램이 어딘가에서 해당 기능을 가져와야 합니다. 이 경우 sudo
사용자는 쓸 수 있는 모든 바이너리에 파일 기능을 제공하기 위해 이 바이너리 권한을 부여합니다.
즉, sudo
발신자는 전체 배열이 좋은 생각이라고 생각합니다. 이러한 방식으로 또는 단일 사용자 시스템에서는 이것이 남용될 수 있는 모든 방법을 알고 있는 관리자에게 매우 편리할 수 있습니다. 다른 가능성이 높은 시나리오에서는 이는 좋은 생각이 아닐 수도 있습니다.