사용자 "root"와 그룹 "root"가 파일을 소유한다는 것은 무엇을 의미합니까?

사용자 "root"와 그룹 "root"가 파일을 소유한다는 것은 무엇을 의미합니까?

root사용자와 그룹이 소유한 다음 파일이 있다고 가정합니다 root.

-rw-r----- 1 root root 54 2017-12-18 04:21 1.txt

fsuid그리고 a가 이지만 roota가 가 아닌 fsgid다른 그룹인 프로세스가 있다고 가정합니다 root.

파일에 대한 사용자 권한은 소유자 사용자가 파일을 읽고 쓸 수 있지만 파일을 실행할 수는 없음을 의미합니다. 하지만 프로세스에 가 있으므로 파일에 대한 사용자 권한이 프로세스에 적용되지 않으므로 프로세스는 파일을 읽고 쓰고 실행할 수 있을 것이라고 생각 fsuid합니다 root.

이제 a 가 아닌 다른 사용자 인 프로세스가 있다고 가정 fsgid합니다 .rootfsuidroot

파일에 대한 그룹 권한은 소유자 그룹이 파일을 읽을 수는 있지만 파일을 쓰고 실행할 수는 없음을 의미합니다. 이제 이 경우 프로세스는 파일에 대한 전체 액세스 권한을 갖지 않고 파일의 그룹 권한만 프로세스에 적용되는 것 같습니다. 그렇죠?

답변1

규칙은 다음과 같습니다.

  • 사용자가 루트(UID=0)인 경우 전체 액세스 권한을 부여합니다.
  • 사용자가 소유자인 경우 권한에 소유자 삼중항을 사용합니다.
  • 사용자가 소유자는 아니지만 그룹에 속한 경우 권한에 그룹 삼중항을 사용합니다.
  • 사용자가 소유자도 그룹의 구성원도 아닌 경우 권한으로 other-triplet을 사용합니다.

따라서 루트의 경우에는 중요하지 않습니다. 그러나 다른 사용자의 경우에는 가장 구체적인 권한 트리플이 적용됩니다. 따라서 귀하의 예에서 사용자가 그룹의 소유자이자 구성원인 경우 (그룹 삼중주 대신) 소유자 삼중주가 사용됩니다. 따라서 그룹에 읽기 및 쓰기 권한이 모두 부여되었지만 소유자에게는 읽기 권한만 부여된 경우 소유자만 파일을 읽을 수 있습니다. 그룹 구성원인 경우에도 마찬가지입니다.~해야 한다그도 쓰게 해주세요. 그룹의 다른(소유자가 아닌) 구성원은 파일을 읽고 쓸 수 있습니다.

파일 소유자는 필요한 경우 언제든지 자신에게 더 많은 권한을 추가할 수 있습니다. 때로는 프로그램이 이를 수행할 수도 있습니다. 예를 들어 쓰기 금지된 파일이 있는 경우(예: 권한 r--r-----) 일부 편집자는 어쨌든 해당 파일에 쓸 수 있도록 허용합니다(보통 확인 후). 편집기는 사용자와 동일하게 작동하며, 사용자가 파일을 소유하고 권한을 변경할 수 있는 경우 편집기는 쓰기 금지를 제거하고 사용자가 파일을 저장할 수 있도록 허용할 수 있습니다.

+++

이는 루트 사용자가 파일을 소유하고 파일을 읽고 쓸 수 있는 권한을 가지고 있음을 의미합니다. 소유자(루트)는 파일의 권한을 변경할 수도 있습니다. 루트 그룹의 구성원이 읽을 수 있도록 허용합니다. 다른 사용자는 파일을 읽거나 쓰거나 실행할 수 없습니다. (텍스트 파일이기 때문에 실행하는 것이 의미가 없을 수도 있습니다.)

Linux 시스템의 많은 파일에는 루트 사용자가 소유자이고 루트 그룹이 그룹입니다. 전통적으로 다양한 시스템 사용자와 시스템 그룹(예: bin, sys, proc, Operator)은 루트 이외의 많은 파일을 소유합니다. 예를 들어 바이너리 파일(실행 가능 프로그램)은 일반적으로 bin-user 및/또는 bin-group을 소유권으로 갖습니다(예: bin:bin 또는 root:bin).

