天天學五分鐘 Liunx 001 | 用戶及用戶組


Liunx 文件權限node

[root@controller-0 ~]# ll -al heihei
-rw-r--r--. 1 root root 0 Mar 3 07:39 heihei

 

第一列 -rw-r--r-- 表示文件的權限及類型。其中,第一個字符表明文件是 「目錄/文件或連接文件等」,d 則是目錄, l 是連接文件,- 是文件。
接下來,3 個爲一組的字符表示文件/目錄的執行權限,第一組表示文件所屬用戶的執行權限,第二組表示文件所屬用戶所在組的執行權限,第三組表示不在文件所屬用戶所在組的其它用戶的執行權限。
r 表示可讀,w 表示可寫,x 表示可執行。算法

第二列表示有多少文件名鏈接到這個 i-node 中,對於 heihei 文件來講就是 1 個文件名鏈接到 i-node 。
<關於 i-node 可看這裏>shell

第三列表示當前文件的用戶名。
第四列表示當前文件所屬的用戶組組名。
第五列表示文件大小。
第六列表示最新一次修改日期。
第七列表示文件名。centos

因此,文件 heihei 的全部者 root 對該文件具備可讀可寫權限,與 root 同屬一個 用戶組(root) 的用戶對該文件具備可讀權限,非 root 用戶組的用戶也具備可讀權限。bash


Liunx 目錄權限
r 讀目錄權限。
w 更改目錄權限,包括在該目錄下新建目錄或文件,刪除已經存在的文件與目錄(不論該文件的權限),將已存在的文件或目錄重命名,轉移該文件的文件/目錄位置等。
x 表示用戶可否進入該目錄成爲工做目錄。工具

[***@*** ~]$ cd /home/***/test/
-bash: cd: /home/***/test/: Permission denied
[***@*** ~]$ cd /home/***/
-bash: cd: /home/***/: Permission denied
[***@*** ~]$ ll /home/
drwx------. 13 *** *** 4096 Mar 3 08:37 ***
drwx------. 2 *** *** 78 Mar 3 08:38 ***
[root@*** ***]# chmod 705 /home/***
[root@*** ***]# ll /home/
drwx---r-x. 13 *** *** 4096 Mar 3 08:37 ***
drwx------. 2 *** *** 103 Mar 3 08:42 ***
[root@*** ***]# su - ***
Last login: Tue Mar 3 08:39:24 CST 2020 on pts/0
[***@*** ~]$ cd /home/***/
[***@*** ***]$ lstest
[***@*** ***]$ cd test/
[***@*** test]$ ls

原來 目錄 *** 對於其它用戶沒有 r x 權限,因此 *** 進不去,顯示 permission denied。修改成 r x 後能夠進到該目錄下。
注意即便有 r 權限,若是沒有 x 權限也是不能進到該目錄下的。this


更改文件權限和屬性
更改文件或目錄所屬用戶組: chgrp
chgrp [-R] 組名 filename加密

更改文件或目錄所屬用戶: chown
chown [-R] 帳號名 filenamespa

更改文件或目錄權限: chmodrest


帳號
兩個重要概念:UID 和 GID。
每一個用戶都有 UID 和 GID,UID 是用戶的 ID,GID 是用戶所屬的組 ID。

三個重要文件: /etc/passwd , /etc/shadow 和 /etc/group。
/etc/passwd 裏存的是帳號信息。
/etc/shadow 存的是帳號的密碼信息。
/etc/group 寸的是帳號的羣組信息。


以 test 用戶爲例,查看三個文件內容分別爲:

[root@*** ***]# cat /etc/passwd | grep test
test:x:0:1007::/home/test:/bin/bash
[root@*** ***]# cat /etc/shadow | grep test
test:!!:18324:0:99999:7:::
[root@*** ***]# cat /etc/group | grep test
test:x:1007:

