root
考虑到我不想更改所有者,我该如何让用户在拥有的 /var/www/myapp 文件夹内做任何他们想做的事情?
我已经设置了 TeamCity CI。它在用户帐户下运行teamcity
。
现在我创建了一个作业,将构建结果复制到 /var/www/myapp 文件夹。该文件夹最初由 root 创建并归 root 所有,我不想更改这一点。
因此,我想授予teamcity
用户将所有内容部署到该文件夹中的权限,并使该权限继承到所有现有项目(如果有):
sudo setfacl -dR -m u:teamcity:rwx /var/www/myapp
Getfacl 报告:
getfacl /var/www/myapp
getfacl: Removing leading '/' from absolute path names
# file: var/www/app1
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:teamcity:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
看上去不错,对吧?
但是当我以 teamcity 用户身份运行 cp 任务时,出现错误
cp: cannot create regular file '/var/www/myapp/appsettings.json': Permission denied
我也测试过
sudo runuser -l teamcity -c 'cd /opt/jetbrains/TeamCity/buildAgent/work/f5f9b0bd3b4556c2; cp -Rf appsettings.json /var/www/myapp/'
但是,如果我把 放在sudo
前面cp
,它似乎可以正常工作。但我想避免将 teamcity 添加到 sudoers 中,并sudo
在我的 TeamCity 脚本中到处乱放 s。