MST

星途 面试题库

面试题:Bash中如何通过权限与所有权管理实现安全的多用户协作

在一个多用户的Linux系统中,有一个项目目录 /project,多个用户需要协作开发。请详细阐述如何通过Bash命令设置合适的文件和目录权限与所有权,既保证各用户能够正常协作读写相关文件,又能最大程度保证数据安全,防止非授权访问。并且要考虑不同用户组的情况以及系统重启后的权限保持问题。
39.0万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
  1. 创建用户组
    • 假设项目组名为project_group,使用以下命令创建用户组:
    sudo groupadd project_group
    
  2. 添加用户到用户组
    • 对于需要参与项目的用户,例如user1user2,使用以下命令将他们添加到project_group
    sudo usermod -a -G project_group user1
    sudo usermod -a -G project_group user2
    
    • 用户需要重新登录才能使新的组关系生效。
  3. 设置目录权限和所有权
    • /project目录的所有权设置为project_group,并给予组读写执行权限,其他用户无任何权限:
    sudo chown -R :project_group /project
    sudo chmod -R g+rwX /project
    sudo chmod -R o-rwx /project
    
    • g+rwX中的X表示仅当文件是目录或者已有可执行权限时,赋予组可执行权限,这样既保证了目录可进入,又不会随意赋予文件可执行权限。
  4. 设置文件默认权限掩码(umask)
    • 为了确保新创建的文件和目录自动获得合适的权限,可以设置umask。对于project_group中的用户,合适的umask值为0002,这会使得新创建的文件默认权限为-rw-rw-r--,新创建的目录默认权限为drwxrwxr-x
    • 可以在用户的~/.bashrc文件中添加以下行来设置umask
    umask 0002
    
    • 然后执行source ~/.bashrc使设置生效。这样,无论系统重启与否,用户创建的新文件和目录都会继承合适的权限。
  5. 粘滞位(针对共享目录下防止误删除)
    • 如果/project目录下有共享文件,为防止用户误删除他人文件,可以设置粘滞位。粘滞位使得只有文件所有者、目录所有者或root用户才能删除或重命名该目录下的文件。
    sudo chmod +t /project
    
    • 粘滞位设置后,即使系统重启,只要目录权限未被修改,该功能依然有效。