我问如何管理 /opt 文件夹及其下的文件/文件夹的权限。目前,/opt 文件夹具有默认配置
drwxr-xr-x root root
但是,我使用以下命令更改了其下所有文件夹的权限
chown -R my_user_name:my_user_group /opt
这是输出
$>ls -Al /opt
total 44
drwxr-xr-x 3 tigerjack89 tigerjack89 4096 set 11 17:47 Adobe
drwxr-xr-x 3 tigerjack89 tigerjack89 4096 set 11 17:47 Adobe AIR
drwxr-xr-x 13 tigerjack89 tigerjack89 4096 ott 5 20:48 android-sdk-linux
drwxrwxrwx 8 tigerjack89 tigerjack89 4096 set 27 16:40 axis2-1.6.2
drwxr-xr-x 4 tigerjack89 tigerjack89 4096 set 11 17:47 Balsamiq Mockups
drwxrwxrwx 3 tigerjack89 tigerjack89 4096 lug 6 2013 _--_BRAND_--_
drwxrwxrwx 9 tigerjack89 tigerjack89 4096 ott 5 21:05 eclipse
drwxr-xr-x 3 tigerjack89 tigerjack89 4096 apr 25 16:11 google
drwxr-xr-x 16 tigerjack89 tigerjack89 4096 lug 17 19:50 jd2
drwxr-xr-x 3 tigerjack89 tigerjack89 4096 mag 28 2013 MATLAB
drwxr-xr-x 11 tigerjack89 tigerjack89 4096 set 30 12:50 Modelio 3.1
进行此更改的主要原因是我不想让这些应用程序以超级用户权限运行。但是,我不知道这样做是否正确。例如,要正确运行谷歌浏览器,我必须将 chrome-sandbox 切换回 root:root;此外,如果我尝试运行Android SDK 管理器通过/opt/android-sdk-linux/tools/android
它无法获取一些链接,我必须以超级用户身份运行前面的命令。
那么,我是否必须将所有内容切换回去以防止出现其他问题?
答案1
这里有一个基本的混淆:应用程序由 root 拥有并不意味着它以 root 身份运行根本。
当你运行时cat
:
ls -l /bin/cat
-rwxr-xr-x 1 root root 47904 mar 24 2014 /bin/cat
你以你的用户身份运行它,因为你的用户(和所有其他用户)可以读取和执行它。这就是为什么
cat /etc/passwd-
给出
cat: /etc/passwd-: Permission denied
(因为只有 root 可以读取该文件)。
例外情况是“set-uid” 可执行文件;但如果可执行文件是“set-uid”,那是因为它通常需要它,就像您提到的沙箱一样。如果您不信任 set-uid 可执行文件,唯一的选择就是不运行它。
因此,更改文件的所有权/opt
不会增强安全性,并且可能会破坏各种事情。(1)(2)
也可以看看:如何知道执行某个程序是否需要 root 权限?
(1) 嗯,您可以以“受控”的方式执行此操作,而且这很有用。如果/opt
您拥有它,您可以以您的用户身份而不是 root 身份运行 Calibre 的安装程序;请注意,安装程序,因为程序无论如何都会以您的身份运行。
/opt
(2)你可以使用以下命令找到所有 set-uid(和 set-gid)文件:
find /opt -perm -4000 -o -perm -2000 -print
以防您需要将它们设置回其原始用户(通常是 root,但并非总是如此;不幸的是,没有办法知道在您chown -R
查看备份之前哪个用户是原始用户)。