AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 467582
Accepted
eng3
eng3
Asked: 2018-09-08 08:37:39 +0800 CST2018-09-08 08:37:39 +0800 CST 2018-09-08 08:37:39 +0800 CST

如何覆盖特定文件夹的所有用户的 umask 设置?

  • 772

我正在运行 RHEL6。我要求在我的 /etc/bashrc 中有“umask 077”,我不允许更改。我们有一个指定用于组协作的文件夹,我们希望同一组中的每个人都能够 rwx。因此,用户必须手动或在本地 .bashrc 文件中设置“umask 002”,或者记得使用 chmod。他们经常忘记并且管理员被要求“修复”权限,因为文件的所有者不可用。

有没有办法强制文件夹“umask 002”?我读过我应该使用 setfacl 但我认为 umask 会覆盖它。

rhel permissions
  • 3 3 个回答
  • 4945 Views

3 个回答

  • Voted
  1. Best Answer
    Lewis M
    2018-09-08T08:56:35+08:002018-09-08T08:56:35+08:00

    请参阅如何为特定目录中创建的文件强制组和权限?

    我测试的是创建一个目录/var/test。我将组设置为 tgroup01。我确保在 /var/test 下创建的任何内容都将设置为 tgroup01 组。然后,我确保 /var/test 下任何内容的默认组权限为 rwx。

    sudo mkdir /var/test
    sudo chgrp tgroup01 /var/test
    sudo chmod 2775 /var/test
    sudo setfacl -m "default:group::rwx"
    

    如果我然后创建目录 foo 或触摸文件等等,它们具有正确的权限

    ls -al /var/test
    
    drwxrwsr-x+  3 root   tgroup01  .
    drwxr-xr-x   5 root   root      ..
    -rw-rw-r--   1 userA  tgroup01  blah
    drwxrwxr-x+  2 userA  tgroup01  foo
    
    • 5
  2. ivanivan
    2018-09-08T15:04:49+08:002018-09-08T15:04:49+08:00

    setgid 位对您没有帮助 - 它只影响所有权,而不影响所有者可以对文件执行的操作。

    如果共享存储区域安装在不同的文件系统上,可能会起作用。您需要让管理员使用明确设置的正确 umask 安装它,以便您可以共享文件。或者,这些文件是由仅限内部的 samba 共享挂载的——有点矫枉过正,但 samba 很容易允许特定的组和权限模型与操作系统提供的相比。

    简而言之——我们中的一些人认为“ITS”中的“S”代表服务。如果他们需要 077 umask,那么他们需要想出一种有效的方式来为您共享文件。

    (并且对于 setgid 位不起作用)

    ivan@darkstar:~$ umask
    0002
    ivan@darkstar:~$ 
    ivan@darkstar:~$ umask 077
    ivan@darkstar:~$ umask
    0077
    ivan@darkstar:~$ mkdir te
    ivan@darkstar:~$ ls -ld te
    drwx------ 2 ivan ivan 4096 Sep  7 18:53 te
    ivan@darkstar:~$ umask 2
    ivan@darkstar:~$ umask
    0002
    ivan@darkstar:~$ groups
    ivan adm cdrom sudo dip plugdev lpadmin sambashare kvm webdev
    ivan@darkstar:~$ sudo chown .webdev te
    ivan@darkstar:~$ sudo chmod g+w te
    ivan@darkstar:~$ ls -ld te
    drwx-w---- 2 ivan webdev 4096 Sep  7 18:53 te
    ivan@darkstar:~$ chmod g+rx te
    ivan@darkstar:~$ sudo chmod g+s te
    ivan@darkstar:~$ ls -ld te
    drwxrws--- 2 ivan webdev 4096 Sep  7 18:53 te
    ivan@darkstar:~$ cd te
    ivan@darkstar:~/te$ umask 077
    ivan@darkstar:~/te$ umask
    0077
    ivan@darkstar:~/te$ touch test
    ivan@darkstar:~/te$ ls -l
    total 0
    -rw------- 1 ivan ivan 0 Sep  7 18:54 test
    ivan@darkstar:~/te$ 
    
    • 0
  3. Ram
    2018-09-08T10:05:33+08:002018-09-08T10:05:33+08:00

    您可以通过使用特殊权限“ setgid bit ”来实现这一点。

    setgid 位对文件和目录都有影响。在第一种情况下,设置了 setgid 位的文件在执行时,不是以启动它的用户组的权限运行,而是以拥有该文件的组的权限运行。

    相反,当在目录上使用时,setgid 位会改变标准行为,以便在所述目录中创建的文件组将不是创建它们的用户,而是父目录本身。这通常用于简化文件的共享(文件将可由属于所述组的所有用户修改)。

    如果我们想在目录上设置setgid位,请使用以下命令。

    $ chmod 2775 test_dir
    

    使用上述命令,我们将对其的所有者和作为目录所属组成员的用户授予对它的完全权限,以及对所有其他用户的读取和执行权限。

    我们可以通过下面提到的其他方式设置它

    $ chmod g+s test_dir
    

    例子

    我们创建了多个名为user1、user2、user3的用户:

    $ useradd user1
    $ useradd user2
    $ useradd user3
    

    还创建了一个名为group的组:

    $ groupadd group
    

    在创建的用户中添加组作为辅助组:

    $ usermod -a -G group user1
    $ id user1
    uid=1000(user1) gid=1000(user1) groups=1000(user1),1003(group)
    
    $ usermod -a -G group user2
    $ id user2
    uid=1001(user2) gid=1001(user2) groups=1001(user2),1003(group)
    
    $ usermod -a -G group user3
    $ id user3
    uid=1002(user3) gid=1002(user3) groups=1002(user3),1003(group)
    

    创建了test_dir并添加了setgid 位权限:

    $ mkdir test_dir
    $ chmod 2775 test_dir
    $ ls -al 
    drwxrwsr-x   5 user group  4096 Sep  7 17:10 test_dir
    

    使用创建的用户在 test_dir 中创建文件和目录:

    $ cd test_dir
    
    $ su user1
    $ mkdir user1_dir
    $ touch user1_file
    
    $ su user2
    $ mkdir user2_dir
    $ touch user2_file
    
    $ su user3
    $ mkdir user3_dir
    $ touch user3_file
    

    这是test_dir目录列表:

    $ ls -al
    total 44
    drwxrwsr-x 5 user  group 4096 Sep  7 17:10 .
    drwxr-xr-x 1 root  root  4096 Sep  7 17:35 ..
    drwxrwsr-x 2 user1 group 4096 Sep  7 17:11 user1_dir
    -rw-rw-r-- 1 user1 group    0 Sep  7 17:10 user1_file
    drwxrwsr-x 2 user2 group 4096 Sep  7 17:09 user2_dir
    -rw-rw-r-- 1 user2 group    0 Sep  7 17:09 user2_file
    drwxrwsr-x 2 user3 group 4096 Sep  7 17:09 user3_dir
    -rw-rw-r-- 1 user3 group    0 Sep  7 17:09 user3_file
    

    希望这个解决方案对你有用。

    • -1

相关问题

  • 另一个用户的非空子目录是否可以安全地从我的目录中删除?

  • linux redhat 7 ( 或 centos 7 ) + firewalld 屏蔽防火墙

  • systemctl 命令在 RHEL 6 中不起作用

  • 如何在 RHEL 7 上离线安装 docker?

  • 在 Gnome3 中禁用窗口的自动最大化

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve