Linux多使用者共同使用同一目錄

楊湘睿發表於2020-10-29

使用者管理問題

  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

相關文章