루트 / 수퍼 유저가 읽기 방지 된 파일을 읽을 수 있습니까?


34

공유 유닉스 호스팅에서 파일 sensitive-data.txt가 있고 다음을 발행하는 경우 :

chmod 600 sensitive-data.txt

루트 사용자가 여전히 내 파일을 읽을 수 있습니까? 특히 암호를 수은 hgrc 파일에 저장하는 것이 안전한지 궁금합니다.

최신 정보

설치가 매우 쉬워서 mecurial keyring 확장을 사용하기로 결정했습니다.

pip install mercurial_keyring

그런 다음 hgrc에 추가하십시오.

[extensions]
mercurial_keyring =

그러나 나는 여전히이 질문에 대한 답변에 관심이 있습니다.

답변:


61

예, 루트는 다음을 수행 할 수 있습니다.

$ echo Hello you\! > file
$ chmod 600 file
$ ls -l file
-rw------- 1 terdon terdon 11 Feb 27 02:14 file
$ sudo -i
# cat file
Hello you!

어쨌든 루트가 파일을 루트로 읽을 수 없더라도 비밀번호없이 항상 사용자로 로그인 할 수 있습니다.

$ whoami
terdon
$ sudo -i
[sudo] password for terdon: 
# whoami 
root
# su - terdon
$ whoami
terdon

따라서 (또는 )를 root사용하여 다른 사용자 이름으로 변경할 수 있으며 마치 마치 자신처럼 모든 것을 할 수 있습니다.susudo -iu username


23

항상 그 가정 root(과와 다른 사용자 / 공정 CAP_DAC_OVERRIDE과는 CAP_DAC_READ_SEARCH) 할 수있는 모든 것을 그 일에서 LSM하지 않는 한 (SELinux는, AppArmor의 또는 이와 유사한 것)을 방지에게 그를.

또한 모든 키 입력을 읽을 수 있다고 가정해야합니다. 비밀번호는 실제로 안전하지 않습니다. 심각한 보안 수준을 원할 경우 사용자가 완전히 제어하고 다른 사람이 사용하지 않는 시스템을 사용해야합니다.


이것은 실제로 구현 된 기능에 대한 내 문제입니다. 대상을 지정하지 않기 때문에 SELinux와 같은 기능을 대체하여 유형이 적용되지 않아야합니다. 한 명의 사용자 CAP_DAC_OVERRIDE에게 하나의 파울로 시스템의 다른 보안 메커니즘을 재정의하는 데 필요한 모든 권한을 부여합니다. CAP_DAC_OVERRIDE기본적으로 CAP_DO_WHATEVER_YOU_WANT입니다.
Bratchley

10

예 루트는 모든 것을 할 수있는 모든 권한을가집니다

여기에서 디렉토리 이름 테스트를 작성하고 파일 lonston.txt를 터치하고 파일을 나열한 것을 볼 수 있습니다.

root@system99:/tmp# mkdir test && touch lonston.txt && ls -l
total 4
-rw-r--r-- 1 root root    0 Feb 27 16:35 lonston.txt
drwxr-xr-x 2 root root 4096 Feb 27 16:35 test

그런 다음 000을 사용하여 파일 및 디렉토리의 권한을 null 권한으로 변경하고 권한을 확인하기 위해 나열했습니다.

root@system99:/tmp# chmod 000 lonston.txt && chmod 000 test && ls -l
total 4
---------- 1 root root    0 Feb 27 16:35 lonston.txt
d--------- 2 root root 4096 Feb 27 16:35 test

그런 다음 파일에 쓸 수 있고 cat을 사용하여 파일을 읽을 수 있습니다.

root@system99:/tmp# echo "Yes root have all Privileges than other user's, let we see the permission of user's too" > lonston.txt 

root@system99:/tmp# cat lonston.txt 
Yes root have all Privilages than other user's, let we see the permission of user's too

심지어 d --------- (null) 000 권한을 가진 디렉토리로 들어갈 수 있으며 루트조차도 읽기 또는 쓰기 권한이 없습니다.

root@system99:/tmp# cd test/
root@system99:/tmp/test# pwd
/tmp/test

심지어 권한이 변경된 후 파일과 폴더를 만들 수 있습니다.

root@system99:/tmp/test# touch /tmp/test/lonston/testdir/babin.txt

root@system99:/tmp/test# ls -l /tmp/test/lonston/testdir/
total 0
-rw-r--r-- 1 root root 0 Feb 27 16:39 babin.txt

이제 여기에 400으로 권한을 볼 수 있습니다

root@system99:/tmp/test# chmod 400 babin.txt

파일 권한을 볼 수있는 목록

root@system99:/tmp/test# ls -l
total 8
-r-------- 1 root root   34 Feb 27 16:42 babin.txt
drwxr-xr-x 3 root root 4096 Feb 27 16:38 lonston

vim im을 사용하여 babin.txt 파일에 한 줄을 추가했습니다.

root@system99:/tmp/test# vim babin.txt

그러나 vim 모드에서는 W10을 알 수 있습니다 : 경고 : 읽기 전용 파일 변경 그러나 여전히 쓰기 가능

이제 파일을 출력 할 수 있습니다.

root@system99:/tmp/test# cat babin.txt 
hi this is the write persmission 
this is added while the file have 400 permission

그런 다음 루트 사용자에서 일반 사용자로 로그 아웃하고 루트에서 무엇을 null 허용하는 파일을 나열했습니다.

root@system99:/tmp# exit
exit

/ tmp 디렉토리로 이동

sysadmin@system99:~$ cd /tmp/
sysadmin@system99:/tmp$ ls -l
total 8
---------- 1 root root   88 Feb 27 16:36 lonston.txt
d--------- 2 root root 4096 Feb 27 16:35 test

