리눅스 파일 권한이 너무 복잡하다고 느끼시나요? 사용자, 그룹, 파일 권한, 기본 권한, 숨겨진 속성, ACL, 왜 지금은 특별한 권한이 있나요? 3초간 머리가 아쉬워요~.
파일을 살펴보자
ls /usr/bin/passwd -l -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
아니, 왜 이상한 것이 나타났나요? 이는 파일 소유자의 x 위에 나타나며 Set UID, 줄여서 SUID라고 합니다. 자신이 속한 그룹의 x 위에 나타나면 SGID를 의미합니다. 다른 사람의 x 위에 있으면 끈적하다는 뜻입니다.
다음은 각 특별 권한의 사용을 설명하는 표입니다.
File | Directory | |
SUID | 이 사용자는 이 프로그램의 소유자 권한을 상속받습니다. | 의미 없음 |
SGID | 이 사용자는 이 프로그램의 그룹 권한을 상속받습니다. | 이 디렉터리에서 사용자가 만든 모든 새 파일은 자동으로 이 디렉터리의 사용자 그룹을 상속합니다. |
Sticky | 의미 없음 | 각 사용자 디렉토리는 자신의 파일이나 디렉토리만 삭제, 이동 또는 이름을 바꿀 수 있습니다. |
다음으로 /usr/bin/passwd 파일을 사용하여 SUID의 목적을 설명합니다.
우리는 Linux에서 각 사용자가 자신의 비밀번호를 변경할 수 있고 루트는 모든 사용자의 비밀번호를 변경할 수 있다는 것을 알고 있습니다. 왜 일반 사용자도 비밀번호를 변경할 수 있는지 생각해 본 적이 있나요? /etc/shadow 파일에 비밀번호가 저장되어 있지 않나요? 이 파일은 일반 사용자에게는 쓰기 권한이 없습니다.
# ls -l /etc/shadow ---------- 1 root root 969 Sep 10 09:37 /etc/shadow
이것이 SUID의 목적입니다. 일반 사용자는 passwd 명령을 통해 비밀번호를 변경할 수 있습니다. 실행 중에 사용자는 일시적으로 파일 소유자인 루트 권한을 가지게 되므로 일반 사용자가 비밀번호를 변경할 수 있습니다. 파일의 특수 권한이 SGID인 경우 실행 중에 파일이 속한 그룹의 권한을 갖게 됩니다.
파일 외에도 SGID는 디렉터리에서도 사용할 수 있습니다. 파일과 디렉터리의 기능은 완전히 다릅니다. 우리는 디렉터리에 대한 SGID의 역할을 설명하기 위해 시나리오를 사용합니다.
아래에서는 시나리오를 시뮬레이션합니다. 회사는 이제 프로젝트를 개발해야 하고 프로토타입 도면이 제공되었으며 설계를 위해 설계 부서에 전달되어야 합니다. 이제 project1_ps 디렉터리를 만듭니다. 디자인 부서의 모든 직원은 이 디렉터리의 파일에 대해 rwx 권한을 갖습니다.
우리는 Linux에서 새 파일이나 디렉터리가 생성되면 소유자가 자신이고 그것이 속한 그룹이 자신이 속한 그룹이라는 것을 알고 있습니다. 이러한 방식으로 디자이너 a가 새 파일을 생성하면 다른 사용자가 이 파일에 대해 다른 사람의 권한을 갖게 되며 이는 우리의 요구 사항을 충족하지 않습니다. 따라서 요구 사항을 완료하려면 SGID가 필요합니다.
# groupadd design #创建design用户组 # useradd -G design --no-create-home dgn1 # 创建用户 # useradd -G design --no-create-home dgn2 # 创建用户 # id dgn1 uid=1003(dgn1) gid=1004(dgn1) 组=1004(dgn1),1003(design) # id dgn2 uid=1004(dgn2) gid=1005(dgn2) 组=1005(dgn2),1003(design) # mkdir design # 工作目录 # chgrp design design/ # chmod 2770 design/ <== 如果是SUID则是4770 # ll -d design/ drwxrws--- 2 root design 4096 5月 5 19:06 design/ # su dgn1 $ umask 0022 $ umask 0002 $ touch design/1.ps $ ls design -l 总用量 0 -rw-rw-r-- 1 dgn1 design 0 5月 5 19:31 1.ps <=== 新创建的文件默认组为design了
드디어 Sticky에 왔습니다. 이는 이해하기 매우 쉽습니다. 디렉터리의 각 사용자는 자신의 파일이나 디렉터리를 삭제, 이동하거나 이름을 바꿀 수만 있습니다. 실제로 /tmp 디렉토리는 이 특수 권한을 사용합니다.
아아아아위 내용은 Linux 시스템의 파일에 대한 특별 권한의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!