我正在尝试创建符号链接,但权限被拒绝。我该如何找出原因?
ln -nfs /home/deploy/foo/shared/config/nginx.conf /etc/nginx/sites-enabled/foo
ln: failed to create symbolic link `/etc/nginx/sites-enabled/foo': Permission denied
visudo
这是我的文件的内容:
# This file is managed by Chef.
# Do NOT modify this file directly.
Defaults !lecture,tty_tickets,!fqdn
# User privilege specification
root ALL=(ALL) ALL
deploy ALL=(ALL) ALL
# Members of the group 'sysadmin' may gain root privileges
%sysadmin ALL=(ALL) ALL
# Members of the group 'sysadmins' may gain root privileges
%sysadmins ALL=(ALL) ALL
我以名为 deploy 的用户身份登录,我在该sysadmins
组内。
whoami
deploy
cat /etc/group
deploy:x:1000:
sysadmin:x:2300:deploy
答案1
正如我们在评论中讨论的那样:
您应该ln
使用以下命令运行命令sudo
:
sudo ln -nfs /home/deploy/foo/shared/config/nginx.conf /etc/nginx/sites-enabled/foo
现在,如果由于 Capistrano 3(我不知道)而无法做到这一点,那么您必须授予您的deploy
用户对文件夹的写权限/etc/nginx/sites-enabled
。
答案2
拥有使用 sudo 的权限并不会自动以 root 身份运行所有命令。这会消除直接使用 root 帐户的机器人的所有安全优势。
您需要通过 sudo 运行该命令,或者更改权限以便您的常规用户帐户可以在那里写入。