授予每个用户对文件夹的只读访问权限

授予每个用户对文件夹的只读访问权限

我是目录 的所有者mydir
我没有 root 访问权限。
我该如何授予仅有的授予某人读取权限,以便他们可以创建本地副本mydir

编辑:ChatGPT 告诉我chmod -R o+r mydir应该可以工作。这是正确的吗?

答案1

ChatGPT 是错误的,因为它无法理解单词对不同的人有不同的含义。

阅读的常识意义使用权与 read 的技术含义不同权限

令人惊讶的是,访问目录取决于执行, 不是, 权限。缺少目录读取权限只会阻止列出未知内容,而不会阻止访问这些内容。

因此,除了添加对文件和目录的读取权限之外,还需要添加大写字母以X仅为目录(而不是文件)添加执行权限:

chmod -R go+rX mydir

办法-R递归,它适用于其中的所有文件和目录。

添加go+这些权限每一个用户(g包括同一团体作为文件,以防万一)。


但这可能还不够。

要共享的目录的所有父目录也需要执行权限才能访问内部目录,在这种情况下,我假设该目录位于主目录中的某个位置。

如果不允许访问您的家(目录),则不能允许访问您的橱柜,尽管您可能已经允许这样做。

锁定所有其他门(文件和其他子目录的读取、写入和执行权限),然后你把灯关掉(该目录的读写权限),但通过猜测文件名,即使人们无法偷看房间内部,他们仍然可以从不同的错误信息中摸索着走过走廊:

$ ls parent_dir
ls: cannot open directory 'parent_dir': Permission denied
$ cat parent_dir/exists
cat: parent_dir/exists: Permission denied
$ cat parent_dir/doesn\'t                                                                                                
cat: "parent_dir/doesn't": No such file or directory

即使你小心地锁上了所有内门,你稍后运行的程序也可能会创建新的未锁的门。

所以我不确定你是否想这么做,但要使内部目录可访问每一个用户:

chmod go+X mydir/..
chmod go+X mydir/../..

等等,直至包括/home/$USER

你可能想要什么

如果你现在可能只想信任特定用户而不是所有人,那么你可以使用 ACL 创建特殊情况:

setfacl -m OTHER_USERNAME:X mydir/..
setfacl -m OTHER_USERNAME:X mydir/../..

等等,再次直至并包括/home/$USER

您甚至可以在复制完成后立即删除它,方法是:

setfacl -x OTHER_USERNAME mydir/..

ETC。

但是如果你真的只是想允许某人对它进行一次性复制,并且目录不是太大,那么将它复制到/var/tmp,运行chmod -R go+rX /var/tmp/mydir,然后在其他用户完成复制后删除它会更容易。

答案2

ls -l mydir可以显示文件夹的当前权限设置。

第一列显示权限,看起来应该类似于drwxr-----
第一个d表示它是一个目录。
接下来rwx是所有者的权限。
之后是组,最后三个符号代表所有其他用户的权限。r代表读取、w写入和x执行权限。

如果您现在想要删除写入和执行权限(如果存在)并为所有其他用户(不在您的组中)递归添加目录和所有子文件的读取权限,您可以执行chmod -R o=r mydir。 如果您还希望您的组具有只读权限,请使用chmod -R g=r,o=r mydir

相关内容