쓰기 권한을 제거해도 루트가 파일에 기록되지 않습니다


31

방금 Ubuntu 시스템 (ext3 파일 시스템)에서 파일에서 쓰기 권한을 제거해도 루트가 파일에 기록되지 않습니다.

이것이 UNIX 파일 권한의 일반적인 규칙입니까? 아니면 우분투에만 해당됩니까? 또는 내 컴퓨터의 구성이 잘못 되었습니까?

# 터치 ABC
# chmod ugo-w abc
# 파이썬
Python 2.6.4 (r264 : 75706, 2009 년 12 월 7 일, 18:45:15) 
linux2의 [GCC 4.4.1]
자세한 내용은 "도움말", "저작권", "신용"또는 "라이센스"를 입력하십시오.
>>> open ( 'abc', 'w'). write ( 'AAA \ n')
>>> 
# 고양이 ABC
AAA

일반 사용자 계정에서이 작업을 수행하면 파일 쓰기가 예상대로 실패합니다.

  1. 이것이 정상적인 행동입니까?

  2. 루트가 실수로 파일에 쓰지 못하게하는 방법이 있습니까? (AppArmor 등이 아닌 일반 파일 시스템 메커니즘 사용)

내가 가장 이해하지 못하는 것에 대해 가르쳐주세요.

참고 : root는 시스템을 완전히 제어 할 수 있으며 모든 파일에 대한 권한을 변경할 수 있음을 이해 합니다. 내 질문은 현재 설정된 권한이 root로 실행되는 코드에 적용 되는지 여부 입니다. 아이디어는 자신이 실수로 파일에 쓰지 못하게하는 루트 사용자입니다.

참고 : 또한 정상적인 작동을 위해 루트로 로그인해서는 안된다는 것을 알고 있습니다 . 방금이 동작을보고 그것에 대해 묻고 있습니다.

답변:


46

1) 이것은 정상적인 행동입니다. root는 항상 모든 파일에 rw 액세스 권한을 갖습니다.

2) 당신은 루트를 사용하여 파일을 보호 할 수 있습니다 (고의적 인 행동은 아니지만 우발적입니다)

chattr +i filename.ext

즉, "변경 속성이 변경 불가능하다"입니다. 보호를 제거하려면

chattr -i filename.ext

man chattr자세한 정보를 살펴보십시오


@ brice : 많은 감사합니다. 내 질문을 직접 해결합니다. chattr에 대해 몰랐습니다.
laramichaels

내 시스템을 실행하려면 루트 액세스 권한이 필요한 것 같습니다 chattr. 그러한 속성을 설정하는 사용자 모드 수단이 있습니까?
quack quixote

1
...이 질문에 대한 훌륭한 답변이지만 " root파일을 잘 보호하여 파일을 삭제할 수 없다 "고 대답 했습니다!
quack quixote

4
보다 정확하게 (어쨌든 Linux의 경우) root는 CAP_DAC_OVERRIDEACL과 권한을 무시할 수 있는 기능이 있습니다.
grawity

1
참고로, OS X에서 이것과 동등한 sudo chflags <s|u>chg <file>것은 시스템이나 사용자에 대해 각각 불변으로 만들고 시스템이나 사용자에 sudo chflags no<s|u>chg <file>대해 불변 플래그를 설정 해제하는 것입니다.
GDP2

3
  1. 예, 이것은 정상입니다. 뿌리는 신이다.

  2. 예, 루트가 파일을 덮어 쓰지 못하게하는 방법이 있습니다.

    • 불변 비트를 chattr( +i설정, -i설정 해제)로 설정하십시오. 루트 액세스가 필요하며 ext2 / ext3에서만 작동하지만 아마도 ext4에서도 작동합니다.
    • 루트로 앱을 실행하지 마십시오. 루트 권한이없고 파일을 덮어 쓰지 않습니다. sudo시스템 기능에 액세스하는 데 사용 합니다.
    • 파일 시스템을 마운트 해제하십시오. 마운트 된 fs, 덮어 쓰기 파일이 없습니다. [*]
    • 컴퓨터를 끕니다. 전기, 파일 덮어 쓰기 금지

이러한 방법은 논리적으로 # 1부터 따릅니다. 보다시피, 마지막 두 방법은 일반적으로 네트워크를 분리하여 바이러스로부터 Windows를 보호하는 것이 유용하지 않은 것과 같은 방식으로 유용하지 않습니다. 이것이 루트가 위험한 이유입니다. [+]

[*] 물론 "실수로"블록 장치에 직접 쓸 가능성을 할인. 예, 루트는 그렇게 할 수 있습니다. 그렇습니다. 장치를 분리하십시오.

[+]이 두 가지 신화가 나오는 곳이기도합니다. 그들은 모든 신화가 아닙니다.


@ ~ quack : brice의 방법은 나열된 세 가지 방법보다 훨씬 실용적입니다. :)
laramichaels

@ ~ quack : 내 질문은 명령을 루트로 실행하는 문제를 이해한다는 것을 분명히했습니다.
laramichaels

3

Linux 커널 "기능"을 사용하여 루트 사용자의 파일 액세스를 제한 할 수도 있습니다. http://www.securityfocus.com/infocus/1400

SE-Linux 또는 다른 커널 패치를 사용하여 일부 파일을 루트조차도 변경할 수 없게 할 수도 있습니다.


0

루트가 수퍼 유저이고 그가 할 수있는 한, 루트 인 경우에도 권한을 제거 할 수 없다고 생각합니다. 파일에 쓰거나 응용 프로그램을 여는 등의 작업을 수행하지 못하도록하는 것이 루트의 의지입니다.

따라서 루트 계정을 잘못 사용하여 계정을 잘못 사용하지 못하게 할 가능성이 있습니다.

문안 인사

[자기 자신을주의하십시오 : 너희는 겸손 할 것이다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.