我想访问c,在那里“a”是受限制的。
原因是我想通过a中的符号链接共享几个文件。
a <- drwx------
└ b <- drwxr-xr-x
└ c <- drwxr-xr-x
ln -s ../a/b/c/some_files ../a/我知道我需要所有的a、b、c +x和c +r,但它不是那样工作的。现在a是drwx x x x
我如何实现我的目标?谢谢!
发布于 2020-12-23 20:57:35
就您的意图和目的而言,您试图做的事情在当前的权限和所有权下是不可能的。这可以通过绑定挂载来完成,但是符号链接就不能工作了。
您已经知道,除了所有者(和root用户)之外,任何人都不能遍历a,这意味着其他任何人也不能访问b和c,所以每个人都可以读取和遍历它们并不重要。
您可以做的唯一一件事是将a的权限更改为755,或者如果您不希望给每个人提供访问权限,则创建一个组并只添加您想要访问的组,将其设置为a的组,然后将a的权限更改为750。
发布于 2020-12-24 02:23:44
是的,有可能:您需要创建到a/b/c/some_files的硬链接。然后,您可以从中间目录中完全删除所有"o“权限!
顺便说一下,在创建链接时指定绝对路径是最安全的。
# whoami
root
# mkdir -p /a/b/c
# touch /a/b/c/d
# chmod o= /a/
# chmod o= /a/b/
# chmod o= /a/b/c/
# ls -ld /a/
drwxr-x--- 3 root root 15 Dec 23 20:45 /a/
# ls -ld /a/b/
drwxr-x--- 3 root root 15 Dec 23 20:45 /a/b/
# ls -ld /a/b/c/
drwxr-x--- 2 root root 15 Dec 23 20:45 /a/b/c/
# ls -l /a/b/c/d
-rw-rw-rw- 1 root root 0 Dec 23 20:46 /a/b/c/d
# ln -s /a/b/c/d /softlink-to-d
# ls -l /softlink-to-d
lrwxrwxrwx 1 root root 8 Dec 23 20:47 /softlink-to-d -> /a/b/c/d
# ln /a/b/c/d /hardlink-to-d
# ls -l /hardlink-to-d
-rw-rw-rw- 2 root root 0 Dec 23 21:09 /hardlink-to-d# su - postgres -c 'touch /a/b/c/d'
touch: cannot touch ‘/a/b/c/d’: Permission denied
# su - postgres -c 'touch /softlink-to-d'
touch: cannot touch ‘/softlink-to-d’: Permission denied
# ls -l /a/b/c/d
-rw-rw-rw- 2 root root 0 Dec 23 20:46 /a/b/c/d
### Note, mtime still unchanged...
# su - postgres -c 'touch /hardlink-to-d'
# ls -l /a/b/c/d
-rw-rw-rw- 2 root root 0 Dec 23 21:13 /a/b/c/d
### ...finally, mtime changed.https://unix.stackexchange.com/questions/625901
复制相似问题