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


35

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

chmod 600 sensitive-data.txt

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

更新

决定使用Mercurial密钥环扩展名,因为它超级容易设置:

pip install mercurial_keyring

然后添加到hgrc:

[extensions]
mercurial_keyring =

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

Answers:


62

是的,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!

无论如何,即使root无法以root身份读取您的文件,它们也可以始终以您的身份登录而无需输入密码:

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

因此,root可以使用su(或sudo -iu username)更改为任何其他用户名,然后就可以执行任何操作,就好像他们是您一样。


23

总是假定root(与其他任何用户/进程CAP_DAC_OVERRIDECAP_DAC_READ_SEARCH)可以做一切从这样做,除非LSM(SELinux的,AppArmor的或类似的)阻止了他。

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


这实际上是我当前正在实施的功能的问题。由于它们未指定目标,因此您需要具有类型强制性以取代功能(例如SELinux),以防止这种情况发生。CAP_DAC_OVERRIDE授予一个用户一口气,可以使他们拥有覆盖系统上任何其他安全机制所需的所有特权。CAP_DAC_OVERRIDE基本上是CAP_DO_WHATEVER_YOU_WANT
布拉奇利2014年

10

是的,root拥有执行任何操作的所有特权

在这里您可以看到我已经创建了目录名称测试并触摸了文件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将文件和目录的权限更改为空权限,并列出以查看权限

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也没有读取或写入权限。

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

现在在这里我们可以看到Permission with 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中添加了1行

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

然后我从root用户注销为普通用户,并列出了在root用户中也具有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

就是这样,希望您拥有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

Sudo用户与root用户的组有合作关系,所以sudo拥有root特权。

进一步了解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

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


2
为什么这个答案投票很少?它涵盖了示例中几乎所有可能发生的情况。
Foo Bar

8

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

(偏执狂是美好的,永远都不够;-)

认真考虑一下数据泄漏可能造成的成本,以及因此准备为安全支付的费用。完美的安全性是不可能的,要获得更多的安全性,成本就会迅速增加。但是请注意不要陷入昂贵措施的陷阱中,这实际上并不会增加安全性...


3

还应该假设,任何有机会与硬件位于同一房间的人都可以读取或写入他们想要的任何东西。如果他们很有耐心,他们最终可以理解加密的数据。如果它们可以代替加密软件,则它们不需要旁道方法。


2

是的,即使所有者不能(即使所有者显然可以删除保护然后读取内容),root也可以读取受保护的文件:

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

猫:abc.txt:权限被拒绝

su
cat abc.txt

123

但是,在正常设置下,根目录无法访问NFS等远程文件系统上的受保护文件(“根目录”)。


+1表示NFS根壁球。但是,只要root可以拥有拥有NFS挂载目录的用户,root南瓜仍然无法保护自己。
珍妮·D

2

为了防止root或任何人都能读取您的文件,您需要对它们进行加密。如果希望避免不得不处理复杂的文件系统操作,则文件加密是一种非常方便的选择。

加密选项:

  1. 加密普通文件并阻止除您自己以外的所有人查看它们
  2. 加密Shell脚本并使加密版本可执行,但是还会阻止每个人修改或查看它们

如果选择选项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. wget到zip文件的链接
  2. 解压缩新下载的zip文件
  3. cd / tmp / KingLazySHIELD
  4. ./install.sh / var / tmp / KINGLAZY / SHIELDX-(您的脚本名称)/ home /(您的用户名称)-force

一旦完成上述步骤,就可以从在第4步中指定要安装加密脚本的任何地方运行加密脚本。即/ home /(您的用户名)/(您的加密脚本)。 SH

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.