passwd 帳號有 7 列。第一列表示帳號名。第二列爲該帳號的密碼,密碼移到 shadow 文件中了,因此這裏的密碼是 * 表示。第三列爲該用戶的 UID , UID 爲 0 表示該用戶是系統管理員(能夠看出系統管理員不止只有 root 一個),UID 爲 1-499 表示該用戶是系統帳號,也就是保留給系統使用的 UID, 500及以上的 UID 留給通常用戶使用。第四列 1007 爲帳號所屬羣組的 GID,GID 爲 0 表示該用戶所屬的是系統管理員羣組。第五列爲用戶信息說明列。第六列爲該用戶的主文件夾。第七列表示當該用戶登錄的時候會取得 shell 和內核通訊從而進行操做。

shadow 文件有 9 列,主要介紹第一列和第二列,第一列是帳號名,第二列是該帳號加密過的密碼。

group 文件有 4 列,第一列爲用戶組,第二列爲用戶組的密碼,相似於 /etc/shadow, 用戶組的密碼被存在 /etc/gshadow 文件中,通常這個密碼是 *。第三列爲用戶組的 GID。第四列表示用戶組支持的帳號名稱,若是用戶的主用戶組是這個用戶組,則不須要指明,例如 test 用戶的主用戶組是 test,因此看到的 : 後是空的。

關於主用戶組,一個用戶能夠同屬多個用戶組,新建一個用戶 lianhua,將他加到用戶組 test 中:

[root@*** ***]# usermod -G test lianhua
[root@*** ***]# ll /home/
drwx------. 2 lianhua lianhua 62 Mar 3 23:41 lianhua
drwx------. 2 root test 62 Mar 3 22:18 test
[root@*** ***]# cat /etc/passwd | grep lianhua
lianhua:x:1005:1008::/home/lianhua:/bin/bash
[root@*** ***]# cat /etc/group | grep test
test:x:1007:lianhua

能夠看到 test group 的第四列多了一個用戶 lianhua,而 test 是 lianhua 的從用戶組,它的主用戶組是 lianhua, GID 是 1008。


帳號管理

用戶帳號管理
新增用戶 useradd / adduser
useradd 和 adduser 都是建立用戶,centos 下沒有區別,Ubuntu 下有所不一樣:
1. useradd 建立用戶不會在 /home 下自動建立與用戶名同名的用戶目錄,並且不會自動選擇shell版本,也沒有設置密碼,用戶是不能登陸的,須要使用 passwd 命令修改密碼。
2. adduser 建立用戶會在 /home 下自動建立與用戶名同名的用戶目錄,系統 shell 版本,會在建立時會提示輸入密碼,更加友好。

密碼設置 passwd
修改密碼,後接用戶名,若是不加則表示修改當前用戶的密碼。

用戶信息修改 usermod
修改用戶信息,如 usermod -G test lianhua

刪除用戶 userdel
userdel 刪除用戶不會刪除用戶相關的目錄文件, 需加 -r 選項刪除。


實際操做 test 用戶,看 test 用戶的 shadow test:!!:18324:0:99999:7::: 知道此時尚未 test 還沒設置密碼,加密的密碼是空的,此時是沒法登錄該帳號的。使用 passwd 給 test 設置密碼:

[root@*** ***]# passwd test
Changing password for user test.
New password:
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password:
passwd: all authentication tokens updated successfully.
[root@*** ***]# cat /etc/shadow | grep test
test:$1$dRPW9HDg$XryB6uQ/DSBxzkFNoI13P0:18324:0:99999:7:::

加密以後的 test 用戶的密碼是 $1$dRPW9HDg$XryB6uQ/DSBxzkFNoI13P0。
該密碼以 $ 爲符號分隔成三部分。
第一部分爲數字,表示有哪中加密算法生成的密碼,1 表示 MD5,5 表示 SHA-256,6 表示 SHA-512。
第二部分爲 dRPW9HDg salt,是使用 hash 算法進行加密的干擾值。
第三部分爲加密以後的密碼。


如今加密好了,帳號 test 能夠用來登錄了。
從 root 切換帳號到 test:

[root@*** ***]# su - test
Last login: Tue Mar 3 23:41:01 CST 2020 on pts/0
[root@*** ~]#

 

