![我可以为用户设置读取文件名而不是文件的用户权限吗](https://linux22.com/image/166991/%E6%88%91%E5%8F%AF%E4%BB%A5%E4%B8%BA%E7%94%A8%E6%88%B7%E8%AE%BE%E7%BD%AE%E8%AF%BB%E5%8F%96%E6%96%87%E4%BB%B6%E5%90%8D%E8%80%8C%E4%B8%8D%E6%98%AF%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%A8%E6%88%B7%E6%9D%83%E9%99%90%E5%90%97.png)
在基于 UNIX 的系统中,如何授予用户对文件夹中文件名的读取权限,但不能访问文件本身?
答案1
就像你说的那样,设置对目录(文件夹)的读取访问权限,而不是对文件本身设置读取权限。例如
umask 022 # others have r-x permissions
mkdir /tmp/f
umask 027 # others have --- permissions
echo hello > /tmp/f/1
ls -la /tmp/f
给出
total 64
drwxr-xr-x 2 user user 4096 Feb 5 21:27 .
drwxrwxrwt 370 root root 53248 Feb 5 21:27 ..
-rw-r----- 1 user user 6 Feb 5 21:27 1
现在其他人可以执行ls /tmp/f
并查看该1
文件,但无法读取它。
答案2
通过在目录上设置读取 ( r
) 位,您可以访问该目录内文件的文件名,但您将无法访问文件或进入该目录,除非在目录上也设置了cd
执行 ( ) 权限。x
目录。
换句话说:撤销这些目录上的写入和执行位(至少chmod o=r dirname
)。
有关的: