为什么setfacl不能在docker容器中工作?

我在Docker容器中遇到ACL问题。

如下所示,我在“/ opt / transfer_station / webapp / logs”上为用户“ts”设置了读/写权限。 这适用于文件夹“/ opt / transfer_station / webapp / logs”,但不适用于文件/opt/transfer_station/webapp/logs/debug.log。 为什么它不起作用?

[root@lx-ts logs]# setfacl -Rdm u:ts:rw,g:ts:rw /opt/transfer_station/webapp/logs [root@lx-ts logs]# echo $? 0 [root@lx-ts logs]# getfacl /opt/transfer_station/webapp/logs getfacl: Removing leading '/' from absolute path names # file: opt/transfer_station/webapp/logs # owner: apache # group: apache user::rwx group::rx other::rx default:user::rwx default:user:apache:rw- default:user:ts:rw- default:group::rx default:group:apache:rw- default:group:ts:rw- default:mask::rwx default:other::rx [root@lx-ts logs]# getfacl /opt/transfer_station/webapp/logs/debug.log getfacl: Removing leading '/' from absolute path names # file: opt/transfer_station/webapp/logs/debug.log # owner: root # group: root user::rw- group::r-- other::r-- [root@lx-ts logs]# whoami root 

顺便说一句。 我试图用docker选项OPTIONS =' – storage-driver = devicemapper',没有它。 SELinux处于宽容模式,因此不会阻塞任何东西。

如果我连接到容器,在文件夹中创build一个testing文件,ACL将按照我的预期inheritance:

 [root@lx-ts transfer_station]# touch webapp/logs/test [root@lx-ts transfer_station]# getfacl webapp/logs/test # file: webapp/logs/test # owner: root # group: root user::rw- user:apache:rw- user:ts:rw- group::rx #effective:r-- group:apache:rw- group:ts:rw- mask::rw- other::r-- 

我正在运行Centos 7.1和Docker 1.7.1版,build 446ad9b / 1.7.1。

我也将CAP_FOWNER添加到容器中(使用–cap-add = FOWNER),但是这并不能解决问题。

有任何想法吗?

得到它了:

 setfacl -Rm u:ts:rw,g:ts:rw /opt/transfer_station/webapp/logs 

setfacl -d仅用于目录。 我不得不删除它,使其工作:/