Linux用戶管理

6 Linux用戶和組

6.1 Linux用戶分類

在Linux系統中,由於角色不同,每個用戶的權限和所能完成的任務各不相同。Linux用戶分為如下的三類:

  • root用戶在Linux系統中,root用戶的權限是最高的。普通用戶無法執行的操作,root用戶都能完成,所以root用戶也被稱為超級管理用戶。在Linux系統中,每一個文件、目錄和進程都是歸屬於某一個用戶的,如果沒有獲得用戶的許可,其它普通用戶是無法進行操作的。但root用戶不受限制。root用戶還可以超越任何用戶和用戶組群對文件或目錄進行讀取、修改和刪除。可以控制程序的執行、中止;可以對硬件設備進行添加、創建和刪除等操作。
  • 虛擬用戶這類用戶也被稱為偽用戶或假用戶,這類用戶不具備登錄系統的能力,但卻是系統運行不可缺少的用戶。比如 bin、daemon、adm、ftp、mail等,這類用戶都是系統自身擁有的。
  • 普通用戶這類用戶能夠登錄系統,只能擦歐總自己目錄的內容,權限有限,這類用戶都是系統管理員創建的。

6.2 用戶文件

用戶的配置文件主要包括:

  • 用戶信息文件:/etc/passwd
  • 密碼文件:/etc/shadow
  • 用戶組文件:/etc/group
  • 用戶組密碼文件:/etc/gshadow

Linux系統中對於用戶的管理主要通過修改配置文件來實現的。

6.2.1 /etc/passwd文件

/etc/passwd文件是系統識別用戶的一個文件,系統所有的用戶都在這裡有登錄記載。在/etc/passwd文件中,每一行都表示一個用戶信息,一行有7個段位,每個段位用 :分隔,如下所示,

<code>[root@localhost etc]# cat passwd
root:x:0:0:root:/root:/
bin/bashbin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:
mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin

ftp:x:14:50:FTPUser:/var/ftp:/sbin/nologin/<code>

在文件中,各字段的含義如下:

  • 用戶名:也稱為登錄名,在系統內用戶名具有唯一性;
  • 密碼:存放加密的密碼,顯示的是一個 x ,密碼被映射到 /etc/shadow文件中;
  • 用戶標識號:系統用一個整數標識用戶ID,每個用戶的UID都是唯一的,root用戶的UID是0,普通用戶的UID從500開始;
  • 組群標識號:系統內用一個整數標識用戶所屬的組群ID號,每個組群的GID是唯一的;
  • 用戶名全稱:用戶名描述,可以不設置;
  • 用戶宿主目錄:用戶登錄系統後首先進入的目錄;
  • 命令解釋器:用戶使用的shell類型。

6.2.2 /etc/shadow文件

/etc/shadow文件是 /etc/passwd的影子文件,這個文件並不由/etc/passwd文件產生,兩個文件是對應互補的。shadow文件涉及內容包括用戶及被加密的密碼以及其它/etc/passwd文件不能包括的信息,比如用戶的有效期限等。/etc/shadow文件包括9個段位,每個段位之間用 :分隔,文件內容如下

<code>[root@localhost etc]# cat shadow
root:$6$hF5CilEiEl9bi7Nf$2zb9VcwN4m3fQL8oeRIyIAsIpJNEHx2Ktq4HuGZmH9mzIw8ZagH9DoUy345hF3SQeuNv9oJ9DMjC74ymL1Jts/::0:99999:7:::
bin:*:17834:0:99999:7:::daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
lp:*:17834:0:99999:7:::
sync:*:17834:0:99999:7:::
shutdown:*:17834:0:99999:7:::
halt:*:17834:0:99999:7:::
mail:*:17834:0:99999:7:::
operator:*:17834:0:99999:7:::
games:*:17834:0:99999:7:::
ftp:*:17834:0:99999:7:::/<code>

/etc/shadow各個字段的含義如下:


  • 用戶名:這裡的用戶名和/etc/passwd中的用戶名一致;
  • 密碼:經過加密的密碼,如上所示root加密後的密碼為:$6$hF5CilEiEl9bi7Nf$2zb9VcwN4m3fQL8oeRIyIAsIpJNEHx2Ktq4HuGZmH9mzIw8ZagH9DoUy345hF3SQeuNv9oJ9DMjC74ymL1Jts/
  • 上次修改秘密的時間:從1970年1月1日算起到最近以此修改密碼的時間間隔(天數);
  • 兩次修改密碼間隔最少天數:如果設置為0,則禁用此功能。指用戶可以更改密碼的天數;
  • 兩次修改密碼間隔最多的天數:如果設置為0,則禁用此功能,指用戶必須更改密碼的天數;
  • 提前多少天警告用戶密碼將過期:用戶登錄系統後,系統登錄程序提醒用戶密碼將要過期;
  • 在密碼過期後多少天禁用此用戶:密碼過期後系統不會讓此用戶登錄;
  • 用戶過期日期:指定用戶過期的天數(從1970年1月1日開始的天數),如果這個字段的數值為空,賬戶永久可用;
  • 保留字段:目前為空,以備將來使用。

