1

在各种情况下,我一直在与 umask/权限问题作斗争。我已将 www-data(由 nginx/php-fpm 运行)设置为在 /etc/init/php-fpm.conf 文件中具有 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 的东西真的很复杂的部署。

谢谢你。

4

2 回答 2

0

可能取决于 Unix 的风格,但 HP-UX 的sshd说,当用户通过 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说明的任何内容。

于 2014-10-29T16:24:03.640 回答
0

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

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

于 2017-02-15T21:15:40.860 回答