我创建了一个文件夹 /root/bin ,用于存储我的自定义脚本。我们的想法是任何用户都可以访问这些脚本,因此我将用户添加到“用户”组中。我给了该组对该文件夹以及该文件夹中所有文件的rwx权限。我也设置了该组的所有者。但是,我仍然无法以任何非 root 用户身份访问这些脚本。请帮忙!
答案1
根据文件系统层次结构标准,/usr/local
目录及其子目录(例如bin
子目录)用于“本地数据,特定于该主机”,而目录则/root
是root用户的主目录。
root 的主目录通常应该是所有普通用户都无法访问的。
管理员可以通过 root 帐户在 中安装本地脚本/usr/local/bin
,这将使所有拥有此目录的用户都可以访问它们PATH
(或者知道如何在给定绝对路径名的情况下执行它们)。
除了维护脚本的用户(可能是 root 用户)之外,任何人都不能写入这些脚本。这意味着这些文件的所有权应该是root
,并且它们很可能也属于该root
组,除非您有一个特殊的可执行文件组,例如bin
或wheel
(如在某些 BSD 系统上找到的;检查例如/bin
和下的其他可执行文件/usr/bin
)。权限应该是r
针对x
所有人的,也可能是w
针对所有者的(除非可写副本保存在其他地方并且已安装版本是所有人都不可写的)。
这意味着使用 来设置文件的权限755
或,具体取决于文件所有者是否可写 ( ) 或不可写 ( )。555
chmod
755
555
答案2
FORMAT="ERROR: path: '%s' group name: '%s' group perm: '%s'\n"
find /root/bin -perm -g+rX -printf "%p %g %M\n" | \
while read path group perm; do
if ! [[ ${group} == "users" && ${perm:4:3} == "r-x" ]]; then
printf "${FORMAT}" ${path} ${group} ${perm:4:3}
fi
done
ERROR: path: '/root/bin' group name: 'root' group perm: 'r-x'
ERROR: path: '/root/bin/script' group name: 'root' group perm: 'r-x'
它有什么作用?它列出了所有路径/root/bin
并检查组是否为“users”并且许可是否为“rx”。