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


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은, rootrw-(거의) 모든 파일에 대한 사용 권한을하고 얻기 위해 x허가 후 x비트가 파일에 하나의 사용자 / 그룹 / 다른 사람의 권한을 설정해야합니다. 그러나 디렉토리에 대해, 않습니다 rootrwx디렉토리에 대한 사용 권한 (디렉토리가 전혀 권한이없는 경우에도를 ( ----------))?
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.