如何找出为用户设置umask的位置?

时间:2014-10-29 16:06:46

标签: ssh permissions ansible umask

在各种情况下,我一直在与umask /权限问题争论一段时间。我已经在/etc/init/php-fpm.conf文件中设置了www-data(由nginx / php-fpm运行)以获得002的umask,而我的部署用户在/ home / deployer /中也有002的umask .bashrc中。应用程序文件都具有0660权限(目录为0770),因此它们都可以读/写它们(部署者的主要组是www-data)。但是我一直遇到这种umask没有得到尊重的情况,文件设置为644或640。

我目前的情况是使用ansible脚本以root身份进行SSH连接,选项为:

sudo: yes
sudo_user: deployer

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

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

谢谢。

2 个答案:

答案 0 :(得分:0)

可能取决于Unix的风格,但HP-UX sshd的{​​{3}}页面表示当用户通过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,您可以通过包含命令

sftp传输的文件设置系统范围的设置。
SftpUmask 002
文件/opt/ssh/etc/sshd_config中的

sshd_config所说的人工谱页。

答案 1 :(得分:0)

我可以通过关注deployer在Ubuntu Server 16.04上获得与this page一起使用的默认umask。简而言之,您需要修改/etc/pam.d/common-session并确保有一行显示session optional pam_umask.so umask=022(或您想要的任何umask)。这将为所有连接设置默认的umask,无论它们是否是交互式的。

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