您好,登錄后才能下訂單哦!
這篇文章主要介紹Linux賬號管理的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
一、用戶管理
1. 用戶賬號管理文件
要對Linux中的用戶賬號進行管理,首先當然應該了解用戶賬號在Linux系統中是怎么保存的,這涉及到兩個文件——/etc/passwd與/etc/shadow,前者保存用戶的UID和GID等基本信息,后者則主要保存與賬號密碼相關的一些信息。
先來看看/etc/passwd這個文件存的是啥(這里只取前三行):
在此文件中,每個用戶賬號信息存為一行,每一行有7個欄位,從左到右存放的信息分別為:
(1)賬號名稱。
(2)密碼:早期Unix系統的密碼是放在這里的,但由于/etc/passwd這個文件能被很多程序讀取,不安全,后來密碼資料已經放到文件/etc/shadow中,所以這里第二個欄位都是“x”。
(3)UID:0代表賬號為系統管理員,1-999代表系統賬號,1000-6000則是一般使用者。
(4)GID:用戶初始群組的GID。
(5)用戶名全稱或賬號意義說明。
(6)家目錄:默認為/home/賬號名稱。
(7)Shell:該賬號登入系統之后取得的shell。
再來看看/etc/shadow這個文件存的又是啥(這里只取前三行):
同樣的,在這個文件中也是每個賬號存為一行,共有9個欄位,從左到右存放的信息分別為:
(1)賬號名稱。
(2)密碼:加密之后的密碼。若以“!”開頭則表示密碼失效,賬號封鎖,暫時無法登錄。
(3)最近修改密碼的日期:這個欄位上的數字表示的是最近修改密碼的日期是在1970年1月1日的多少天之后。
(4)密碼不可修改的天數:表示上一次修改密碼之后,幾天之后才能再次修改密碼。
(5)密碼需要再次修改的天數(密碼過期日):表示上一次修改密碼之后,幾天之內需要再次修改密碼。
(6)在密碼過期日前幾天開始發出警告。
(7)密碼過期之后的賬號寬限天數(密碼失效日):密碼過期后幾天之內賬號密碼還是可以使用,但是登入系統之后,系統會強制讓用戶修改密碼。若這幾天還是沒修改密碼,則過了這個時間密碼就失效了,無法再使用該賬號密碼登入系統。
(8)賬號失效日期:1970年1月1日的多少天之后賬號失效,無論密碼是否過期,賬號都無法再使用。
(9)暫時沒存信息,保留給新功能使用。
2. 用戶賬號管理操作
了解了Linux賬號和密碼在系統中的保存方式之后,我們還需要知道怎么去添加賬號、修改賬號信息,以及如何修改密碼等用戶管理操作,以下便一一作出說明。
(1)用戶賬號添加:
useradd [-u UID] [-g 初始群組] [-G 次要群組] [-m/M] [-c 賬號意義說明] [-d 家目絕對路徑] [-s shell] [-r] [-e 賬號失效日期,格式為YYYY-MM-DD] [-f 密碼是否會失效,0立刻失效,-1永不失效] 賬號名稱
這里列出useradd命令常用的一些選項,可根據需要添加,其中-M表示強制不建立家目錄,-m表示強制建立家目錄,-r表示創建系統賬號,更多選項需要自己使用man命令在系統中查看了。不過一般來說,我們創建用戶賬號的時候只要指定賬號名稱即可:useradd賬號名稱,這樣賬號的其他信息都會使用系統為我們設置的默認值。在CentOS中,系統默認會幫我們做的事情如下:
<1>在/etc/passwd建立一行與賬號相關的資料。
<2>在/etc/shadow建立一行與此賬號密碼相關的數據,但是尚未有密碼。
<3>在/etc/group建立一行此賬號的初始群組信息,群組名稱與賬號名稱一致。
<4>在/etc/gshadow建立一行此賬號初始群組的密碼信息,但是沒有密碼。
<4>在/home中建立此賬號家目錄,目錄名稱與賬號名稱一致,權限為700。
那么useradd命令的這些默認值是在哪里存放的呢?首先可以使用useradd -D查看部分默認值(這里注解了各個參數的意義說明):
(最后一個參數為:是否建立郵件信箱)
這些參數實際上就保存在文件/etc/default/useradd中!
關于初始群組,有兩種機制:公共群組機制和私有群組機制。公共群組機制會使用這里的“GROUP=100”這個參數值作為新建賬號的初始群組,每個賬號都將屬于users這個群組,賬號之間可以分享家目錄中的資料,SuSE使用的就是這種機制。私有群組機制則不使用這個參數,每個賬號都有各自的群組和家目錄,而且只有自己可以進入自己的家目錄,使用這個機制的有RHEL,Fedora,CentOS等。
“SKEL=/etc/skel”指定了創建賬號家目錄的內容參考目錄,即新建賬號的家目錄中的內容是從/etc/skel這個目錄中直接拷貝過去的!“CREATE_MAIL_SPOOL=yes”指定了系統會自動幫新建賬號建立郵件信箱,即會創建“/var/spool/mail/賬號名稱”這個文件。
然而/etc/default/useradd這個文件只是設置了一些賬號的基本信息默認值,更多參數默認值可在/etc/login.defs文件中查看,里面設置了用戶UID、GID等更多參數默認值與規范。
所以,總結起來,使用useradd命令創建賬號時會參考的文件有:/etc/default/useradd、/etc/login.defs、/etc/skel/*。
(2)用戶賬號修改:
修改用戶賬號可使用usermod命令,該命令的選項參數大都與useradd類似,這里不再贅述,只是有個特別的功能需要說明一下,那就是usermod可以使用-L和-U這兩個選項參數分別對賬號進行凍結和解凍,凍結其實就是在/etc/shadow第二欄的密碼前面添加“!”,使得賬號密碼無法正常登錄,解凍則將其去除,恢復賬號登錄。
(3)用戶賬號刪除:
用戶賬號刪除使用命令:userdel 用戶賬號,若加上-r選項則會連同使用者的家目錄也一起刪除。注意,userdel命令會將與指定賬號相關的東西統統刪除!
(4)賬號密碼修改:
使用useradd創建賬號之后,新建賬號還是無法登入系統的,還需要使用passwd命令設置密碼才行:
除了修改密碼,passwd命令還有以下用途:
<1>修改密碼屬性:passwd [-n 密碼不可修改的天數] [-x 密碼需要再次修改的天數] [-w 在密碼過期日前幾天開始發出警告] [-i 密碼過期之后的賬號失效寬限天數] 賬號名稱
<2>凍結密碼:passwd -l 賬號名稱,修改/etc/passwd,在密碼前加“!!”。(類似usermod -L)
<3>解凍密碼:passwd -u 賬號名稱。(類似usermod -U)
<4>查看密碼信息:passwd -S 賬號名稱。
除了passwd,還有一個命令可用于修改賬號密碼的信息,那就是chage:
chage [-d 最近修改密碼日期,格式為YYYY-MM-DD] [-m 密碼不可修改的天數] [-M 密碼需要再次修改的天數] [-W 在密碼過期日前幾天開始發出警告] [-I 密碼過期之后的賬號失效寬限天數] [-E 賬號失效日期,格式為YYYY-MM-DD]
此外,chage也可以用于查看賬號密碼信息,信息展示的格式比passwd -S指令更容易查看:
還可以通過“chage -d 0 賬號名稱”強制要求用戶在下一次登入系統時修改密碼!
3. 使用者功能
以上介紹的賬號管理操作,除了使用passwd修改自己密碼和部分信息查看操作,其他的都是只有系統管理員才能執行的,下面介紹一下一般用戶能查看與修改信息的命令操作。
<1>id 賬號名稱:查看用戶UID和GID。
<2>finger:查詢當前登入系統的所有用戶信息。
finger 賬號名稱:查詢某個賬號相關屬性。
<3>chfn:修改finger中展示的一些信息。
可以看到,實際上修改的信息都保存在/etc/passwd文件的第五欄中。(修改自己信息直接執行“chfn”即可)
<4>chsh -l:查看當前系統上所有可用的shell,即是/etc/shells中的內容。
chsh -s:修改自己的shell。
二、群組管理
1. 群組管理文件
與用戶管理類似,想要了解群組管理,亦需要先來看看群組信息在Linux系統中是怎么保存的,群組信息涉及兩個文件——/etc/group和/etc/gshadow,前者保存群組基本信息,后者保存群組密碼信息。
先來看看/etc/group文件:
在此文件中,每個群組信息存為一行,每行4個欄位,從左到右存放信息分別為:
(1)群組名稱。
(2)群組密碼:已轉移到/etc/gshadow中存儲,所以這里存“x”。
(3)GID。
(4)此群組中的所有用戶賬號成員列表。
再來看看/etc/gshadow文件:
在此文件中,每個群組信息存為一行,每行4個欄位,從左到右存放信息分別為:
(1)群組名稱。
(2)群組密碼:通常是給群組管理員使用的,少有設置。
(3)群組管理員的賬號。
(4)此群組中的所有用戶賬號成員列表。
2. 群組管理操作
(1)群組添加:
groupadd [-g gid] 群組名稱
(若是創建系統群組需加上-r選項)
(2)群組修改:
groupmod [-g gid] [-n 群組新名稱] 群組名稱
(注意,不要隨意改動GID,很容易造成系統資源的錯亂)
(3)群組刪除:
groupdel 群組名稱
(若群組是某個用戶賬號的初始群組則會報錯,無法刪除)
(4)初始群組與有效群組:
用戶的初始群組是用戶登入系統之后就獲取到并擁有其相關權限的群組,也就是/etc/passwd文件第四個欄位上的GID對應的群組。用戶在系統中可加入多個群組,而且可以使用所屬所有群組的權限與功能,但是創建文件或者目錄的時候,新建文件或目錄的群組則只能是當前用戶當前的有效群組。
可以使用命令“groups”查看當前用戶加入的所有群組,列表中第一個群組即是當前有效群組,可以使用命令“newgrp 群組名稱”切換有效群組,但是只能在當前用戶加入的所有群組中切換。切換有效群組之后會進入一個新的shell環境,可以使用“exit”命令來退出,回到原來有效群組和shell環境。
(5)用戶加入群組:
用戶想要加入某個群組有兩種方法,第一種方法是讓系統管理員root使用usermod命令進行操作(-a選項組合-G選項):
(將用戶jet加入群組jet2)
第二種方法則是讓對應群組的管理員使用gpasswd命令進行操作。
首先需要系統管理員root指定這個群組的管理員,也是使用gpasswd命令操作。先來看看root操作:
<1>修改群組密碼:gpasswd 群組名稱
<2>設置群組管理員、用戶成員:gpasswd [-A 群組管理員賬號列表] [-M 用戶成員賬號列表] 群組名稱
<3>移除群組密碼:gpasswd -r 群組名稱
<4>使群組密碼失效:gpasswd -R 群組名稱
然后由群組管理員對群組用戶成員進行管理:
三、使用者身份切換
1. su:
用戶登入Linux系統之后可以通過su命令切換到不同賬號,通過exit命令退出,恢復到原來賬號。
(1)su 賬號名稱:以non-login shell方式切換身份,很多環境變量包括PATH都還是目前用戶的。
(2)su -/-l 賬號名稱:以login shell方式切換身份,所有環境變量都變成新賬號的。
(3)su - -c "指令" 賬號名稱:利用新身份執行一條指令,執行后身份恢復為當前用戶。
(若不加上賬號名稱則表示切換到root身份)
2. sudo:
使用su命令切換身份是需要輸入新切換賬號的密碼的(只有root不需要),也就是說,若要使用su切換身份,就必須要知道新切換賬號的密碼才行。另一個命令sudo也可以切換身份執行命令操作,而且只需要輸入當前賬號密碼即可,無需知道新切換賬號的密碼,只是切換身份執行命令之后會自動恢復到原來賬號身份。指令格式如下:
sudo -u 賬號名稱 指令
(若是沒有指定賬號名稱則默認是使用root身份執行指令)
然而并不是所有的用戶賬號都能使用sudo命令并能隨意切換任何賬號的,需要在/etc/sudoers文件中配置相關信息才可以。此文件有規定語法,需要使用visudo指令來進行編輯。通過/etc/sudoers文件可設置哪些用戶或群組可在哪些主機登入系統時切換到哪些賬號執行哪些指令,還可以設置執行sudo指令時無需輸入密碼。該文件部分內容截圖如下:
以上是“Linux賬號管理的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。