如何设置系统范围的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.defsconfigurationumask,并将它们应用于整个系统,而不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:

  1. /etc/pam.d/common-session硬系统默认设置。 要这样设置,请将上面提到的文件中的行replace为:

     session optional pam_umask.so umask=002 
  2. /etc/passwd单个用户的GECOS字段中的条目将覆盖该特定用户的软系统范围默认值。 使用以下格式的命令创build该条目:

     chfn --other='umask=002' username 
  3. /etc/defaults/login (可能需要创build该文件)中的UMASK=002forms的一行设置软系统范围的默认值。

  4. /etc/login.defsUMASK值。 该值还用于其他内容(计算正在创build的新用户的主目录的权限;有关更多详细信息,请参阅/etc/login.defs的注释)。 所以最好避免依靠这个来设置常规login的默认umask,以保持独立。

所以在你的情况下,你应该在/etc/defaults/loginconfiguration这个,如果你希望它可以覆盖个别用户的设置,或者如上所述在/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 +