"루트" 사용자의 파일 권한은 어떻게 작동합니까?

"루트" 사용자의 파일 권한은 어떻게 작동합니까?

다음 파일이 있습니다.

---------- 1 Steve Steve 341 2017-12-21 01:51 myFile.txt

터미널에서 사용자를 전환했는데 root다음과 같은 동작이 나타났습니다.

  • 이 파일을 읽고 쓸 수 있습니다.

  • 이 파일을 실행할 수 없습니다.

  • 파일의 x사용자 권한( ---x------), 그룹 권한( ------x---) 또는 기타 권한( ) ---------x에 비트를 설정하면 파일을 실행할 수 있습니다.

root누구든지 나에게 이것을 설명하거나 사용자가 파일과 디렉터리를 다룰 때 적용되는 모든 규칙을 설명하는 튜토리얼을 알려줄 수 있습니까?

답변1

파일 및 디렉터리에 대한 권한 있는 액세스는 실제로 존재 여부뿐만 아니라 기능에 따라 결정됩니다 root. 실제로는 root가능한 모든 기능이 일반적으로 존재하지만 어떤 경우에는 모든 기능이 제거되거나 일부 기능이 다른 사용자(해당 프로세스)에게 제공될 수도 있습니다.

간단히 말해서 권한 있는 프로세스에 대한 액세스 제어 확인이 어떻게 작동하는지 설명했습니다. 다양한 기능이 실제로 영향을 미치는 방식은 다음과 같습니다.

기본여기서 능력은CAP_DAC_OVERRIDE, 이를 소유한 프로세스는 "파일 읽기, 쓰기 및 실행 권한 검사를 우회"할 수 있습니다. 여기에는 파일 읽기 및 쓰기는 물론 디렉터리 읽기, 쓰기 및 액세스도 포함됩니다.

실행 파일로 표시되지 않은 파일을 실행하는 데는 실제로 작동하지 않습니다. 이것논평generic_permission( fs/namei.c)는 체크 파일에 접근하기 전의 의미입니다.

읽기/쓰기 DAC는 항상 덮어쓸 수 있습니다. 실행 가능한 DAC는 하나 이상의 실행 비트가 설정되면 재정의 가능합니다.

x파일을 실행하려고 하면 코드는 최소한 1비트가 설정되어 있는지 확인합니다. 나는 이것이 실수로 임의의 데이터 파일을 실행하여 오류가 발생하거나 이상한 결과를 얻는 것을 방지하기 위한 편의 기능일 뿐이라고 생각합니다.

어쨌든 권한을 무시할 수 있다면 실행 가능한 복사본을 만들어 실행하면 됩니다. (이론적으로 프로세스의 setuid 파일은 파일 권한( CAP_DAC_OVERRIDE)을 재정의할 수 있지만 다른 관련은 없습니다( CAP_FSETID// CAP_FOWNER) CAP_SETUID. 그러나 CAP_DAC_OVERRIDE편집 /etc/shadow및 유사한 작업은 허용되므로 어쨌든 전체 루트 액세스 권한만 갖는 것과 거의 동일합니다.)

CAP_DAC_READ_SEARCH또한 모든 파일을 읽고 모든 디렉터리에 액세스할 수 있지만 실행하거나 쓸 수는 없도록 하는 기능 도 있습니다 . 이를 CAP_FOWNER통해 프로세스는 권한 비트 및 파일 그룹 변경과 같이 일반적으로 파일 소유자에게만 예약된 작업을 수행할 수 있습니다.

재정의 디렉토리에 대한 끈적한 부분은 아래에서만 언급되므로 이를 무시하는 것만으로는 충분 CAP_FOWNER하지 않은 것 같습니다 . CAP_DAC_OVERRIDE(쓰기 권한을 부여하지만 일반적으로 고정 디렉토리에서는 해당 권한을 갖고 +t제한합니다.)

(여기서는 특수 장치가 "파일"로 간주된다고 생각합니다. 최소한 generic_permission()디렉토리에 대한 유형 확인만 있을 뿐 그 이상은 확인하지 않습니다.)


물론 함수조차도 파일 수정에 도움이 되지 않는 경우가 여전히 있습니다.

  • /proc일부 파일은 /sys실제 파일이 아니기 때문에 포함됩니다.
  • 루트 액세스를 제한할 수 있는 SELinux 및 기타 보안 모듈
  • chattrext2/ext3/ext4의 변경 불가능 +i하고 추가 전용 +a플래그인 이 두 플래그는 루트도 중지하고 파일 이름 변경 등을 방지합니다.
  • root_squash네트워크 파일 시스템, 서버는 NFS에서 루트를 누구에게도 매핑하지 않는 등 자체 액세스 제어를 가질 수 있습니다.
  • 퓨즈, 뭐든지 할 수 있을 것 같아
  • 읽기 전용 마운트
  • 읽기 전용 장치

답변2

이는 여러분이 알아차린 기본 권한과 정확히 동일합니다.

  • 읽고 쓰기:
    기본적으로 루트 사용자는 시스템의 모든 파일에 액세스할 수 있습니다. 다음과 같이 속성을 변경하여 이 액세스 권한을 제거할 수 있습니다.샤텔. 그런 다음 이를 기능과 연관시키십시오.

  • 구현하다:
    하나 이상의 실행 비트가 설정되지 않으면 루트 사용자에게는 실행 권한이 없습니다.

답변3

myFile.txt을 통해 획득 됩니다 chmod 000 myFile.txt.

0 no permission
1 execute
2 write
3 execute + write
4 read 
5 read + execute
6 read + write
7 all

---------사용자, 그룹 및 기타 사용자에게 권한이 없음을 나타냅니다.

루트 사용자는무제한이 파일을 수정하는 기능. 읽기/쓰기가 허용됩니다. 이 파일을 실행하려면 루트 사용자가 파일을 실행 가능하게 만들어야 합니다. (chmod 100, 010 또는 001)

답변4

이것을 이론적으로 설명하겠습니다.

루트 사용자는 운영 체제의 왕입니다.

파일이나 디렉토리에 X와 같은 실행 권한은 있지만 다른 권한은 없고 Steve 사용자와 같은 사용자가 파일을 소유한 경우 루트도 파일을 실행할 수 있습니다.

루트는 Linux에서 무엇이든 할 수 있으며 루트에는 제한이 없다는 점을 항상 기억하십시오.

관련 정보