【问题标题】:Cannot change directory into a symbolically linked directory无法将目录更改为符号链接目录
【发布时间】:2019-09-06 07:17:37
【问题描述】:

我的 Ubuntu 18.04 服务器上有一个目录

它归 www-data 所有

/var/www/html/svg

drwxrwxr-x  2 www-data www-data  20K Apr 16 05:48 svg

作为“ubuntu”用户,我从 /tmp 创建了一个指向该目录的符号链接,因为我需要一个 Web 服务来访问该目录。这按预期工作。

pwd
/tmp

lrwxrwxrwx  1 ubuntu   ubuntu     17 Apr 15 09:11 svg -> /var/www/html/svg

但是,如果我以服务器上的任何用户身份登录,然后尝试 cd 进入符号链接目录

cd /tmp/svg

我收到以下错误:

-bash: cd: /tmp/svg: Permission denied

如果我以任何用户身份 cd 进入实际目录 /var/www/html/svg,我可以毫无问题地做。

令人担忧的是,这甚至会以 root 身份发生。

这可能是什么原因造成的?我希望能够访问此符号链接,而不必显式 cd 到目录。

【问题讨论】:

  • /var/ww/html/svg 是否以任何方式安装? /var/var/www/var/www/html 的权限是什么? /tmp的权限是什么?

标签: bash ubuntu permissions file-permissions


【解决方案1】:

您可以更改符号链接的权限,例如:

chmod -h 777 /tmp/svg  

或所有者,以匹配您指向的实际目录:

chown -h www-data:www-data /tmp/svg

【讨论】:

  • chmod -h is not allowed(该选项不在我的 chmod 版本中)
  • 我已经运行了 chown -h www-data:www:data /tmp/svg 但我仍然无法以 root 身份进入它
【解决方案2】:

尝试更改符号链接所有权以匹配工作案例

chown -h www-data:www-data /tmp/svg

正如 cmets 中所指出的,更新了答案以传递 -h 标志以避免链接取消引用。

-h, --no-dereference 影响每个符号链接而不是任何引用的文件(仅在可以更改符号链接所有权的系统上有用)

【讨论】:

  • 这需要 -h 标志,否则会更改链接指向的目录的所有者
猜你喜欢
  • 2012-09-20
  • 2019-07-18
  • 2019-08-26
  • 2013-07-28
  • 2011-11-08
  • 2020-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多