2014-10-29 29 views
1

在各种情况下,我一直在与umask /权限问题争斗一段时间。我已经在/etc/init/php-fpm.conf文件中设置了www-data(由nginx/php-fpm运行)以获得002的umask,并且我的部署者用户也在/ home/deployer/.bashrc中。应用程序文件都具有0660权限(0770用于目录),以便它们都可以读取/写入它们(部署者的主要组是www-data)。但是我一直运行到哪里这个umask是没有得到兑现的情况下,并且文件被设置为644或640如何找出为用户设置umask的位置?

我现在的情况是使用ansible脚本根ssh方式连接的时候,用的选项:

sudo: yes 
sudo_user: deployer 

使用ansible创建的文件获得644的文件许可权。如何查看umask设置的位置以及添加umask的位置?

其次是没有更好的部署方式?我想完全避免这个问题,并以www数据用户的身份完成所有部署工作,但显然这是一个安全问题。这umask的东西是非常复杂的部署。

谢谢。

+0

我很好奇,如果你曾经找到解决方案(2年后)。我有同样的问题,并尝试了下面发布的唯一建议,但它也不适用于我。 – fronzee 2017-02-15 20:13:47

回答

0

可能会依赖于Unix的什么味道,但sshd为HP-UX说,当用户通过SSH成功​​登录,其中一个步骤是:

Reads the file ~/.ssh/environment, if it exists, and users are 
allowed to change their environment. See the 
PermitUserEnvironment option in sshd_config(5). 

所以,你可能想尝试创建文件/home/deployer/.ssh/environment并在其中设置umask。

这并不可能适用于您的情况,但对于SFTP,您可以通过包括文件/opt/ssh/etc/sshd_config或任何你的男人在命令

SftpUmask 002 

有通过sftp传输文件的系统范围的设置页面为sshd_config说。

+1

嗨,我使用Ubuntu 14.04。为根用户和部署者用户创建umask并将其添加到环境文件中,并没有改变任何东西= \。 Sftp不适用于我的情况。 – 2014-10-29 16:48:12

0

在Ubuntu Server 16.04上,我能够通过以下this page获得默认umaskdeployer一起使用。总之,你需要编辑/etc/pam.d/common-session,并确保有一行说session optional pam_umask.so umask=022(或任何你想要的umask)。这将为所有连接设置默认的umask,无论它们是否为交互式。

免责声明:这可能会在所有用户的系统范围内产生影响。我还没有广泛测试这个解决方案。