細心的朋友會發現 root@*** 一直沒變,變化的是當前目錄。之因此出現這樣是由於 test 是管理員(UID 是 0)和 root 同一級別,這裏不須要切換。
好了,test 的用途到此爲止了,是時候給它刪掉了,使用 userdel -r test 刪除:

[root@*** ~]# userdel -r test
userdel: user test is currently used by process 1

顯示進程正在被使用,退出登錄,從新鏈接,再執行 userdel -r test, 刪除成功。


用戶組帳號管理

用戶組帳號管理主要有兩個文件,/etc/group 和 /etc/gpasswd。
/etc/group 存的是 group 的信息。
/etc/gpasswd 存的是 group 的密碼信息。

新增用戶組 groupadd

[***@*** ~]$ groupadd testgroup
[***@*** ~]$ cat /etc/group | grep testgroup
testgroup:x:1008:

刪除用戶組 groupdel

修改用戶組 groupmod

用戶組管理員功能 gpasswd
gpasswd 可爲用戶組指定用戶做爲管理員,該管理員能夠管理其它用戶,如新建其它用戶到該用戶組,將該用戶移出用戶組等。

gpasswd option:
-a, --add USER add USER to GROUP
-d, --delete USER remove USER from GROUP
-h, --help display this help message and exit
-Q, --root CHROOT_DIR directory to chroot into
-r, --delete-password remove the GROUP's password
-R, --restrict restrict access to GROUP to its members
-M, --members USER,... set the list of members of GROUP
-A, --administrators ADMIN,...
set the list of administrators for GROUP


[***@*** ~]$ gpasswd testgroup
testgroup:$1$NKee9/mB$JqiWJBNBP.6Wa8c11akqS1:
[root@*** ***]# useradd lianhua
[root@*** ***]# useradd huasheng
[root@*** ***]# gpasswd -A lianhua testgroup
[root@*** ***]# su - lianhua
[root@*** ***]# gpasswd -a huasheng testgroup
[root@*** ***]# su - huasheng
[root@*** ***]# gpasswd -a lianhuasheng testgroup
gpasswd: Permission denied.
[root@*** ***]# cat /etc/gshadow | grep testgroup
testgroup:$1$NKee9/mB$JqiWJBNBP.6Wa8c11akqS1:lianhua:huasheng

從上可知,用戶組管理員 lianhua 可添加用戶 huasheng 到 testgroup ,可是通常用戶 huasheng 不能添加 lianhuasheng 到 testgroup。

 

補充 MD5 算法
MD5 信息摘要算法,是一種加密算法,經常使用來確保文件傳輸是否完整。

Liunx 自帶 MD5 算法工具 md5sum:

[root@*** ***]# md5sum --help
Usage: md5sum [OPTION]... [FILE]...
Print or check MD5 (128-bit) checksums.
With no FILE, or when FILE is -, read standard input.
-b, --binary read in binary mode
-c, --check read MD5 sums from the FILEs and check them
--tag create a BSD-style checksum
-t, --text read in text mode (default)

 

使用 md5sum 檢查文件是否完整:

[root@*** ***]# touch testMD5.sh
[root@*** ***]# ll testMD5.sh
-rw-r--r--. 1 root root 0 Mar 4 23:04 testMD5.sh
[root@*** ***]# md5sum testMD5.sh > testMD5.sh.password
[root@*** ***]# ll
-rw-r--r--. 1 root root 0 Mar 4 23:04 testMD5.sh
-rw-r--r--. 1 root root 45 Mar 4 23:06 testMD5.sh.password
[root@*** ***]# cp testMD5.sh testMD5.sh.password ../
[root@*** ***]# cd ..
[root@*** home]# ls ../
testMD5.sh testMD5.sh.password
[root@*** home]# md5sum -c testMD5.sh.password
testMD5.sh: OK
[root@*** home]# vi testMD5.sh
[root@*** home]# ll testMD5.sh
-rw-r--r--. 1 root root 9 Mar 4 23:07 testMD5.sh
[root@*** home]# md5sum -c testMD5.sh.password
testMD5.sh: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
相關文章
相關標籤/搜索