그러나 일반 사용자로부터 파일을 읽는 동안에는 할 수 없습니다

sysadmin@system99:/tmp$ cat lonston.txt 
cat: lonston.txt: Permission denied

sysadmin@system99:/tmp$ cd test/
cat: test/: Permission denied

그게 다야, 루트 사용자의 힘을 얻었기를 바랍니다.

일반 사용자 인 경우 루트 권한이 필요한 경우 sudo를 사용해야하며 sudo 비밀번호를 묻습니다.

예 :

sysadmin@system99:/tmp$ sudo cat lonston.txt 
[sudo] password for sysadmin: 
Yes root have all Privilages than other user's, let we see the permission of user's too

Sudo 사용자는 루트 사용자 그룹과 공동 작업하므로 sudo는 루트 권한을 갖습니다.

sudo에 대해 더 알고

# man sudoers

여기서 우리는 일반 사용자가 Sudo 권한을 가질 수 있다고 정의한 것을 볼 수 있습니다.

sysadmin@system99:/tmp$ sudo cat /etc/sudoers

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

루트에서도 파일을 읽거나 편집하거나 삭제할 수 있습니다. 읽기 권한이 없습니다.


2
이 답변에 왜 공언이 적습니까? 예제에서 발생할 수있는 거의 모든 경우를 다룹니다.
Foo Bar

8

전통적인 유닉스에서는 루트가 강력합니다. 특히, root는 모든 파일을 읽을 수 있으며 프로그램이 내부적으로 수행하는 작업을 스누핑 할 수도 있습니다. 데이터가 실제로 민감한 경우 암호화 된 사본 만 보관하십시오 (예 : GNU Privacy Guard 를 고려 하지만 문서를주의 깊게 읽으십시오) . 사용자가 완전히 제어 할 수없는 컴퓨터에서는 절대 해독 하지 마십시오 .

(Paranoia는 훌륭합니다. 결코 충분하지 않습니다. ;-)

데이터 유출로 인해 발생할 수있는 비용과 보안 비용 지불에 대해 신중하게 생각하십시오. 완벽한 보안은 불가능합니다. 비용이 조금씩 증가하기 시작하면 보안이 조금 강화됩니다. 그러나 실제로 보안을 향상시키지 않는 고가의 조치에 빠지지 않도록주의하십시오 ...


3

또한 하드웨어와 같은 방에있을 기회가있는 사람이라면 누구나 원하는 것을 읽거나 쓸 수 있다고 가정해야합니다. 매우 인내심이 있다면 결국 암호화 된 데이터를 이해할 수 있습니다. 암호화 소프트웨어를 교체 할 수 있으면 사이드 채널 방법이 필요하지 않습니다.


2

예, 루트는 소유자가 할 수없는 경우에도 보호 된 파일을 읽을 수 있습니다 (소유자는 분명히 보호를 제거한 다음 내용을 읽을 수 있습니다).

echo "123" > abc.txt
chmod 000 abc.txt
cat abc.txt

cat : abc.txt : 권한이 거부되었습니다

su
cat abc.txt

123

그러나 일반 설정에서 루트는 NFS ( "루트 스쿼시")와 같은 원격 파일 시스템의 보호 된 파일에 액세스 할 수 없습니다.


NFS 루트 스쿼시에 대해 +1 그러나 root가 NFS 마운트 디렉토리를 소유 한 사용자에게 권한을 부여 할 수있는 한 루트 스쿼시는 여전히 보호되지 않습니다.
Jenny D

2

루트 나 다른 사람이 파일을 읽을 수 없도록하려면 파일을 암호화해야합니다. 파일 암호화는 복잡한 파일 시스템 조작을 처리하지 않으려는 경우 살펴볼 수있는 매우 편리한 옵션입니다.

암호화 옵션 :

  1. 일반 파일을 암호화하고 자신을 제외한 모든 사람이 볼 수 없도록 방지
  2. 셸 스크립트를 암호화하고 암호화 된 버전을 실행 가능하게 만들지 만 모든 사람이 수정하거나 볼 수 없도록합니다.

옵션 1을 선택한 경우 파일을 암호화하는 방법은 다음과 같습니다.

cat (your-file) | openssl aes-128-cbc -a -salt -k "(specify-a-password)" > (your-file).enc

위 파일을 해독하려면 다음과 같은 명령을 실행하십시오.

cat (your-file).enc | openssl aes-128-cbc -a -d -salt -k "(specify-the-password)" > (your-file).dec

-위의 내용을 스크립트에 표시하여 기록에 표시되지 않도록 할 수 있습니다. 또는 " -k "매개 변수를 제거하면 openssl에서 암호를 묻습니다.

옵션 2를 선택한 경우 스크립트를 복사하여 다음 사이트에 붙여 넣기 만하면됩니다.

http://www.kinglazy.com/shell-script-encryption-kinglazy-shieldx.htm

해당 사이트에 스크립트를 제출하면 zip 파일이 즉시 생성됩니다. zip 파일에 대한 링크를 복사 한 다음 UNIX 상자로 이동하여 다음 단계를 수행하십시오.

  1. zip 파일에 대한 wget 링크
  2. 새로 다운로드 한 zip 파일의 압축을 풉니 다
  3. cd / tmp / KingLazySHIELD
  4. ./install.sh / var / tmp / KINGLAZY / SHIELDX- (your-script-name) / home / (your-username) -force

앞의 단계를 완료하면 4 단계에서 설치하도록 지정한 위치 (예 : / home / (your-username) / (your-encrypted-script))에서 암호화 된 스크립트를 실행할 수 있습니다. 쉬

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