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


28

다음 파일이 있습니다.

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

root터미널에서 사용자를 전환했으며 다음과 같은 동작을 발견했습니다.

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

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

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

누구나 나에게 설명하거나 root사용자가 파일과 디렉토리를 다룰 때 적용되는 모든 규칙을 설명하는 자습서를 가리킬 수 있습니까 ?

답변:


38

파일 및 디렉토리에 대한 특권 액세스는 실제로 여부에 따라가 아니라 기능에 의해 결정됩니다 root. 실제로는 root일반적으로 가능한 모든 기능이 있지만 모든 / 많은 기능이 삭제되거나 일부는 다른 사용자 (그들의 프로세스)에게 제공 될 수있는 상황이 있습니다.

간단히 말해서, 액세스 제어 점검이 권한있는 프로세스에 대해 작동하는 방법을 이미 설명했습니다. 서로 다른 기능이 실제로 어떤 영향을 미치는지 다음과 같습니다.

여기서 주요 기능CAP_DAC_OVERRIDE 은 "파일 읽기, 쓰기 및 권한 검사를 무시할 수있는"프로세스입니다. 여기에는 파일 읽기 및 쓰기뿐만 아니라 디렉토리 읽기, 쓰기 및 액세스가 포함됩니다.

실제로 실행 파일로 표시되지 않은 파일을 실행하는 경우에는 적용되지 않습니다. 액세스가 파일을 확인하기 전에 ( ) 의 주석은 다음generic_permissionfs/namei.c 과 같이 말합니다.

읽기 / 쓰기 DAC는 항상 재정의 할 수 있습니다. 실행 가능 DAC는 하나 이상의 exec 비트 세트가있을 때 재정의 할 수 있습니다.

그리고 코드는 x파일을 실행하려고하면 적어도 하나의 비트 세트가 있는지 확인합니다. 우연히 임의의 데이터 파일을 실행하고 오류 또는 이상한 결과를 얻는 것을 방지하기 위해 편의 기능 일뿐입니다.

어쨌든 권한을 무시할 수 있다면 실행 가능한 복사본을 만들어 실행할 수 있습니다. (프로세스의 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 및 기타 보안 모듈
  • chattr불변 으로 ext2 / ext3 / ext4에 플래그 +i만 추가하십시오 +a. 둘 다 루트조차 중지하고 파일 이름 바꾸기 등도 방지합니다.
  • 서버가 예를 들어 자신의 액세스 제어 할 수있는 네트워크 파일 시스템, root_squashNFS에서 아무도에 뿌리를 매핑
  • 내가 할 수 있다고 생각하는 퓨즈
  • 읽기 전용 마운트
  • 읽기 전용 장치

capabilities(7)매뉴얼 페이지에 소스 파일 주석이 반영되지 않은 것 같습니다 . 버그 보고서 제출을 고려하십시오!
— Toby Speight

이 표시 한 바와 같이 @ilkkachu은, root이 rw-(거의) 모든 파일에 대한 사용 권한을하고 얻기 위해 x허가 후 x비트가 파일에 하나의 사용자 / 그룹 / 다른 사람의 권한을 설정해야합니다. 그러나 디렉토리에 대해, 않습니다 root이 rwx디렉토리에 대한 사용 권한 (디렉토리가 전혀 권한이없는 경우에도를 ( ----------))?
— Joseph

@Joseph CAP_DAC_OVERRIDE는 모든 디렉토리 권한을 무시할 수 있으므로 디렉토리를 읽고 쓰고 액세스 할 수 있습니다 (예 : 컨텐츠 목록, 파일 작성 및 링크 해제). 내가 exec 비트에 대해 인용 한 의견은 파일의 맥락에 있습니다 (전용).
— ilkkachu

11

기본 권한을 확인한 것과 같습니다.

  • 읽기 및 쓰기 :
    기본적으로 루트 사용자는 시스템의 모든 파일에 액세스 할 수 있습니다. 여기에 설명 : chattr 과 같은 속성을 변경하여이 액세스를 제거 할 수 있습니다 . 그런 다음 기능에 연결됩니다.

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


루트 파일을 쓰거나 삭제할 수없는 파일을 가질 수 있습니다. 따라서 "루트 사용자는 시스템의 모든 파일에 액세스 할 수 있습니다." 부정확하다.
— Lukas Boersma

읽기 전용 파일 시스템을 의미합니까? 아니면 다른 사건이 있습니까?
— Kevin Lemaire

1
나는 다음과 같은 경우에 대해 이야기하고 있습니다 : 쓸 수없는 파일 , 삭제할 수없는 파일
— Lukas Boersma

5

에 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)


2

실행 모드는 다른 모드와 약간 다르게 처리됩니다.

읽기 및 쓰기 권한은 보안 정책을 시행하는 데 사용됩니다. root사용자는 보안 제한 (이 불변 파일과 같은 몇 가지 예외가 있으며, 기능과 같은 현대적인 기능이 세분화이 더 만든)이 계정의 또 다른 이름은 "수퍼 유저"왜 인을에서 일반적으로 면역입니다.

권한을 실행하면 파일이 있는지 여부를 구별 더 많은 자문 모드 인 목적으로 실행되도록하거나 데이터입니다. 이 때문에 루트 사용자조차도 데이터 파일을 실행할 필요가 없습니다. 실행 권한이 설정되어 있지 않으면 root는 파일을 실행할 수 없습니다. 그들 중 하나가 설정되면 그는 할 수 있습니다. 물론 root는 파일의 사용 권한을 변경할 수있는 권한이 있기 때문에 파일 시스템이 읽기 전용이 아닌 경우 계정은 원하는 경우 파일을 실행 파일로 만들 수 있습니다.

BTW, 스크립트는 흥미로운 사례입니다. 스크립트는 관련 인터프리터의 데이터 파일입니다. 스크립트에 #!줄 이 있으면 프로그램으로 실행할 수 있습니다. shebang에 이름 지정된 인터프리터는 스크립트 파일 이름을 인수로 사용하여 실행됩니다. 그러나 이것은 실행 권한이 설정된 경우에만 수행됩니다. 반면에 인터프리터를 직접 실행할 수 있습니다 (예 :) /bin/bash scriptname. 통역사는 파일을 읽을 수있는 경우에만 관심을 가지며 실행 권한을 확인하지 않습니다.


1

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

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

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

리눅스 루트에서는 무엇이든 할 수 있다는 것을 항상 기억하십시오. 루트에는 제한이 없습니다.


아무것도 아니다. 예를 들어, 파일에 변경할 수없는 속성 이있는 경우 루트조차도 파일을 변경할 수 없습니다 (명시 적으로 해당 속성을 제거하지 않는 한).
— Ruslan

@Ruslan 그렇습니다. 그러나 그가 너무 새롭기 때문에 그가 새로운 것이기 때문에 기본적으로 설명합니다. 기본적으로 이러한 종류의 속성은 발생하지 않습니다.
— Hassan Sohail
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.