标签: umask

在 Ubuntu 上运行 PHP 的 www-data 用户的 umask

在 Ubuntu 14.04 中设置一个新的网络服务器并尝试为 PHP 生成的文件争论文件权限。

默认情况下,其中的所有目录和文件/var/www都属于/分组到 www-admin。目录权限为rwxrwsr-x,文件权限为rw-rw-r--

然后,我们将有限数量的目录上的组设置为 www-data - 这样 PHP(通过 Apache)就可以在此位置写入日志和缓存文件。

但是,我无法让 PHP 遵守 umask 0002,因此 PHP 生成的文件只能写入 www-data 用户。这是一个问题,因为我们使用持续集成和其他一些清理流程。

到目前为止,我有:

  • 将 umask 设置为 0002/etc/pam.d/common-session
  • 将 umask 设置为 0002/etc/pam.d/common-session-noninteractive
  • 将 umask 设置为 0002/etc/profile
  • 将 umask 设置为 0002/etc/apache2/envvars
  • 将 umask 设置为 0002/etc/login.defs
  • 使用www-data时将 umask 设置为 0002/etc/passwdsudo chfn -o "umask=002" daemon_username

我仍然被困住了。

我已经停止/启动了该服务,甚至重新启动了计算机 - 没有乐趣。

php file-permissions umask apache-2.4 ubuntu-14.04

6
推荐指数
1
解决办法
2万
查看次数

无法为 Ansible 任务设置 umask

我正在尝试使用特定的(0002)运行任意 Ansible 模块umask

一些 Ansible 模块(例如git)支持umask参数(或mode直接设置权限的参数),但许多模块不支持。
据我所知,Ansible 不会调用 shell(除非您使用该shell模块),因此更改 shell 配置文件中的 umask 是没有用的。
我的方法是更改UMASK​​ 中的行/etc/login.defs,但这对 Ansible 没有影响。仍为umask0022。PAM
似乎配置为包括pam_umask.so.

我知道我可以使用该shell模块作为解决方法(shell: umask 0002; some_command),但这似乎是一个丑陋的黑客。

我如何让 Ansible 尊重我的umask

这是针对 CentOS 8 系统的 Ansible 2.9.9。

linux umask ansible

6
推荐指数
1
解决办法
5277
查看次数

如何在 Fedora 中为 php-fpm 设置 umask

我在 Fedora 19 中找不到在哪里设置 umask(为由 php 脚本创建的文件设置适当的权限)。(具体来说,我希望新文件具有 664 权限)

linux fedora php-fpm umask systemd

5
推荐指数
2
解决办法
8496
查看次数

在 Debian/Ubuntu 上为 php-fpm 设置 Umask 的正确方法

我想为 php-fpm 进程将 umask 设置为 002。我在这里这里读到在 Ubuntu/Debian 上应该通过修改 init 脚本来完成。

但是,我怀疑这是正确的方法。仅考虑 php5-fpm 更新和更新修改 init 脚本的情况。

我还在这里读到,对于 CentOS/Redhat,您可以通过/etc/sysconfig/.

所以我的问题是在 Debian/Ubuntu 上是否有正确的方法来设置 umask 而不修改 init 脚本?如果没有,直接修改init脚本可以吗?

ubuntu debian php-fpm umask

5
推荐指数
1
解决办法
2285
查看次数

openssl 有什么方法可以从一开始就生成具有 400 (-r--------) 权限的私钥吗?

我用来openssl在脚本中生成私钥和 CSR。该脚本需要先生成密钥,然后调用chmod 400 whatever.key将私钥的权限更改为更安全的内容。

有没有办法消除第二步并openssl从一开始就创建具有适当权限的文件?对我来说,让其他进程无法读取私钥(即使是一毫秒)似乎更干净。

您可以umask在脚本中使用来执行类似的操作还是有其他方法?

openssl file-permissions umask

5
推荐指数
1
解决办法
1666
查看次数

如何为 www-data 创建的文件授予默认组写权限?

我们的 apache 作为 www-data:psacln 运行

如果这条线运行;

<?php file_put_contents("./file.txt","");
Run Code Online (Sandbox Code Playgroud)

然后 apache 在没有对该组的写权限的情况下创建这个文件,

-rw-r--r-- 1 www-data psacln    9 2010-02-25 16:17 file.txt
Run Code Online (Sandbox Code Playgroud)

如何设置我们的 ubuntu/apache 以便在网站内创建文件/文件夹时默认授予组写权限?

file-permissions umask apache-2.2

4
推荐指数
1
解决办法
5139
查看次数

rsync pull 无视我的 umask,为什么?

我的umask0002

那么当 I 时rsync -r me@remote:new .,为什么结果组不可写?

drwxrwsr-x 10 root       developers 4096 Aug 22 12:55 .
drwxrwsr-x 12 root       developers 4096 Jul 14 19:05 ..
drwxrwsr-x  3 root       developers 4096 May 16 15:04 old
drwxr-sr-x  4 aaronadams developers 4096 Jun 26 15:17 new
Run Code Online (Sandbox Code Playgroud)

