首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按setgid共享文件/目录

按setgid共享文件/目录
EN

Unix & Linux用户
提问于 2016-02-29 04:35:50
回答 1查看 1.1K关注 0票数 2

为了允许对特定组的写访问,共享文件/文件夹可以默认为该组中的每个人写,并且拥有组可以通过设置此目录上的setgid位自动固定到拥有父目录的组:chmod g+s our_shared_directory,否则将使用文件创建者的默认组(通常与用户名相同)。

以上报价来自Arch Linux Wiki。我不清楚如何创建共享的文件和文件夹。假设用户A和B都属于一个公共组G,那么现在我如何创建our_shared_directory,这样在默认情况下G中的每个人都有写权限?

第二,为什么我需要setgid on our_shared_directory?为什么我需要将拥有的组固定到our_shared_directory的父目录的组?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2016-02-29 08:00:12

如果要共享文件夹的控件,请在

  • 用户a
  • 用户b

创建用户

代码语言:javascript
复制
 % sudo adduser a
Adding user `a' ...
Adding new group `a' (1002) ...
Adding new user `a' (1001) with group `a' ...
Creating home directory `/home/a' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
....

代码语言:javascript
复制
% sudo adduser b
Adding user `b' ...

建立一个目录

代码语言:javascript
复制
% mkdir our_shared_directory

创建一个新组并将用户添加到其中

代码语言:javascript
复制
 % sudo addgroup cool_kids
Adding group `cool_kids' (GID 1001) ...
Done.
 % sudo adduser a cool_kids            
Adding user `a' to group `cool_kids' ...
Adding user a to group cool_kids
Done.
% sudo adduser b cool_kids
....

使目录属于cool_kids组和setgid

代码语言:javascript
复制
sudo chmod g+s our_shared_directory
sudo chown -v ubuntu:cool_kids our_shared_directory

检查我们的工作

代码语言:javascript
复制
ls -al
drwxrwsr-x 2 ubuntu cool_kids  40 Feb 29 20:37 our_shared_directory/
      ^ setgid bit is set and group is now "sticky"    

查看由用户a在普通目录中生成文件时发生的情况。

代码语言:javascript
复制
% touch file_made_by_user_a
% ls -al
-rw-rw-r-- 1 a      a           0 Feb 29 20:57 file_made_by_a

现在,用户aour_shared_directory中创建一个文件

代码语言:javascript
复制
% cd our_shared_directory/
% ls -al
-rw-rw-r-- 1 a      cool_kids  0 Feb 29 20:59 another_by_a
                     ^^^^^^ note the group 

重要

  1. 自动应用于新文件的cool_kids组

现在切换到用户b

代码语言:javascript
复制
% su b
Password: ...

B现在可以编辑a-因为another_by_a文件的默认模式是-rw-rw-r--,所以b通常不能编辑它。

但与

代码语言:javascript
复制
b% vim another_by_a
^ note this means we are user "b"   now  
[make some edit and save]

b能够修改文件**,因为b属于cool_kids组,而且cool_kidssetgid比特保证应用到新文件中。

代码语言:javascript
复制
ls -al
-rw-rw-r-- 1 a      cool_kids  7 Feb 29 21:03 another_by_a
                               ^ the file is 7bytes - slightly bigger because of changes made by b 
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/266436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档