root/超级用户可以读取我的读保护文件吗?

Use*_*ser 39 security root permissions

在共享的 unix 主机上,如果我有一个文件sensitive-data.txt 并且我发出:

chmod 600 sensitive-data.txt

root 用户还能读取我的文件吗?具体来说,我想知道将我的密码存储在 mercurial hgrc 文件中是否安全。

更新

决定使用 mecurial 密钥环扩展,因为它非常容易设置:

pip install mercurial_keyring
Run Code Online (Sandbox Code Playgroud)

然后添加到 hgrc:

[extensions]
mercurial_keyring =
Run Code Online (Sandbox Code Playgroud)

但是,我仍然对这个问题的答案感兴趣。

ter*_*don 69

是的,root 可以:

$ 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!
Run Code Online (Sandbox Code Playgroud)

在任何情况下,即使 root 无法以 root 身份读取您的文件,他们始终可以在没有密码的情况下以您的身份登录:

$ whoami
terdon
$ sudo -i
[sudo] password for terdon: 
# whoami 
root
# su - terdon
$ whoami
terdon
Run Code Online (Sandbox Code Playgroud)

因此,root可以使用su(或sudo -iu username)更改为任何其他用户名,然后就可以像您一样做任何事情。


Hau*_*ing 26

始终假设root(以及任何其他用户/进程使用CAP_DAC_OVERRIDECAP_DAC_READ_SEARCH)可以做任何事情,除非 LSM(SELinux、AppArmor 或类似的)阻止他这样做。

这也意味着您应该假设您的所有按键都可以读取。密码并不真正安全。如果您想要严格的安全级别,那么您必须使用一个完全由您控制的系统(甚至不被其他任何人使用)。


Bab*_*ton 12

是的 root 拥有做任何事情的所有权限

在这里你可以看到我创建了一个目录名称 test 并触摸了一个文件 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
Run Code Online (Sandbox Code Playgroud)

然后我使用 000 将文件和目录的权限更改为空权限并列出以查看权限

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
Run Code Online (Sandbox Code Playgroud)

然后即使我可以写入文件并使用 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
Run Code Online (Sandbox Code Playgroud)

即使我可以进入具有 d--------(空)000 权限的目录,甚至 root 也没有读或写权限。

root@system99:/tmp# cd test/
root@system99:/tmp/test# pwd
/tmp/test
Run Code Online (Sandbox Code Playgroud)

即使我可以在更改任何权限后创建文件和文件夹

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
Run Code Online (Sandbox Code Playgroud)

现在在这里我们可以看到 Permission 为 400

root@system99:/tmp/test# chmod 400 babin.txt
Run Code Online (Sandbox Code Playgroud)

列表查看文件权限

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
Run Code Online (Sandbox Code Playgroud)

使用 vim 我在文件 babin.txt 中添加了 1 行

root@system99:/tmp/test# vim babin.txt
Run Code Online (Sandbox Code Playgroud)

但是在 vim 模式下,它会通知我们 W10:警告:更改只读文件但它仍然是可写的

现在我们可以 cat 输出文件

root@system99:/tmp/test# cat babin.txt 
hi this is the write persmission 
this is added while the file have 400 permission
Run Code Online (Sandbox Code Playgroud)

然后我从 root 用户注销到普通用户,并列出了 root 中具有空权限的文件

root@system99:/tmp# exit
exit
Run Code Online (Sandbox Code Playgroud)

导航到 /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
Run Code Online (Sandbox Code Playgroud)

但是在从普通用户读取文件时我们不能

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

sysadmin@system99:/tmp$ cd test/
cat: test/: Permission denied
Run Code Online (Sandbox Code Playgroud)

就是这样,希望你得到了root用户的力量

如果你是普通用户,如果你需要root权限我们需要使用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
Run Code Online (Sandbox Code Playgroud)

sudo 用户与 root 用户的组有协作,所以 sudo 具有 root 权限。

要了解有关 sudo 的更多信息

# man sudoers
Run Code Online (Sandbox Code Playgroud)

在这里我们可以看到他们已经定义为普通用户可以拥有 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
Run Code Online (Sandbox Code Playgroud)

我们完全可以读取或编辑或删除文件,即使 root 没有读取权限。

  • 为什么这个答案的赞成票这么少?它涵盖了几乎所有可能出现在示例中的情况。 (2认同)

von*_*and 9

在传统的 Unix 中,root 是无所不能的。特别是,root 可以读取任何文件,甚至可以窥探您的程序在内部执行的操作。如果数据真的很敏感,请只保留加密副本(为此考虑例如GNU Privacyguard,但之前请仔细阅读其文档),并且切勿在不受您完全控制的机器上对其进行解密。

(偏执是美妙的,它永远不会足够;-)

说真的,请仔细考虑数据泄露可能导致的成本,以及您准备为安全支付多少费用。完美的安全性是不可能的,为了获得更多的安全性,成本开始迅速增加。但是请注意不要落入昂贵的措施的陷阱,这确实不会增加安全性......