rsync umask

4
推荐指数
1
解决办法
4065
查看次数

SFTP服务器上传的文件权限错误

我一直在试图找出文件权限有什么问题。当我使用 FileZilla 上传文件时,所有文件都获得权限 -rw-r--r--。我希望他们有 -rwxr-xr-x。我曾尝试使用 umask 来修复权限,但出了点问题。我读过您可以像这样使用 umask 更改权限,例如:

在 /etc/ssh/sshd_config 中,更改以下内容:

Subsystem sftp /usr/lib/openssh/sftp-server -u 002
Run Code Online (Sandbox Code Playgroud)

通过此更改,我将使用 -rw-rw-r-- 获取文件。据我所知 0 应该赋予所有权利?但我只得到 rw。

怎么了?我正在使用 Debian。

linux ssh sftp file-permissions umask

4
推荐指数
1
解决办法
3373
查看次数

为什么 umask 是 AND NOT 掩码操作

为什么 umask 是 $perms AND NOT $mask 而不是简单的 $perms AND $mask 呢?

换句话说,为什么里面没有 NOT;为什么它没有实现为和掩码?

比如666和700,给600?

unix umask

3
推荐指数
1
解决办法
449
查看次数

为所有用户设置 umask

我正在尝试将所有用户的默认 umask 设置为 002,包括我的 CentOS 机器上的 root。

根据这个和其他答案,这可以通过编辑/etc/profile. 然而,该文件顶部的评论说:

除非您知道自己在做什么,否则更改此文件不是一个好主意。最好在 /etc/profile.d/ 中创建 custom.sh shell 脚本以对您的环境进行自定义更改,因为这将防止在将来的更新中需要合并。

所以我继续创建以下文件:
/etc/profile.d/myapp.sh
与单行:

umask 002
Run Code Online (Sandbox Code Playgroud)

现在,当我以 root 身份创建一个文件时,该文件天生就有 664 权限,正如我所希望的那样。但是由我的 Apache mod_wsgi 应用程序创建的文件,或使用 sudo 创建的文件,仍然默认为 644 权限......

$ touch newfile(作为根):
结果 = 664(作品)

$ sudo touch newfile
结果 = 644(不起作用)

Apache mod_wsgi 应用程序创建的文件:
结果 = 644(不起作用)

Python 的 RotatingFileHandler 创建的文件:
结果 = 644(不起作用)

为什么会发生这种情况,以及如何确保系统范围内的 664 文件权限,无论创建文件的内容是什么?

linux fedora centos file-permissions umask

3
推荐指数
1
解决办法
1万
查看次数

文件基本权限是 666,为什么这是一个可配置的值?

在网络上的各种文档中,关于 umask 的操作方式,linux/unix 文件的基本权限是 666。

这也与默认 ACL 权限对在默认 ACL 权限下创建的文件强制执行 rw 掩码这一事实有关。

  1. 666的文件基础权限可以改吗?
  2. 为在默认 ACL 下创建的文件生成的掩码的行为似乎模仿了 666(停用执行)的所述文件基础权限,实际上是所述文件基础权限的功能?
  3. 如果#1 是可配置选项,那么配置在哪里?

这至少与以下系统有关:

Ubuntu 12.04.3

但是,我认为这种行为在许多 unix 中很常见。

filesystems access-control-list chmod umask

-1
推荐指数
1
解决办法
1873
查看次数

chmod 不会粘住

我在虚拟专用服务器上使用 CentOS。

当我以 root 身份进入并更改文件夹的 chmod 值时,它会起作用。但是,我放入该文件夹的任何文件都不会继承我设置的 chmod。

这是我使用的:

chmod -Rv 777 files
Run Code Online (Sandbox Code Playgroud)

回报是这样的:

mode of `files' retained as 0777 (rwxrwxrwx)
mode of `files/1344188366-f7cad6aa87685db775817d4168c329ef-AUTO_INSURANCE2.csv'
changed to 0777 (rwxrwxrwx)
Run Code Online (Sandbox Code Playgroud)

好的,所以一个文件改变了。但是,如果我将任何文件放入该文件夹中,它们将具有不同的 chmod 值。如何让 chmod 坚持该目录中的每个文件和文件夹?

我希望默认 chmod 设置的文件正在通过 XHR 上传。IE 从浏览器到服务器的文件上传过程。

如何在 PHP 中的应用程序代码上设置 chmod 级别?

编辑

我想我已经找到了解决问题的合理方法。下面的答案解决了文件权限问题。但是get_current_user()在 php 中运行后,我意识到运行脚本的用户与我正在尝试处理的文件的用户不同。文件用户是 apache,因为那是创建它的人。但是PHP脚本是不同的用户,默认用户。

linux php centos chmod umask

-2
推荐指数
1
解决办法
1876
查看次数