Linux —— 用戶權限管理
權限:
為什么需要權限管理?
1.計算機資源有限,我們需要合理的分配計算機資源。
2.Linux是一個多用戶系統,對於每一個用戶來說,個人隱私的保護是十分重要的
由於Linux的一切皆文件的基本思想,對於權限的管理更多的則體現在管理文件權限上。為了
方便的指派權限,在Linux中定義了文件屬主,文件屬組,其他人這三類人的權限。
對於計算機來說,這三類都是一個標識符。
通過 ls 命令我們可以看到文件的具體權限信息。
drwxrwxr-x 2 linlin linlin 4096 Jun 5 02:29 .
drwxrwxr-x 5 linlin linlin 4096 May 29 02:38 ..
-rw-rw-r-- 1 linlin linlin 0 Jun 5 02:29 file
文件權限信息一共有9位,每3位一組,分別表示屬主,屬組,其他人的權限信息
權限:r w x
對於文件:
r:可讀,可以使用cat等命令查看文件內容
w:可寫,可以進行編輯修改,或刪除操作
x:可執行,可以在命令提示符下當做命令提交給內核運行
對於目錄:
r:可以對此目錄執行ls命令,列出內部所有文件
w:可以在此目錄下創建文件
x:可以使用cd命令切換進此目錄,也可以使用ls -l命令查看內部文件的詳細信息
對於目錄來說,一般會有執行權限,而對於文件來說,一般默認沒有執行權限。
表示沒有某個權限時,使用 -
在表示文件權限時,也可以使用八進制數字0,1,2,4...表示
0 000 ---:無權限
1 001 --x:可執行
2 010 -w-:可寫
4 100 r--:可讀
7 111 rwx:可讀可寫可執行
儲存用戶和組的文件
用戶:UID /etc/passwd
組 :GID /etc/group
Linux中,在儲存用戶和組信息的文件,不會直接將用戶或組密碼儲存在其中,而是
在其他文件中儲存,但並不是直接以密碼保存,而是保存加密后的文件,影子口令
用戶:/etc/shadow
組 :/etc/gshadow
儲存用戶信息的文件:/etc/passwd
linlin@ubuntu:~/linlin$ tail -3 /etc/passwd
linlin:x:1000:1000:linlin's ubunto,,,:/home/linlin:/bin/bash
mysql:x:121:129:MySQL Server,,,:/nonexistent:/bin/false
wangml:x:1002:1002:wangml:/home/wangml:/bin/bash
通過上面示例可以看到,在/etc/passwd文件中,每個用戶信息作為一行,而每一行分
為7段,用 :分隔,分別表示:
用戶名 :密碼占位符 :UID :用戶私有組(基本組)GID :注釋 :用戶家目錄 :默認shell
儲存組信息文件:/etc/group
linlin@ubuntu:~/linlin$ tail -3 /etc/group
mysql:x:129:
xiaolinlin:x:1001:wangml
wangml:x:1002:
表示為 組名 :密碼占位符 :GID :
UID:根據用戶類別分類
管理員ID號永遠為0
普通用戶ID號1~65535,16位表示用戶
系統用戶ID號1~499
一般用戶ID號500開始
在/etc/passwd文件中,添加一般用戶時,用戶ID一般為該文件中最大的一般用戶ID+1
用戶組:
基本組,私有組:本組只有該用戶自己,用戶創建文件后,該文件的默認組為該用戶的基本組
附加組,額外組:基本組以外的其他組
在創建一個用戶時,如果未指定用戶私有組和家目錄時,系統默認會為該用戶創建一個以該用戶名為
組名的組,作為該用戶的私有組組GID一般與用戶UID相同。且會在/home目錄下為該用戶創建一個與
該用戶同名的目錄作為該用戶的家目錄。
對於系統用戶來說,沒有默認shell,即系統用戶不允許登陸
儲存密碼信息文件:/etc/shadow
mysql:!:17301:0:99999:7:::
wangml:!!:17303:0:99999:7:::
用戶名 :加密后的密碼 :最后一次密碼修改時間 :密碼最短使用時間 :用戶過期時間 :修改密碼警告時間 :;:
可以使用 man shadow 命令查看具體信息
只有管理員root可以查看/etc/shadow文件
root@ubuntu:/home/linlin/linlin# ls -l /etc/shadow
-rw-r----- 1 root shadow 1336 Jun 4 02:52 /etc/shadow
通過以上內容可以知道,沒添加一個用戶,就是在 /etc/passwd /etc/shadow /etc/group 這三個文件中各加
入一行信息,所以,我們可以直接通過修改這是三個文件來添加用戶,而不需要使用命令
用戶管理:
添加用戶:useradd 用戶名,有事也可以使用 adduser,adduser是一個軟鏈接
-u:手動指定UID
-g:指定基本組GID
-G:指定額外組,附加組
-c:指定注釋信息
-d:指定某個目錄為家目錄
-s:指定用戶默認shell
在/etc/shells下指定了當前系統下的可用的安全shell
-m -k:給用戶強制創建家目錄,並將/etc/skel下的文件復制到家目錄下
-M:不給用戶創建家目錄
-r:添加系統用戶
刪除用戶:userdel 選項 用戶名
默認在刪除用戶時不會刪除用戶家目錄
-r:刪除用戶的同事刪除用戶家目錄
查看用戶賬號的基本信息:id
linlin@ubuntu:~/linlin$ id
uid=1000(linlin) gid=1000(linlin) groups=1000(linlin),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)
檢索用戶信息:finger 用戶名
linlin@ubuntu:~/linlin$ finger linlin
Login: linlin Name: linlin's ubunto
Directory: /home/linlin Shell: /bin/bash
On since Thu May 18 01:32 (PDT) on tty7 from :0
18 days 20 hours idle
No mail.
No Plan.
修改用戶賬號信息:usermod 選項 內容 用戶名
-u:修改UID
-g:修改基本組
-G:修改附加組,如果此前用戶已有附加組,則使用-G后,該附加組會被覆蓋,如果需要添加
附加組,則使用 -G -a
-c:修改注釋
-d:指定新家目錄,一般與-m一起使用,表示在創建新家目錄的同時,將原來家目錄下的內容
復制到新的家目錄中
-e:指定用戶過期時間
-L:鎖定賬號
-U:解鎖賬號
chsh:修改用戶默認shell
chfn:修改用戶注釋信息
修改用戶密碼:passwd 用戶名
--stdin:從標准輸入讀取
-l:鎖定用戶賬號
-u:解鎖
-d:刪除用戶密碼
Linux中,禁止空密碼用戶登錄
pwck:檢查用戶賬號完整性
組管理:
創建組:groupadd
-g:指定GID
-r:添加系統組
刪除組:groupdel
修改組屬性:groupmod
-g:修改 GID
-n:修改組名
gpasswd:為組設定密碼
newgrp:登錄到一個新組,exit退出
改變用密碼過期時間:chage
-d:最近一次的修改時間
-E:過期時間
-r:非活動時間
-m:最短使用期限
-M:最長使用期限
-W:警告時間
改變文件屬主:chown 用戶名 files
只有管理員才可以改變文件屬主
-R:修改目錄文件屬性時將目錄內的文件一起修改
--reference=文件1 文件2... :將文件2...的屬主、屬組修改為與文件1相同
修改文件屬組:chgrp
只有管理員才可以使用,使用方法和chown一樣、
使用chown 用戶名:組名 文件 或 chown 用戶名.組名 文件 可以同時修改文件的屬主屬組
chown 組名 文件:只改屬組
修改文件權限:chmod MODE 文件
-R:遞歸修改
--reference=文件1 文件2... :將文件2...將文件2...的屬性修改為與文件1相同
root@ubuntu:/home/linlin/linlin/test# ls -l file
-rw-rw-r-- 1 linlin linlin 0 Jun 5 02:29 file
root@ubuntu:/home/linlin/linlin/test# chmod 600 file
root@ubuntu:/home/linlin/linlin/test# ls -l file
-rw------- 1 linlin linlin 0 Jun 5 02:29 file
修改某類用戶權限時:chmod 用戶類別(u g o a) +(-) MODE,a表示所有用戶,可以省略
root@ubuntu:/home/linlin/linlin/test# ls -l file
-rw------- 1 linlin linlin 0 Jun 5 02:29 file
root@ubuntu:/home/linlin/linlin/test# chmod g+r file
root@ubuntu:/home/linlin/linlin/test# ls -l file
-rw-r----- 1 linlin linlin 0 Jun 5 02:29 file
我們都知道,在創建一個文件后,系統會默認給文件賦予權限,那么,默認權限是由什么決定的?
umask:遮罩碼,不加參數時表示查看系統默認遮罩碼,加八進制位表示修改遮罩碼
root@ubuntu:/home/linlin/linlin/test# umask
0044
root@ubuntu:/home/linlin/linlin/test# umask 0022
root@ubuntu:/home/linlin/linlin/test# umask
0022
創建文件后默認權限 666-umask
創建目錄后默認權限 777-umask
