如何设置系统范围的umask?
我正在一个运行Linux(Debian和Ubuntu)的实验室工作。 用户名和组名由NIS和yp处理。 我们有一些普通用户,每个人都可以进行实验,然后我们每个人都有我们自己的用户,另外还有一个我们都是成员的普通用户。
如何使共享/home/
drive(NFS)上的所有文件和目录都是由用户/组读/写(/可执行文件)? 基本上我想要的是
chmod -R 664 /home chgrp -R commongroup /home
或相当于umask 0002
。
但是运行上面的命令只修复文件夹中的当前文件,而umask只能用于单个用户,并且每次用户login时都必须运行。 在.bashrc
文件(这将工作更改模式通过gnome?)。 是否有一个系统范围的命令或设置,我可以用来确保我们的commongroup有写权限的通用文件?
Debian和Ubuntu都带有pam_umask 。 这使您可以在/etc/login.defs
configurationumask,并将它们应用于整个系统,而不pipe用户如何login。
要启用它,您可能需要添加一行到/etc/pam.d/common-session
阅读
session optional pam_umask.so
或者它可能已经被启用。 然后编辑/etc/login.defs
并将UMASK
行更改为
UMASK 002
(默认是022
)。
请注意,用户仍然可以在自己的~/.profile
或~/.bashrc
或类似文件中覆盖umask,但是(至less在新的Debian和Ubuntu安装上),不应该在/etc/profile
或/etc/bash.bashrc
覆盖umask /etc/bash.bashrc
。 (如果有的话,就把它们删除吧。)
首先,确保安装了pam-modules
软件包。 这使得pam_umask
模块可用。 然后确保/etc/pam.d/common-session
包含一行表单
session optional pam_umask.so
以便启用pam_umask
。
现在,根据pam_umask
手册页,通过检查以下每个位置,按照以下顺序确定默认的umask:
-
/etc/pam.d/common-session
硬系统默认设置。 要这样设置,请将上面提到的文件中的行replace为:session optional pam_umask.so umask=002
-
/etc/passwd
单个用户的GECOS字段中的条目将覆盖该特定用户的软系统范围默认值。 使用以下格式的命令创build该条目:chfn --other='umask=002' username
-
/etc/defaults/login
(可能需要创build该文件)中的UMASK=002
forms的一行设置软系统范围的默认值。 -
/etc/login.defs
的UMASK
值。 该值还用于其他内容(计算正在创build的新用户的主目录的权限;有关更多详细信息,请参阅/etc/login.defs
的注释)。 所以最好避免依靠这个来设置常规login的默认umask,以保持独立。
所以在你的情况下,你应该在/etc/defaults/login
configuration这个,如果你希望它可以覆盖个别用户的设置,或者如上所述在/etc/pam.d/common-session
设置if你希望它对所有用户都是一样的。
请注意,即使采用硬默认设置,用户仍然可以在shell提示符或.profile
脚本中使用umask
命令手动覆盖默认的umask
。
另外请注意,传统的Unix方式来设置这个默认是通过添加一个umask
命令到/etc/profile
,这也将工作。 但是在Ubuntu上configuration这样的东西并不是推荐的方式,因为使用脚本和GUI很难可靠地进行pipe理。
为了匹配组权限,在服务器上,设置gid位(“粘性位”之一)可以被视为附加选项。
如果共享目录链接到组 ,启动(使用root): chmod -R 2775 folder_for_the_group可能会很有趣。
对于在该文件夹中创build的任何新文件,创build者将是所有者,但是该组将被自动指定(只要创build者是该组的一部分)。
权利“网格现在显示为-rwxrwsr-x +