賬號和許可權管理
賬號和許可權管理
一.管理使用者賬號和組賬號
二.管理目錄和檔案的屬性
三.總結
一.使用者賬號和組賬號概述
1.Linux基於使用者身份對資源訪問進行控制
使用者賬號: 超級使用者 普通使用者 程式使用者
超級使用者:root使用者是Linux作業系統中預設的超級使用者賬號,對本主機擁有至高無上的許可權,類似於windows作業系統中的administrator使用者。只有當進行系統管理.維護任務時,才建議使用root使用者登入系統,日常事務處理建議只是用普通使用者賬號。Root擁有對系統的最高的管理許可權ID=0。
普通使用者:普通使用者賬號需要由root使用者或其他管理源使用者建立,擁有的許可權受到一定限制,一般只在使用者自己的宿主目錄中擁有完整許可權。
系統使用者UID:1-999(centos7 版本)1-499(centos6 版本)
UID:即每個使用者的身份標示,類似於每個人的身份證號碼。
程式使用者:在安裝Linux作業系統及部分應用程式應用程式時,會新增一些特定的低許可權使用者賬號,這些使用者一般不允許登入到系統,而僅用於維持系統或某個程式的正常執行,如bin.daemon.ftp.mail等,偽使用者一般不會用來登入系統的,他主要時用於維持某個服務的正常執行.如:ftp.apache
組賬號:基本組(私有組) 附加組(共有組)
基本組:基於某種特定聯絡(如都需要訪問FTP服務)將多個使用者集合在一起,即構成一個使用者組,表示該組內所有使用者的賬號稱為組賬號。每一個使用者賬號至少屬於一個組,這個組稱為該使用者基本組(或私有組)。
附加組:若該組使用者同時還包含其他的組中,則這些組稱為該使用者的附加組(或公共組)。
UID和GID
UID(User IDentity,使用者標識號)
GID(Group IDentify,組標識號)
UID:即每個使用者的身份標示,類似於每個人的身份證號碼.
管理員組:root,o
普通組:GID
系統組:1-499(centos6),1-999(centos7)
普通組:500+(centos6),1000+(centos7)
表示該賬號需要密碼才能登入,為空時,賬戶無須密碼即可登入
2.使用者賬號檔案/etc/shadow
儲存使用者名稱稱.宿主目錄.登入shell等基本資訊
檔案位置:/etc/passwd
每一行對應一個使用者的賬號記錄
儲存使用者的密碼.賬號有效期等資訊
檔案位置:/etc/shadow
每一行對應一個使用者的密碼記錄
3.passwd 檔案賬號記錄詳細說明
root:x:0:0:root:/root:/bin/bash
詳細如下:
root:使用者名稱,使用者名稱僅是為了方便使用者記憶。Linux系統是通過UID來識別使用者身份,分配使用者許可權。
X:表示此使用者設有密碼,但不是真正的密碼,真正的密碼儲存在/etc/shadow檔案
Linux系統把真正的加密密碼串放置在/etc/shadow檔案中,此檔案只有root使用者可以瀏覽和操作,最大限度地保證了密碼的安全。
補充:
注意! ! !,雖然”X”並不表示真正的密碼,但也不能刪除,如果刪除了“X”,那麼系統會認為這個使用者沒有密碼,從而導致只輸入使用者名稱而不用輸入密碼就可以登陸(只能在使用五密碼登入,遠端是不可以)。
0:使用者賬號的UID號。
0:所屬基本組賬號的GID號
root:描述性資訊,此欄位只是用來解釋這個使用者的意義而已
/root:宿主目錄,即該使用者登入後所在的預設工作目錄
注:通常稱為使用者的主目錄。例如:root主目錄為/root。普通使用者odysee的主目錄為/home/odysee/bin/bash錄shell等資訊,使用者完成登陸後使用的
4.儲存使用者的密碼.賬號有效期等資訊
檔案位置:/etc/shadow (影子檔案)
每一行對應一個使用者的密碼記錄
/etc/shadow 檔案只有root
使用者擁有讀許可權,其他使用者沒有任何許可權,這樣就保證了使用者密碼的安全性
和/etc/passwd檔案一樣,檔案中每行代表一個使用者,同樣使用“:”
作為分隔符,不同之處在於,每行使用者資訊被劃分為9個欄位
第一列:賬戶名
第二列:存放真正加密的密碼,採用SHA512雜湊演算法,更加安全 加密原來用MD5或DES!!和*表示沒有密碼不能登入,新建立使用者也是!!,如果密碼前面顯示雙感嘆號表示該賬戶被鎖定了。
第三列:上一次修改密碼的時間,從1970年7月1日開始算的,因為1970年是linux的誕生日,date --d “1970-01-01 18983 days”可以檢視哪一天改過
第四列:多久之後才可以修改密碼,如果是0,則密碼可以隨時修改。最小修改間隔時間,也就是說該欄位規定了從第三個欄位(最後一次修改密碼的日期)起,多長時間之內不能修改密碼,如果是0則隨時修改密碼,如果是10,則代表密碼修改後10天之內不能再次修改密碼,此欄位是為了針對某些人頻繁更改賬號密碼而設計的。
第五列:密碼有效期,預設99999(273年),表示永久生效。
第六列:密碼到期前的第幾天發出告警資訊,預設是7天,每次登入系統都會向該賬戶發出“修改密碼”的警告資訊。
第七段:密碼過期的寬限天數,過期後幾天還是可以登陸的,如果過了寬限天數,系統將不再讓此賬戶登入,也不會提示賬戶過期,是完全禁用
比如說,此欄位規定的寬限天數是10,則代表密碼過期10天后失效:如果是0則代表密碼過期後立即失效;如果是-1則代表密碼永遠不會失效。
第八列:賬號失效時間,使用自1970年1月1日依賴的總天數作為賬戶的失效時間
第九列:保留,未使用。
5.Chage命令:用來修改賬號和密碼的有效期限,針對目前系統已經存在的使用者
Chage[選項]使用者名稱
命令 |
功能 |
-m |
密碼可更改的最小天數。為零時代表任何時候都可以更改密碼 |
-M |
密碼保持有效的最大天數。Chage -M 60 root |
-w |
使用者密碼到期前,提前收到警告資訊的天數 |
-E |
賬號到期的日期。過了這天,此賬號將不可用 |
-d |
上一次更改的日期 |
-i |
停滯時期。如果一個密碼過期這些天,那麼此賬號將不可用 |
-l |
列出當前的設定。由非特權使用者來確定他們的密碼或賬號何時過期 |
例:
Chage -E 2019-04-29 test 其中,test為使用者,使用者將在2019年4月29日失效(不可登入)
Chage -d 2019-06-30 test 設定test使用者最後一次修改密碼的日期為2019年6月30日
Chage -d 0 test 則代表該test使用者需立即修改密碼
Date -d “+45 days” -u 如果不知道時間可以用date檢視 -u:UTC時間
Chage -l root 檢視資訊
6.新增使用者賬號
Useradd 命令
Useradd[選項]……使用者名稱
常用選項
命令 |
功能 |
-u |
指定使用者的UID號,要求該UID號碼未被其他使用者使用 |
-d |
指定使用者的宿主目錄位置(當與-M一起使用時,不生效) |
-e |
指定使用者的賬戶失效時間,可使用YYYY-MM-DD的日期格式 |
-g |
指定使用者的基本組名(或使用GID號) |
-G |
指定使用者的附加組名(或使用GID號) |
-M |
不建立宿主目錄,即使/etc/login.defs系統配置中已設定要建立宿主目錄 |
-s |
指定使用者的登入shell(-s /sbin/nologin 使用者) |
例:
useradd zhangsan
id zhagnsan
tail -1 /etc/passwd
tail -1 /etc/shadow
ls /home
建立一個輔助管理員賬號
admin,將其基本組指定為“wheel”,附加組指定為“root”,宿主目錄指定為“/admin”
useradd -d /admin -g wheel -G root admin
id admin
在賬號管理工作中,有時候會希望在新建賬號的同時指定該賬號的有效期限,或者要求新建的賬號不能登入系統(如僅用於訪問ftp服務),這時可以分別使用“-e”和“-s”選項。
例如,執行以下操作可以建立一個名 為lisi的ftp賬號(禁止中端登入),該賬號將於2021-12-31失效。useradd -e 2021-07-04 -s /sbin/nologin lisi
7.刪除使用者賬號userdel
Userdel命令
Userdel [-r] 使用者名稱
新增-r選項時,表示連使用者的宿主目錄一併刪除
[root@localhost ~]# useradd stu01
[root@localhost ~]# ls -ld /homelstu01/
drwx------ 2 stu01 stu01 4096 09-09 12:38 /homelstu01/
[root@localhost ~]# userdel -r stu01 刪除使用者帳號stu01
[root@localhost ~]# ls -ld /homelstu01/
ls: /homelstu01/:沒有那個檔案或目錄
當用戶被刪除時卻顯示主目錄依然存在
[root@localhost ~]# useradd -u 1402 -g oinstall -G dba,asmdba oracle
useradd:警告:此主目錄已經存在。
不從 skel 目錄裡向其中複製任何檔案。
正在建立信箱檔案: 檔案已存在
解決:
[root@localhost ~]# userdel -rf grid
8.設定/更改使用者口令passwd
passwd命令
passwd [選項]... 使用者名稱
常用選項
不指定使用者名稱時,修改當前賬號的密碼
-d:清空指定使用者的密碼,金使用使用者名稱即可登入系統
-l:鎖定使用者賬戶
-S:檢視使用者賬戶狀態(是否被鎖定)
-u:解鎖使用者賬戶
passwd -d zhang
passwd -l zhang
passwd -S zhang
passwd -u zhang
批量新增密碼
呼叫管道符,給zhangsan使用者設定密碼“123”,為了方便系統管理,passwd命令提供了 --stdin選項,用於批量給使用者設定初始密碼
echo “123” | passwd --stdin zhangsan
9.usermod命令修改使用者賬號的屬性
命令 |
功能 |
-l |
更改使用者賬號的登入名稱(Login Name) |
-L |
鎖定使用者賬戶 |
-U |
解鎖使用者賬戶 |
-u |
修改使用者的UID |
-d |
修改使用者的宿主目錄位置 |
-e |
修改使用者的賬戶失效時間,課使用YYYY-MM-DD的日期格式 |
-g |
修改使用者的基本組名(或使用GID號) |
-G |
修改使用者的附加組名(或使用GID號) |
-s |
指定使用者的登陸shell |
使用者賬號的初始配置檔案
檔案來源
新建使用者賬戶時,從/etc/skel目錄中複製而來
主要的使用者初始配置檔案
~/.bash_profile
~/.bashrc
~/.bash_logout
新增一個新的使用者賬號後,useradd命令會在該使用者的宿主目錄中建立一些初始配置檔案。這些檔案來自於賬號模板目錄/etc/skel,幾倍呢上都是隱藏檔案,較常用的初始配置檔案包括“.bash_logout”、“.bash_profile”和".bashrc"。其中,“.bash_profile”檔案中的命令將在該使用者每次登入時被執行;“.bashrc”檔案中的命令會在每次載入“/bin/bash”程式(當然也包括登入系統)時執行;而“.bash_logout”檔案中的命令將在使用者每次退出登入時執行。理解這些檔案的作用,可以方便我們安排一些自動執行的後套管理任務。在“.bashrc”等檔案中,可以新增使用者自己的設定可執行語句(如linux命令列、指令碼控制語句等),以便自動完成相應的任務。
~/.bash_profile
示例程式碼中為使用者添加了2個環境變數(JAVA_HOME和CLASSPATH),並修改了已有環境變數PATH的值(PATH的查詢是從以前開始查詢,找到就返回)CLASSPATH環境變數的值實在JAVA執行時查詢載入類的預設CLASSPATH
.bashrc
例子中定義了路徑,語言,命令別名(使用rm刪除命令時總是加上-i引數需要使用者確認,使用ls命令列出檔案列表時加上顏色顯示)。每次修改.bashrc後,使用source ~/.bashrc(或者 . ~/ .bashrc)就可以立刻載入修改後的設定,使之生效。
一般會在.bash_profile檔案中顯示呼叫.bahsrc。登入linux啟動bash時首先會先去讀取~/ .bash_profile檔案,這樣~/ .bashrc也就得到執行了,你的個性化設定也就生效了
關於環境變數的讀取順序:
使用者登入 --> 載入~/ .bash_profile --> bash_profile中配置了首先時使~/ .bashrc生效
.bash_logout
用途:使用者登出時執行的命令
~/ .bash_logout
在當前使用者登出時,打印出Logout和當前的時間
echo "Logout,'data'"
例:
如果需要每個使用者登出時都清除輸入的命令歷史記錄,可以在/etc/skel/.bash_logout檔案中新增下面這行
rm -f $HOME/.bash_history
這樣,當用戶每次登出時,.bash_history檔案都會被刪除
組賬號檔案
與使用者賬號檔案相類似
/etc/group:儲存組賬號基本資訊
/etc/gshadow:儲存組賬號的密碼資訊
[root@localhost~]#grep"adm" /etc/group
sys:3:root,bin,adm
adm:x:4:root,adm,daemon
adm:組賬號名
daemon:組成員列表
與組賬號相關的配置檔案也有兩個,分別是/etc/group和/etc/gshadow。前者用於儲存組賬號名稱、GID號、組成員等基本資訊,後者用於儲存組賬號的加密密碼字串等資訊(但是很少使用到)。某一個組賬號包含哪些使用者成員,將會在group檔案內最後一個欄位中體現出來(基本組對應的使用者賬號預設可能不會列出),多個組成員之間使用“,”(逗號)分隔開。
grep "^root" /etc/group #//檢索root組包括那些使用者
grep "root" /etc/group #//檢索那些組包括root使用者
10.新增組賬號groupadd
groupadd命令
groupadd [-g GID] 組賬號名
示例
[root@localhost~]#groupadd -g 1000 market
[root@localhost~]#tail -1 /etc/group
market:x:1000:
11.刪除組賬號groupdel
groupdel命令
groupdel 組賬號名
示例:
[root@localhost~]#groupdel market #刪除組賬號market
[root@localhost~]#grep "market" /etc/gourp
查詢賬號資訊
finger命令
查詢使用者賬號的詳細資訊
finger [使用者名稱]
w、who、users命令
查詢已登入到主機的使用者資訊
w、who、users #查詢已登入到主機的使用者資訊通常使用tty來簡稱各種型別的終端裝置,Centos7系統,tty1表示圖形介面,tty2-tty6表示文字介面,可以用Ctrl+Alt+F1-F6切換。
按ctrl+A1t+F2登陸,執行w命令,檢視使用的終端就是tty2
User:登入使用者名稱
TTY:登入後系統分配的終端號
From:遠端主機名,即從哪登入的login@:何時登入
IDLE:使用者空閒時間。這是個計時器,一旦使用者執行任何操作,改計時器就會被重置。
JCPU:和終端連線的所有程序佔用時間。包括當前正在執行的後臺作業佔用時間
PCPU:當前程序所佔用時間
WHAT:當前正在執行程序的命令列
pts說明是用遠端工具連線的,比如1xshell,後面的數字代表登入的時間順序,越小證明登入的越早
12.設定/更改組gpasswd
gpasswd命令
設定組賬號密碼(極少用)、新增/刪除組成員
gpasswd [選項]... 組賬號名
常用選項
命令 |
功能 |
-a |
新增使用者到組 |
-d |
從組刪除使用者 |
-A |
指定管理員 |
-M |
指定組成員和-A的用途差不多 |
-r |
刪除密碼 |
-R |
限制使用者登入組,只有組中的成員才可以用newgrp加入組 |
例:
useradd mike
gpasswd -a mike root #確認mike使用者已加入root組
groups mike
二.管理目錄和檔案的屬性
1.檔案/目錄的許可權和歸屬
訪問許可權:
讀取r:允許檢視檔案內容、顯示i目錄列表
寫入w:允許修改檔案內容,允許在目錄中新建、移動刪除檔案或子目錄
可執行x:允許執行程式、切換目錄
歸屬(所有權)
屬主:擁有該檔案或目錄的使用者賬戶
屬組:擁有該檔案或目錄的組賬戶
檢視檔案/目錄的許可權和歸屬
[root@localhost~]#ls-l install.log
-rw-r--r-- 1 root root 34298 04-02 00:23 install.log
檔案型別、許可權 屬主 屬組
許可權項 |
讀 |
寫 |
執行 |
讀 |
寫 |
執行 |
讀 |
寫 |
執行 |
字元表示 |
r |
w |
x |
r |
w |
x |
r |
w |
x |
數字表示 |
4 |
2 |
1 |
4 |
2 |
1 |
4 |
2 |
1 |
許可權分配 |
檔案所有者 |
|
|
檔案所屬組 |
|
|
其他使用者 |
|
|
root使用者、 root組
如"drwxr-xr-x”和"-rw-r--r--"。許可權欄位由四部分組成,各自的含義如下所述。
第1個字元:表示該檔案的型別,可以是 d(目錄)、b(塊裝置檔案)、c(字元裝置檔案)、"-”(普通檔案)、字母"l”(連結檔案)等。
第2~4個字元:表示該檔案的屬主使用者(User)對該檔案的訪問許可權。
第5~7個字元:表示該檔案的屬組內各成員使用者(Group)對該檔案的訪問許可權。
第8~10 個字元:表示其他任何使用者 (other)對該檔案的訪問許可權。
第11 個字元:這裡的"."與 SELinux有關,目前不必關注
2.設定檔案和目錄的許可權chmod
chmod命令
chmod [ugoa] [+ - =] [rwx] 檔案或目錄...
u、g、o、a分別表示屬主、屬組、其他使用者、所有使用者
+ - =分別表示增加、去除、設定許可權
r、w、x分別表示讀、寫、執行許可權
或
chmod nnn 檔案或目錄...
nnn表示三位八進位制數
常用選項
-R:遞迴修改指定目錄下所有子項的許可權
上述格式中,字元組合"[ugoa...] [+-=] [rwx ]"或數字組合"nnn"的形式表示要設定的許可權模式。其中,"nnn"為需要設定的具體許可權值,如"755""644”等;而“[ugoa...] [+-=] [rwx]"的形式中,三個組成部分的含義及用法如下所述。
"ugoa"表示該許可權設定所針對的使用者類別。"u"代表檔案屬主,"g"代表檔案屬組內的使用者,"o"代表其他任何使用者,"a"代表所有使用者 (u、g、o 的總和)。
"+-="表示設定許可權的操作動作。"+"代表增加相應許可權,"-"代表減少相應許可權,"=”代表僅設定對應的許可權。
"rwx"是許可權的字元組合形式,也可以拆分使用,如"r""rx”等。
3.設定檔案和目錄的歸屬chown
chown命令
chown 屬主 檔案或目錄
chown :屬主 檔案或目錄
chown 屬主:屬主 檔案或目錄
常用選項
-R:遞迴修改指定目錄下所有檔案、子目錄的歸屬
許可權掩碼umask
umask作用:
控制新建的檔案或者目錄的許可權
預設許可權去除umask的許可權為新建的檔案或者目錄的許可權
umask設定:umask 022
umask檢視:umask
示例
將umask設為000,新建目錄或者檔案,檢視許可權
將umask設為022,新建目錄或者檔案,再檢視許可權
[root@localhost ~] # umask 000
[root@localhost ~]# mkdir /umask1
[root@localhost ~]# ls -ld /umask1/
drwxrwxrwx 2 root root 4096 3 月13 17:02 /umask1/
[root@localhost ~] # umask 022
[root@localhost ~] # mkdir /umask2
[root@localhost ~]# ls -ld / umask2/
drwxr-xr-x 2 root root 40963月13 17:03 /umask2/
三.總結
1、使用者賬號管理:建立賬號,設定密碼,鎖定密碼,修改模式,鎖定賬號,解鎖賬號,修改登入方式,最後刪除使用者
2、組賬號管理:建立組賬號,新增使用者進入組賬號,新增組賬號,刪除組賬號
3、使用者賬號檔案與組賬號檔案:使用者賬號檔案和組賬號檔案放置位置passwd shadow grpup看看位置在哪 然後如何檢視
4、查詢賬號相關資訊的命令:檢視組賬號 檢視使用者 檢視使用者詳細資訊 檢視遠端使用者終端
5、設定目錄與檔案許可權:給使用者的每個目錄每個檔案修改其許可權 屬主/屬組
6、設定目錄與檔案歸屬:給整個檔案和目錄的歸屬 給他們一個大許可權 比如有些許可權只能張三使用者檢視 還有root賬戶可以檢視 root是最高許可權
1、2建立使用者和組並且對他們進行操作 3、4對前面的使用者和組的賬號進行檢視 5、6對前面的使用者和組進行一個許可權的修改