问题描述
我和我的一位同事分享了我的个人Ubuntu PC。
我创建了另一个用不同密码的用户(他当然知道)并将其添加到sudoer
列表中。
鉴于单个Ubuntu系统中有两个sudo
用户:
-
这些用户中的任何私有文件(由所有者和权限指定)是否仍然是私有的?
-
我可以通过
sudo
命令修改同事的文件,甚至是sudo su
,反之亦然?
最佳解决思路
如果你的同事在sudoers列表中,如果他想要的话,他就像你一样多(并且他也可以冒充你),然后他就可以看到一切。
如果您想要用户隐私,这是您可以拥有的最糟糕的设置。您应该明确地了解Linux上的用户管理是如何工作的。以下是您可以从以下几篇文章开始:
即便如此,如果某人有物理访问相关机器,没有隐私,他可以在启动时放入root shell并查看所有内容,如果这将受到密码保护,他仍然可以使用USB棒和以这种方式进去。
在这种情况下,最好的事情是适当的用户管理,root用户密码,加密驱动器和/或加密主目录。
次佳解决思路
一个简单的替代方法是将您的私人数据保存在加密文件中(可以是您加密的tar存档文件,例如使用gpg加密)。您必须记住在查看之后覆盖并删除明文文件。
共享计算机和sudo(root)访问权限的所有人的另一种选择是使用加密的home和加密交换。
但是,如果您同时登录,这将无济于事。事实上,即使使用加密的家庭,您也必须重新启动计算机才能以明文格式删除文件。
通常,安全性非常困难,具有加密磁盘的单个用户系统(带加密的LVM)将是保证安全的最简单方法。
-
不要将敏感的私有数据存储在共享计算机中
-
不要将私人数据存储在属于您雇主的计算机中
第三种解决思路
一旦你能够获得root
权限(例如使用sudo
,su
等)。您可以完全访问系统上的每个文件。
因此,具有sudo
权限并且可以使用sudo bash
成为root
的用户都可以完全访问系统上的每个文件
根据SE-Security
中的this Q&A:您可能可以修改SELinux
(不是Ubuntu)以限制root
访问:
If your question is “can I easily and safely do this now?” the answer is no. If your answer is “I am prepared to learn about SELinux, get down and dirty with my distribution and put up with quite a lot of things not working” the answer is it is possible to constrain root much more than your average install. That said, this does not in any way make you invulnerable to exploits – it does not make it impossible for a user to circumvent this extra access control either in software or physically.
第四种思路
为了使其他答案已经完全清楚地表明:其他用户不仅“像你一样根”(Videonauth的答案),他们也可以成为你(切换到你的用户帐户)。
这是因为使用超级用户权限,可以切换到任何帐户。
你可能知道
sudo su
如果root没有设置密码,这是打开root shell的一个选项(所以你不能直接以root用户身份登录)。
su
是”switch user”的缩写。用户切换到了什么用户?没有说明,对吧?但是从手册页中我们可以了解到:
Invoked without a username, su defaults to becoming the superuser.
所以这有效
sudo su root
如果您没有将root
重命名为其他内容。
如果您只是运行su <someuser>
,系统将提示您输入密码。因此,如果您运行su root
,则会提示您输入root密码(默认情况下Ubuntu中不存在该密码,因此您无法登录(请注意,未设置密码意味着无法通过密码登录)不同于密码是空字符串))。但是,如果您运行sudo su root
,则会提示您输入自己的密码。而且你只是被sudo
提示。一旦sudo
收到您的密码,它就会以超级用户权限运行它作为参数接收的命令。由于可以在拥有超级用户权限时切换到任何帐户,因此不需要密码提示。
所以通过执行
sudo su <yourusername>
,另一个sudoer可以像你一样登录。
第五种思路
可以通过编辑sudoers文件(/etc/sudoers
)来限制可以使用sudo权限升级运行的程序。
有关详细信息,请参阅this question on Super User的已接受答案,以及here on Unix and Linux。有关限制/etc/sudoers
权限的建议,请参阅answer by slm。
同时通过键入man sudoers
检查sudoers man
页面,不要忘记测试它。请记住,通过不受限制的sudo访问,用户可以完全模拟任何其他用户。例如,如果用户foo
要运行该命令
sudo exec su - bar
然后,他们就可以充当用户bar
,拥有该用户的所有权限。
参考资料