使用 setfacl 授予用户对 root 拥有的文件夹的完全权限

使用 setfacl 授予用户对 root 拥有的文件夹的完全权限

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。

相关内容