단, 루트로 실행해야 하는 실행 파일은 예외입니다. 해당 파일은 루트 사용자가 소유해야 합니다. 일반적으로 프로그램은 프로그램을 실행하는 사용자의 허가를 받아 실행됩니다. 명령을 실행하면 해당 명령 ls이 귀하의 권한으로 실행되므로 나열이 허용되지 않은 디렉터리(예: 다른 사용자의 디렉터리)는 표시할 수 없습니다. 반면, 명령이 루트 권한으로 실행되면 전체 시스템에 액세스할 수 있습니다(이것이 대부분의 실행 파일에서 이 작업을 수행하고 싶지 않은 이유입니다).

좋은 예는 passwd비밀번호를 변경할 수 있는 명령입니다. 루트로 실행되며 모든 사용자에게 제공됩니다.제한된 접근사용자 및 비밀번호 데이터베이스를 저장하는 데 사용되는 파일입니다.

rwsr-xr-x 루트:루트 /usr/bin/passwd

s=x+S, 여기서 x는 실행 권한이고 S는 소유자 또는 그룹 삼중항에 대해 설정되었는지 여부에 따라 소유자 또는 그룹으로 실행됩니다.

따라서 루트 사용자는 소유자이며 읽기, 쓰기 및 실행 권한을 갖습니다. root-group은 읽기 및 실행 권한이 있는 그룹입니다. 다른 사용자도 읽기 및 실행 권한을 얻었습니다. 또한 실행 파일은 소유자의 권한으로 실행됩니다. 루트 - 소유자 삼중항(u+s)의 "s" 덕분에 이를 실행하는 사용자의 권한이 없습니다(정상입니다).

이번에는 BSD(UNIX 운영 체제)의 또 다른 예입니다.

rws-x--- 루트:휠 /bin/su

이는 실행 파일이 su항상 소유자(루트)로 실행된다는 의미입니다. 루트 사용자는 이를 읽고, 쓰고, 실행할 수 있습니다. 휠 그룹의 구성원은 이를 실행할 수 있지만 읽을 수는 없습니다(예: 복사). 그리고 다른 사용자는 이를 읽거나 쓰거나 실행할 수 없습니다. (이 명령은 suLinux에도 있지만 여기에서는 모든 사용자가 실행할 수 있지만 여전히 루트로 실행됩니다.)

다른 프로그램도 특정 시스템 사용자(및 그룹)로 실행될 수 있습니다. 예를 들어 apache웹 서버는 종종 www-data-user(및 www-data-group)로 실행됩니다. 이렇게 하면 속하지 않는 권한이 부족하여 손상되더라도 큰 피해를 입히지 않습니다.

답변2

두 번째 요점은 정확합니다. 그룹 구성원은 root파일을 읽을 수 있지만 쓰거나 실행할 수는 없습니다.

첫 번째 요점이 올바르지 않습니다. 사용자도 root파일을 실행할 수 없습니다. root실행 가능하도록 권한을 쉽게 변경할 수 있지만 해당 단계를 수행할 때까지는 실제로 실행할 수 없습니다.

주목해야 할 중요한 주의 사항은 쉘 스크립트나 기타 일반 텍스트 스크립트의 경우 실행 비트를 설정하지 않고도 실행할 수 있도록 "가져오는" 것이 가능하다는 것입니다. 이 예에서 파일 내용이 1.txt실제로 bash 스크립트인 경우 0650 권한이 있어도 bash 1.txt파일 내에서 명령을 실행하고 실행할 수 있으며 스크립트를 효과적으로 실행하고 실행 권한 비트를 우회하는 것처럼 보일 수 있습니다.

경고는 여기에서 볼 수 있습니다.

# ./myecho
Hi there!
# chmod -x myecho
# ./myecho
-bash: ./myecho: Permission denied
# sh myecho
Hi there!

관련 정보