相关疑难解决方法(0)

在Linux中的目录下设置新创建的文件和子目录的默认权限?

我有一堆长时间运行的脚本和应用程序,它们将输出结果存储在少数用户之间共享的目录中.我想要一种方法来确保在此共享目录下创建的每个文件和目录都自动拥有u=rwxg=rwxo=r权限.

我知道我可以使用umask 006我的各种脚本,但我不喜欢这种方法,因为许多用户编写自己的脚本,可能忘记自己设置umask.

我真的只是希望文件系统设置新创建的文件和目录,如果它在某个文件夹中,则具有一定的权限.这是可能吗?

更新:我认为可以使用默认ACL功能使用POSIX ACL来完成,但目前这一切都在我的脑海中.如果任何人都可以解释如何使用默认ACL,它可能会很好地回答这个问题.

linux permissions acl umask

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

如何在ubuntu上追踪php5-fpm umask设置的来源

我真的很感激在Ubuntu上追踪和诊断umask问题的任何帮助:

我正在php5-fpm使用Apache 运行proxy_fcgi.该进程使用0022的umask运行(通过让PHP将结果发送umask()到文件[结果为'18'== 0022]确认).我想将其更改为0002,但无法追踪umask的来源.

使用umask 0002设置Apache,作为测试,如果我禁用proxy_fcgi并运行上面的测试,我会得到一个u + g具有rw访问权限的文件(文件内容确认umask为'2'== 0002).

如果我sudo -iu fpmuser和运行umask结果都是0002.

系统信息:

  • PHP:5.5.3-1ubuntu2.1
  • Apache:2.4.6
  • Ubuntu:13.10
  • PHP-PFM使用TCP端口列出(因为Unix端口尚未工作/支持)

到目前为止,我已经尝试了以下(每个系统重启和重新测试后):

  • 添加umask 0002到开头/etc/init.d/php5-fpm
  • 添加--umask 0002start-stop-daemon调用中/etc/init.d/php5-fpm
  • 添加umask 0002到用户.profile的家中fpm

有些东西显然正在调整php-fpm进程的umask - 所以,我怎样才能开始跟踪强制umask 0022进入php-fpm进程的内容?

编辑(1):

  • 调整系统范围的umask via /etc/login.defs(请参阅如何设置系统范围的umask?)会影响其他地方的umask(例如,sudo现在的comannds 有一个0002的umask),但是php-fpm仍会创建一个umask为0022的文件.请注意,我验证了session optional pam_umask.so也出现了/etc/pam.d/common-session-noninteractive,我测试了002和0002的umasks.

编辑(2):

  • 我已经能够使用nginx和复制问题php5-fpm(使用unix套接字设置为监听模式'0666').
  • 我很想跟踪umask的来源,但我会选择某种方式来强制它达到我想要的效果.
  • 我应该补充说,第一次测试是在Amazon Ubuntu 13.10映像上完成的.我在"编辑2"中的测试,在虚拟机中使用Ubuntu13.10服务器ISO设置的副本完成.所有安装都是通过apt-get完成的,而不是通过下载源和构建来完成的.

编辑(3): …

php apache ubuntu umask

13
推荐指数
2
解决办法
9766
查看次数

Git无法解释地更改单个文件的权限

我是唯一参与这个git项目的人.每次我在我的本地Ubuntu存储库编辑文件,然后推送到Bitbucket并拉到我的生产存储库,git将编辑的文件更改为-rwxrwxr-x 775.Apache不喜欢这个.

本地系统:Ubuntu Linux上的git版本1.8.1.2

制作系统:CentOS/Red Hat Linux上的git版本1.7.12

当我将权限修复为755时,请执行

git diff
Run Code Online (Sandbox Code Playgroud)

要么

git diff -p
Run Code Online (Sandbox Code Playgroud)

它没有任何表现.

在我的本地存储库中,权限是755,文件全部由haws拥有.在我的生产存储库中,所有其他权限保持在755,并且包括contact.php在内的所有文件都归我的用户名所有.

在本地和生产存储库中,我更改了core.filemode,试图阻止此行为,

core.filemode = false
Run Code Online (Sandbox Code Playgroud)

我在合作项目中遇到过这样的谜团,所以我真的很想了解发生了什么.

  1. 我该怎么做才能看到git更改此文件权限的原因?
  2. 我怎么能让git停止改变呢?

我也尝试在这里找到解决方案:防止Git更改权限拉取无效.

我的最终解决方案(感谢VonC的指导):

  1. 感谢VonC的好解释,我很勇敢地发现每次登录我的服务器时,我的umask都会回到0002.所以我创建了一个用户启动脚本(.bashrc或我的情况.bash_profile).设置的Linux主机

    umask 0022

或使用符号表示法(稍微增加值)

umask u=a,g-w,o-w 
Run Code Online (Sandbox Code Playgroud)

要么

umask u=a,go-w 
Run Code Online (Sandbox Code Playgroud)

(允许用户拥有所有权限,禁止组和其他人的写权限)

这解决了我的问题.

  1. 我以前设置git config core.sharedRepository为true,但这不是我的问题,一旦问题解决,我就删除了设置.

git file-permissions chmod

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

用于sudo和apache的linux umask

我想为所有用户(在Ubuntu中)制作002系统范围的umask.我设法使用@ephemient提供的说明为所有普通用户这样做(来自这篇文章,谢谢!).但是我还有两个问题.

首先,当sudoing时,root用户似乎遵循它自己的设置,制作具有644(而不是664)权限的文件.

其次,apache用户(www-data)似乎也遵循它自己的设置(root使用的相同?),制作权限为644(而不是664)的文件.我不喜欢把umask 002/etc/apache2/envvars,我宁愿改变设定分配002的umask首先到Apache.

我怎样才能解决最后两个问题?

linux ubuntu umask

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

标签 统计

umask ×3

linux ×2

ubuntu ×2

acl ×1

apache ×1

chmod ×1

file-permissions ×1

git ×1

permissions ×1

php ×1