파일에 대한 루트 권한은 무엇입니까?

파일에 대한 루트 권한은 무엇입니까?

다음을 입력하면:

ls -l file.txt

해당 파일에 대한 권한이 "456"과 동일하다는 것을 확인했습니다.

  • 4 = 소유자(r--)
  • 5 = 그룹(rx)
  • 6 = 기타(rw-)

어떤 권리가 있습니까?뿌리이 경우에는? 777이 있나요?

루트가 소유자보다 더 적은 권한을 갖도록 권한을 변경할 수 있습니까?

답변1

나는 확인할 것이다이 페이지 밖으로. 파일 권한에 대해 자세히 설명합니다.

그러나 귀하의 질문에 직접 대답하려면 다음을 수행하지 마십시오.

슈퍼유저 "root"는 시스템의 모든 파일에 액세스할 수 있는 능력을 가지고 있습니다.

예를 들어 귀하의 예에서 파일의 소유자는 say bob이고 그룹 소유자도 인 bob경우 다음과 같은 내용이 표시됩니다.

-r--r-xrw-. 1 bob bob 8 Jan 29 18:39 test.file

세 번째 비트 그룹(rw)은 루트가 그룹의 일부이므로 루트에도 적용됩니다 others. 해당 파일을 루트로 편집하려고 하면 문제가 없음을 알 수 있습니다.

그러나 파일을 루트가 소유한 경우 이론을 더 자세히 테스트하려면 다음을 수행하십시오.

-r--r-xrw-. 1 root root 8 Jan 29 18:40 test.file

그리고 다시 파일을 편집하러 갔는데, 여전히 파일을 편집하는 데 아무런 문제가 없다는 것을 알게 될 것입니다.

마지막으로 극단적인 조치를 취한 경우:

chmod 000 test.file
ls -lh test.file
----------. 1 root root 8 Jan 29 18:41 test.file

그리고 (적어도 vi/vim에서는) 볼 파일을 편집하기 위해 다시 이동했습니다 "test.file" [readonly]. 하지만 여전히 파일을 편집하고 :wq!.


쉘 스크립트 파일을 사용하여 @Stéphane Chazelas 주장을 테스트합니다.

#!/bin/sh

echo "I'm alive! Thanks root!"


[root ~]# ls -lh test.sh
----------. 1 atgadmin atgadmin 31 Jan 30 10:59 test.sh

[root ~]# ./test.sh
-bash: ./test.sh: Permission denied

[root ~]# sh test.sh
I'm alive! Thanks root!

@Shadur가 이미 말했으므로 다시 설명하는 대신 인용하겠습니다.

참고: 실행 비트는 루트에 적용 가능한지 여부가 아니라 존재 여부를 확인합니다.

답변2

루트는 설계상 시스템의 모든 파일에 대한 전체 액세스 권한을 갖습니다. 실수로 파일이 삭제되는 것을 방지하려면 다음을 사용하세요.

chattr +i file

그러면 GNU/Linux에 불변 플래그가 설정됩니다. -i대신 으로 제거할 수 있습니다 +i.

FreeBSD에서는 다음을 사용할 수 있습니다.

chflags schg file

취소하려면 를 noschg대신 하세요 .schg

파일이 루트에 표시되지 않도록 보호하려면 파일을 다른 시스템에 저장하거나 최후의 수단으로 암호화를 사용해야 합니다.

또한보십시오:https://superuser.com/questions/104015/removing-write-permission-does-not-prevent-root-from-writing-to-the-file

답변3

루트가 소유자보다 더 적은 권한을 갖도록 권한을 변경할 수 있습니까?

Shure, 쉽습니다. 루트의 uid가 0이 되지 않도록 passwd 파일을 변경하기만 하면 됩니다. 반면에 그렇게하지 마십시오. 그것은 나쁜 생각입니다.

이 질문을 한 사람은 당신이 처음이 아니며 그 중 일부는 기능에 대한 아이디어를 생각해 냈습니다. 하지만 이에 대해서는 잠시 후에 살펴보겠습니다. 먼저 권한 시스템의 작동을 이해하는 것부터 시작하겠습니다.

액세스 검사를 수행하는 컴퓨터 부분은 귀하의 이름을 모르고 번호로 귀하를 알고 있으며 해당 번호를 uid 또는 사용자 식별자라고 합니다. 비슷한 방식으로 당신이 속한 그룹의 이름은 모르고 gid만 알 수 있습니다. uid와 name 사이의 매핑은 passwd 파일에 있고 gid는 groups 파일에 매핑됩니다.

이제 파일을 열려고 할 때 네 가지 확인이 수행됩니다. 확인을 건너뛸 수 있는 권한이 있습니까? 사용자로서 허용됩니까? 그룹의 구성원으로서 허용됩니까? 다른 사람으로서 귀하입니까? 허락하다. 여기에서는 이름 서비스 전환, 액세스 제어 목록, 읽기/쓰기 실행과 같은 몇 가지 항목을 건너뛰겠습니다. 하지만 관심 있는 부분은 첫 번째 테스트입니다.

때로는 파일 권한 테스트를 건너뛰는 것이 허용됩니다. 왜? 그리고 (매우 중요) 언제요? 이제는 다른 사람이 수행하기를 원하지 않고 파일 권한 모델에 잘 맞지 않는 작업을 수행해야 하는 경우가 있습니다. 낮은 포트에서 네트워크 연결 열기, 파티션 마운트 또는 권한 확인 건너뛰기와 같은 모든 종류의 작업입니다. 요즘에는 이런 것들을 능력(capability)이라고 합니다. 예전에는 UID0에 이 모든 것이 있었고 이에 대해 할 수 있는 일은 아무것도 없었습니다. 요즘에는 다른 사용자에게 기능을 제공하거나 삭제할 수 있지만 기본값은 이전 동작입니다.

루트를 제한하는 다른 방법은 selinux와 같은 것을 사용하는 것이지만 이는 또 다른 왁스 공입니다.

답변4

이 경우 루트에 대한 권리는 무엇입니까? 777이 있나요?

예.

이미 설명한 대로 루트에는 읽기 및 쓰기 권한이 적용되지 않습니다. 그러나 실행 권한은 여전히 ​​존재 여부를 확인하므로 실행 플래그가 설정되지 않은 경우 루트는 파일을 실행할 수 없습니다. 그룹이 깃발을 가지고 있기 때문에 여기서는 그렇지 않습니다 x.

또한 쓰기 권한 부여 여부에 관계없이 루트 또는 모든 사람은 읽기 전용 파일 시스템에 저장된 파일에 대한 쓰기 액세스가 거부됩니다.

파일이 NFS와 같이 원격으로 마운트된 디렉터리에 저장된 경우 루트는 소유자보다 더 적은 권한을 가질 수도 있습니다.

마지막으로 기호 링크 권한은 본질적으로 의미가 없습니다.

관련 정보