6.2.3 /etc/group文件


具有某種共同特徵的用戶集合就是用戶組群,/etc/group 是用戶組群的配置文件,內容包括用戶和用戶組群,並且能夠顯示用戶屬於哪個組群或哪幾個組群。一個用戶可以歸屬於一個或多個不同的用戶組群,同一用戶組群的用戶具有相似的特徵。比如把某一個用戶加入到root用戶組群,那麼這個用戶就可以瀏覽root用戶宿主目錄的文件,如果root把某個文件的讀寫執行權限開放,root用戶組群所有用戶都可以修改此文件;如果是可執行文件,root用戶組群的用戶也是可以執行的。/etc/group文件內容如下:

<code>[root@localhost etc]# cat /etc/group
root:x:0:bin:x:1:

daemon:x:2:sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:
postfix/<code>

每個用戶組群以添記錄,一行有4個段位,每個段位用 :分隔,各個段位的定義如下:

  • 組群名:用戶組群的名稱;
  • 群群密碼:存放的是組群密碼,顯示為x,密碼映射到/etc/gshadow文件中;
  • 組群標識:系統內用一個整數ID號,每個組群的UDI都是唯一的,普通組群的GID從500開始。
  • 組群成員:屬於這個組群的成員;

6.2.4 /ect/gshadow文件


/etc/gshasdow文件是 /etc/group的加密文件,文件中每個用戶群都有一條記錄,一行有4個段位,每個段位用 :分隔,文件的內容如下,

<code>[root@localhost etc]# cat /etc/gshadow
root:::

bin:::
daemon:::
sys:::
adm:::
tty:::
disk:::
lp:::
mem:::
kmem:::
wheel:::
cdrom:::
mail:::
postfix/<code>

每個段位的定義如下:

  • 組群名:組群的名稱
  • 組群密碼:組群加密後的密碼
  • 組群的管理員:有權限對該組添加、刪除用戶
  • 組群成員:授予改組的成員列表,多個用戶用 ,分隔。

6.3 實際操作
在下面的示例中,我們建立一個fruit組,並在fruit組中添加了兩個用戶 apple和 banana,另外我們用建了一個tomato用戶。建完這三個用戶後,分別給他們修改密碼。

<code>[root@localhost ~]# groupadd fruit
[root@localhost ~]# useradd -g fruit apple
[root@localhost ~]# useradd -g fruit banana

[root@localhost~]#useraddtomato
[root@localhost ~]# passwd tomato
...
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash...apple:x:1008:1008::/home/
apple:/bin/bashbanana:x:1009:1008::/home/
banana:/bin/bashtomato:x:1010:1010::/home/
tomato:/bin/bash
/<code>

可以看到,apple 的UID=1008,banana 的UID=1009,兩個用戶的GID=1008。tomato的UID=1010,GID=1010。apple和banana是同一個組,而tomato和他們不是同一個組。下面對/home目錄下的兩個目錄操作,使得banana目錄和apple目錄對所有用戶都可執行。

<code>[root@localhost home]# ls -l
總用量 0
drwx------. 2 apple fruit 114 12月 9 02:54 apple
drwx------.2bananafruit8312月902:54banana
drwx------.2tomatotomato8312月902:54tomato
[root@localhost home]# chmod 777 banana
[root@localhosthome]#chmod777apple
[root@localhost home]# ls -l
總用量 0
drwxrwxrwx. 2 apple fruit 114 12月 9 04:39 apple
drwxrwxrwx.2bananafruit8312月902:54banana
drwx------.2tomatotomato8312月902:54tomato/<code>

使用apple用戶登錄服務,在/home/apple目錄下創建可執行程序 test.sh,並賦值執行權限,test.sh的內容如下:

<code>[apple@localhost ~]$ cat -n test.sh     1  #!/bin/bash     
2 echo "-------------------------------"
3 echo "Welecom $USER"
4 echo "This is a test program"
5 echo "Gooodbye"
6 echo "-------------------------------"
[apple@localhost ~]$ chmod 754 test.sh
[apple@localhost ~]$ ls -l
總用量 4
-rwxr-xr--. 1 apple fruit 157 12月 9 02:33 test.sh/<code>


語法:chmod abc filename

其中a,b,c各為一個數字,分別表示User、Group和Other的權限。r=4,w=2,x=1,分別表示讀、寫和執行權限。

  • 若要rwx屬性則賦值為4+2+1=7;
  • 若要rw-屬性則賦值為4+2=6;
  • 若要r-x屬性則賦值為4+1=5;...

下面分別通過 root、apple、banana和tomato四個用戶登錄分別執行該程序,執行結果如下:

Linux用戶管理 | 用戶和組

Linux用戶管理 | 用戶和組

Linux用戶管理 | 用戶和組

Linux用戶管理 | 用戶和組

通過上述的輸出結果可以看出,root、apple、banana和tomato四個用戶前三個用戶對於test.sh具有執行權限,而tomato只具有讀的權限,這個和我們在上一節中講的是一致的。


Linux用戶管理 | 用戶和組



分享到:


相關文章: