수퍼 유저가 위반할 수있는 액세스 권한은 무엇입니까? 위반할 수없는

Fr. Br. George는 강의 중 하나 (러시아어)에서 수퍼 유저가 위반할 수없는 액세스 권한이 있다고 말했습니다. 그것은 수퍼 유저가 무언가를하는 것을 금지 할 수있는 접근 권한이 있다는 것입니다.

인터넷에서이 정보를 찾을 수 없었으며 이들이 무엇인지 궁금합니다. 이것은 아마도 시스템의 핵심 실행과 관련이 있습니까? 어쩌면 그는 일부 시스템 프로세스를 멈출 수 없습니까? 아니면 리얼 모드에서 프로세스를 실행할 수 없습니까?

이 질문은 SELinux와 관련이 없습니다 (George는 질문 직전에 그것에 대해 이야기했습니다).



답변

접근이 거부되었습니다 :

root직접 네트워크 액세스가 거부 될 수 있습니다. 이것은 인터넷에 연결된 호스트에서 유용합니다.로 로그인 smith한 다음에 로그인해야합니다 sudo.

루트가 할 수없는 것들 :

이것은 권한 부족이 아닙니다. 루트가 할 수없는 것을 볼 수 없지만 일부 기술적 문제는 “금지”된 것으로 나타날 수 있습니다.

나는 루트인데 왜 일반 사용자가 할 수 있지만이 파일을 만들거나 삭제할 수 없습니까?

NFS / samba 공유에 있고 특정 ( access=) 권한이 부여 되지 않았습니다 . 일반 사용자는 관습법을 준수하지 않습니다. (아래의 로컬 대 원격 루트 참조)

나는 루트인데 왜이 프로세스를 죽일 수 없습니까?

보류중인 I / O가 있고 물리적 드라이브 / 원격 LUN의 연결이 끊어졌으며 재부팅으로 만 프로세스를 종료 할 수 있습니다.

나는 루트입니다. 어떻게 archemar의 비밀번호를 얻습니까?

당신은 할 수있는 su - archemar암호는 단방향 해시를 사용하여 저장하기 때문에, 모든 권리, 또는 이전을 모르고 변경 archemar의 암호,하지만 당신은 (짧은 키 로거)를 읽을 수 없습니다.

로컬 대 원격 루트

  • 스테이션 / PC에서 루트 권한을 갖고 회사 / 대학 / 대학 / 제공자 NFS 공유를 사용할 수 있습니다.
  • 다음으로 NFS를 내보내는 컴퓨터에서 루트가 아닌 로그인 만 가능합니다.

지금

cp /bin/bash /nfs/home/me/bash
chown root /nfs/home/me/bash
chmod u+s /nfs/home/me/bash

NFS 서버에 로그온하고 실행 ./bash하면 회사 / 대학 서버의 루트입니다.


답변

일반적인 경우에 이것은 올바르지 않습니다. 수퍼 유저는 시스템이 제공하는 모든 기능에 대한 권한 / 권한을 갖습니다 (1). 이 규칙이 세분화되는 곳은 SELinux를 믹스에 넣을 때입니다. SELinux를 사용하면 루트의 권한까지 제한하여 특정 작업을 허용하지 않을 수 있습니다. 그러나 허용되지 않는 특정 작업은 로컬 시스템의 SELinux 구성에 따라 크게 달라 지므로 SELinux를 사용하더라도이 질문은 일반적인 의미에서 대답 할 수 없습니다.

(1)-시스템이 주어진 기능을 제공하지 않으면 (예 : 실시간 커널 기능이없는 경우) “루트가이 기능에 액세스 할 수 없습니다”라는 문장을 거짓으로 간주합니다. 잘못된 가정 (즉, 해당 기능을 해당 시스템의 모든 사용자가 사용할 수 있음)


답변

한편으로 사용자가 할 수 없는 일이 있습니다.

  • 하드 링크 디렉토리 (파일 시스템 제한 때문에)
  • 이미 레코딩 된 CD-ROM에 쓰기 (물리적으로 인해)

그러나 그들은 특권이 아닙니다. 왜냐하면 그들은 부여 할 수 없기 때문에 누구에게도 가능하지 않습니다.

그런 다음 전체 시스템 또는 그 일부에 대해 켜거나 끌 수있는 제한이 있습니다.
예를 들어, OS X에는 코드가 Apple에 의해 서명 된 경우에만 코드를 실행할 수있는 옵션이 있습니다.

나는 수퍼 유저가 할 수 없다면 어떤 사용자도 그것을 가질 수 없기 때문에 이것을 실제 권한으로 간주하지 않습니다. 전역으로 만 비활성화 할 수 있습니다.

편집 :
실행 비트가없는 파일에 대한 아이디어는 말 그대로 아무도 할 수 없으며 아무도 그 권한을 부여 할 수 없으므로이 범주에 속합니다.
루트 또는 사용자 그룹 루트가 아닌 다른 사용자 또는 그룹에게 해당 파일을 실행할 수있는 권한을 부여하더라도 루트는 여전히 해당 파일을 실행할 수 있습니다 (OS X 10.10, 10.11 및 Ubuntu 15.04 서버에서 테스트 됨).

이러한 경우를 제외하고는 루트가 할 수없는 일은 거의 없습니다.
그러나 커널 모드 (사용자 모드와 반대) 라는 것이 있습니다.

내가 아는 한, 정상적인 시스템에서는 커널, 커널 확장 및 드라이버 만 커널 모드에서 실행되며 다른 모든 것 (루트로 로그인 한 쉘 포함)은 사용자 모드에서 실행됩니다.
따라서 “루트가 충분하지 않다”고 주장 할 수 있습니다. 그러나 대부분의 시스템에서 루트 사용자는 커널 모듈을로드 할 수 있습니다. 커널 모듈은 커널 모드에서 실행되어 루트에 커널 모드에서 코드를 효과적으로 실행하는 방법을 제공합니다.

그러나 (임의로) 불가능한 시스템은 (iOS와 같은) 적어도 보안 전체를 악용하지 않는 시스템이 있습니다. 이것은 대부분 코드 서명 적용과 같은 보안 강화 때문입니다.
예를 들어, iDevices 프로세서 에는 AES 암호화 키가 내장되어 있으며 커널 모드에서만 액세스 할 수 있습니다. 커널 모듈 은이 모듈에 액세스 할 수 있지만 커널이 커널 모듈을 승인하려면 해당 커널 모듈의 코드도 Apple에서 서명해야합니다.

OS X의 경우 버전 10.11 (El Capitan)부터는 “루트리스 모드”(루트가 존재하기 때문에 이름이 오도 될 수 있음)가 있으며 설치 프로그램이 여전히 할 수있는 루트를 효과적으로 금지합니다.
에서 인용 AskDifferent에이 우수 답변 :

루트에서도 제한 사항은 다음과 같습니다.

  • / System, / bin, / sbin 또는 / usr (/ usr / local 제외)에서는 아무것도 수정할 수 없습니다. 또는 내장 앱 및 유틸리티 중 하나. 설치 프로그램 및 소프트웨어 업데이트 만 이러한 영역을 수정할 수 있으며 Apple 서명 패키지를 설치할 때만 해당 영역을 수정할 수 있습니다.

답변

언급 한 “시스템 코어 실행”은 root로드 가능한 커널 모듈 등을 통해 제어 할 수 있습니다. 물론 이것은 커널 모듈 로딩이 커널에 의해 지원된다고 가정하며, 심지어 불가능한 행동도 수행 할 수 없습니다 root.

시스템 프로세스에서도 마찬가지입니다. root프로세스를 종료 할 수는 있지만 커널 무결성을 손상시키지 않고 커널 모드에서 실행중인 프로세스를 중지하는 것은 불가능하므로 이러한 프로세스를 즉시 중지하는 것은 불가능합니다. 참고 root단순히 영향을주지 않습니다 자신을 죽이고, 그 프로세스를 죽일 거부되지 않습니다.

마지막으로 실제 모드 : Linux 커널은 그것을 지원하지 않으므로 다시는 아무도 불가능한 일을 할 수 없습니다 root.

@Siguza는 x허가 없이 파일을 실행하는 것을 언급했으며 , 이는 root사용자에게 가능합니다 .

/lib/ld-linux.so.2 /path/to/executable

답변

예를 들어 변경 불가능한 파일을 수정할 수 있습니다. 파일 속성 i을 설정하여 chattr루트에서도 파일을 변경할 수 없습니다. 예를 들면 다음과 같습니다.

# whoami
root
# touch god
# chattr +i god
# rm god
rm: cannot remove ‘god’: Operation not permitted
# touch god
touch: cannot touch ‘god’: Permission denied

파일은 ls -l출력 에서 일반 쓰기 가능 파일로 나타납니다 .

# ls -l god
-rw-r--r-- 1 root root 0 Oct 26 19:27 god

i속성 을 보려면 다음 을 사용해야합니다 lsattr.

# lsattr god
----i----------- god

chattr매뉴얼 페이지i속성 에 대해 다음과 같이 말합니다 .

`i ‘속성을 가진 파일은 수정할 수 없습니다 : 파일을 삭제하거나 이름을 바꿀 수 없으며,이 파일에 대한 링크를 만들 수 없으며 파일에 데이터를 쓸 수 없습니다. 수퍼 유저 또는 CAP_LINUX_IMMUTABLE 기능을 가진 프로세스 만이 속성을 설정하거나 지울 수 있습니다.

루트는 불변성을 쉽게 취소 할 수 있습니다.

# chattr -i god
# rm -v god
removed ‘god’

답변

FreeBSD에서는 gmirror이미 마운트 된 파티션에서 root로도 사용할 수 없습니다 :

gmirror label -v -b prefer gm0s1 ad4s1
gmirror : ad4s1에 메타 데이터를 저장할 수 없음 : 작업이 허용되지 않습니다.

할 수 있으려면 sysctl( kern.geom.debugflags=16) 를 설정 해야합니다.

root권한이있는 사용자이지만 이러한 권한은 커널에 의해 부여됩니다. 따라서 커널은보다 많은 권한을 가지고 root있습니다.


답변

루트 사용자 자신과의 협업을 가정하면 root( allow_other또는 allow_root옵션을 사용하여) FUSE 마운트에 액세스하지 못하게 할 수 있지만 이는 FUSE가 이런 방식으로 작동하도록 설계 되었기 때문입니다. FUSE는 가상 계층에 상주하므로 가능한 한 투명하고 얇아서 다른 계층에 권한을 위임하는 일반적인 블록 장치 모듈과 달리 논리를 기반으로 좋아하는 모든 오류를 반환 할 수 있습니다.

파일 시스템을 읽기 전용으로 설정하지 않는 한 루트 사용자가 옵션을 비활성화하거나 FUSE 모듈을 옵션을 자동으로 버리는 모듈로 바꾸는 것을 막을 수는 없습니다. 그러나 이것은 단지 “파수꾼을 보는 사람”상황으로 이어집니다. 시스템이 거짓말을하지 않는지 어떻게 확인할 수 있습니까? 커널은 실제로 합법적 인 FUSE 모듈을 보여주는 chroot에 앉아있을 수도 있지만 커널은 실제로 악의적 인 버전을 실행하고 있습니다.