Linux에서 프로그램을 작성하는 경우 프로그램 실행 권한을 구성하는 두 가지 방법이 있습니다.
- 호출자의 권한으로 실행될 수 있습니다(누가 프로그램을 실행하든 관계 없음).
- 내 권한에 따라 실행되도록 setuid를 사용할 수 있습니다.
Linux에서 실행되도록 프로그램의 권한을 구성하는 다른 옵션이 있습니까?
답변1
개별 Linux 권한을 "기능"이라고 합니다. 기능에 대한 전체 설명이 너무 많을 수 있지만 언급한 두 가지 옵션 대신 권한이 없는 사용자에게 관리 권한을 제공하는 파일 기반 기능을 설정할 수 있습니다.
[root@localhost]/home# setcap cap_chown+ep /bin/chown
[root@localhost]/home# sudo -iu testUser
[testUser@localhost ~]$ ll /etc/rc.local
-rwxr--r--. 1 root root 0 Jan 27 22:29 /etc/rc.local
[testUser@localhost ~]$ chown testUser /etc/rc.local
[testUser@localhost ~]$ ll /etc/rc.local
-rwxr--r--. 1 testUser root 0 Jan 27 22:29 /etc/rc.local
[testUser@localhost ~]$
위에서 볼 수 있듯이 chown
I run 덕분에 이 시스템에서 실행하는 모든 사람은 이 작업을 수행하는 데 필요한 권한("CAP_CHOWN")을 갖게 됩니다 setcap
. an에서 +ep
an으로 변경 하고 로그인 시 특정 사용자에게만 권한을 부여하면 +ei
더 많은 선택성을 얻을 수 있습니다.pam_cap.so
chown
위의 코드는 루트로 실행되지 않고 권한이 없는 사용자로 실행된다는 점에 유의해야 합니다 . 사용자가 이 프로그램 이외의 다른 프로그램을 실행하면 이 권한이 부여되지 않으며 실행 파일이 수정되면 모든 파일 기반 기능이 지워집니다.
답변2
명시적인 권한 할당이 없으면 프로그램이나 스크립트가 호출자로 실행됩니다.
Setuid는 파일 소유자의 사용자 권한으로 프로그램을 실행합니다. Setgid는 파일 그룹의 그룹 권한으로 프로그램을 실행합니다. 둘 다 스크립트에서 직접 사용할 수 없습니다.
sudo
sudo 구성 파일에서 결정한 권한으로 프로그램(또는 스크립트) 실행 과 같은 유틸리티를 사용할 수 있습니다 .
나는 SELinux와 같은 보안 하위 시스템이 액세스를 허용하기보다는 제한한다고 생각합니다.
ACL을 사용하여 런타임 권한을 부여할 수 있는지 모르겠습니다. 조사할 필요도 없었어요.