1

我正在为“开发”组中的用户创建一个共享文件夹。我无法想出一系列用于执行此操作的命令,我需要设置以下权限:

  • 只有开发组的成员可以在其中创建文件
  • 用户只能删除他们创建的文件和目录
  • 共享目录中的任何新文件/文件夹都与该组相关联
  • 群主只能阅读
  • 所有者可以读取文件,但其他人不能具有 r/w 访问权限

我可以使用哪些命令来完成此操作?我似乎无法使用 chmod 和 来解决这个问题,当我以其他用户身份登录时,即使设置了粘性位,我也会继续获得查看文件夹或创建文件的权限被拒绝。

4

1 回答 1

1

天使的和弦,

首先,您必须在请求中说明您是否具有root权限(登录、sudo)来操作文件系统中的权限。

现在您需要将任务拆分为更小的块:

一个。将用户添加到开发组(dev_group - 假设已经存在)

root# for user in (user1 user2 user3 ... usern)
do
    usermod -a -G dev_group $user
done

湾。创建开发者组目录

mkdir /some/path/to/developer/group/dir

C。为文件夹分配权限:请参阅doc

  • 所有者 root.dev_group(根)
  • owner rwx -- 可以读取、创建、切换到目录
  • group rwx -- 可以读取、创建、切换到目录
  • other/world rx -- 只能读取,更改为目录(检查是否需要)
  • 设置 SGID - 新创建的文件/目录从目录继承组
  • 设置 'stiky' 位 - 只允许操作自己的文件/目录
chown root.dev_group [path to directory]     # owner root.dev_group
chmod u=rwx,g=rwx,o=rx [path to directory]   # user rwx; group rwx; other r-x
chmod g+s [path to directory]                # SGID bit inherit group from directory for new files and directories
chmod +t [path to directory]                 # stiky bit manipulate own files and directories only

或者

chmod 3775 [path to directory]

注意:对目录的执行权限允许更改到目录

d。为每个用户定义umask :

  • 用户 rwx
  • r组——
  • 其他 - -

(在 shell 初始化脚本中为 .bashrc .profile ....)

umask u=rwx,g=r,o=

注意:如果 umask 由于任何正当原因必须不同,则用户必须在创建时更改权限,在新文件/目录上复制时间

使用访问控制列表aclSELinux 上下文可以实现更精细的访问限制。

于 2020-03-07T08:01:31.370 回答