내가 아는 한, 파일에는 소유자 권한, 그룹 권한, 기타 사용자 권한이라는 세 가지 권한 집합이 있습니다. 또한 파일은 소유자 및 그룹에 할당됩니다.
Linux는 이 모든 정보를 어떻게 결합하여 파일에 대한 특정 사용자의 권한을 실제로 결정합니까?
예를 들어 파일이 다음과 같다고 가정합니다.
---읽고 쓰기---x
즉, 소유자는 권한이 없고 그룹은 읽기/쓰기가 가능하며 다른 그룹은 실행만 가능합니다.
이제 "Joe"라는 사용자가 이 파일을 방문합니다. Joe가 속한 그룹과 Joe가 파일의 소유자인지 여부에 따라 Joe는 이 파일로 무엇을 할 수 있습니까? 파일 x
은 모든 사람을 위해 설정되어 있으므로 파일을 실행할 수 있습니다 . 그러나 "Joe"가 소유자인 경우 x
소유자가 금지합니다. 무엇이 우선인가?
답변1
Linux 권한은 상호 배타적입니다. 따라서 소유자 권한은 소유자에게만 적용되고, 그룹 권한은 소유자를 제외한 그룹의 모든 사람에게 적용되며, 다른 권한은 그룹과 소유자가 아닌 다른 사람에게 적용됩니다. 파일에 액세스하려는 프로세스의 UID 및 GID에 따라 이러한 권한 중 하나만 사용됩니다.
귀하의 경우 Joe가 파일의 소유자라면 그는 자신이 속한 그룹에 관계없이 어떤 작업도 수행할 수 없습니다.
Joe가 소유자는 아니지만 그룹에 속한 경우 읽기 및 쓰기는 가능하지만 실행할 수는 없습니다.
Joe는 소유자도 그룹의 일부도 아닌 경우에만 실행할 수 있습니다.
답변2
위의 Dmitry Grigoryev의 답변이 정확합니다. 니모닉으로서 일반적으로 "왼쪽이 더 넓은" 권한이 표시되는 이유는 다음과 같습니다.너≥G≥오. 공통 모드는 755, 644 및 600입니다. 예를 들어 소유자를 거부하고 그룹을 허용하는 것은 드문 일입니다. 나는 당신의 061이 실제로 사용되는 것을 본 적이 없다고 확신합니다.
답변3
알고리즘은 다음과 같습니다.
- 파일의 소유자인 경우 소유자 권한이 적용됩니다.
- 그렇지 않고 파일이 속한 그룹에 속해 있으면 그룹 권한이 적용됩니다.
- 그렇지 않고 파일 시스템에 ACL이 활성화되어 있고 사용자를 언급하는 ACL 항목이 있는 경우 해당 항목이 적용됩니다.
- 그렇지 않으면 "기타" 권한이 적용됩니다.
귀하의 예에서 Joe가 파일의 소유자라면 그는 아무것도 할 수 없습니다. 파일이 Joe의 그룹에 속해 있으면 Joe는 읽거나 쓸 수 있지만 실행할 수는 없습니다. 둘 다 사실이 아니면 Joe는 실행할 수는 있지만 읽거나 쓸 수는 없습니다.