Linux多用户共同使用同一目录

用户管理问题

  1. 用户添加:useradd、userdel

  2. 用户属性的修改:passwd

  3. 群组添加:groupadd、groupdel

  4. 群组属性修改:gpasswd

  5. 切换用户:su

基本概念

初始群组:在/etc/passwd里面指定的GID。每个用户一登陆,有效群组就被赋值为初始群组。
所属群组(支持群组):用户属于的所有群组,包括初始群组,用户可以获得所有所属群组的权限。
有效群组:用户当前使用的群组。用户创建的所有文件、目录等操作都属于有效群组。

实际问题

有三个用户user1、user2、user3;可以操作目录/srv/pro/下的所有文件;并且每个用户有自己的家目录。

  1. 首先创建群组pro,将该群组设置为/srv/pro所属的群组(所有操作均在root权限下)
$ groupadd pro
$ mkdir /srv/pro
$ chgrp pro /srv/pro

此时/srv/pro的用户为root,群组为pro

$ ls -dl /srv/pro
drwxr-xr-x. 2 root pro 4096 Oct 29 23:24 /srv/pro
  1. 修改目录权限,添加SGID权限。当添加了SGID权限之后,用户进入/srv/pro之后有效群组变为pro。即创建的所有文件、目录的所属群组为pro
$ chmod 2770 /srv/pro
  1. 创建三个用户
$ adduser -G pro user1
$ adduser -G pro user2
$ adduser -G pro user3
$ echo "user1" | passwd --stdin user1
$ echo "user2" | passwd --stdin user2
$ echo "user3" | passwd --stdin user3

此时创建的三个用户都有自己的初始群组(user1、user2、user3),同时也属于群组pro,因此进入/srv/pro之后创建的所有文件都可以互相修改,但是在自己的家目录下的文件是私有的。

  1. 进入user1创建文件。
[tmp@localhost ~]$ su user1
Password: 
[user1@localhost tmp]$ cd /srv/pro
[user1@localhost pro]$ touch main_user1.c
[user1@localhost pro]$ ls -l
total 0
-rw-rw-r--. 1 user1 pro 0 Oct 29 23:42 main_user1.c

创建完文件之后可以看到main_user1.c的用户是user1,群组为pro。当user2、user3进入该目录之后由于有效群组为pro,因此也可以修改main_user1.c

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页