1. 程式人生 > >張大帥學Linux之使用者及使用者組管理

張大帥學Linux之使用者及使用者組管理

張大帥學Linux之使用者及使用者組管理

標籤(空格分隔): Linux

使用者概述及管理

Linux系統是一個多使用者多工系統。通過授予不同的使用者許可權,可以讓不同的使用者執行指定的任務及訪問不同的資源。當Linux系統擁有越來越多的使用者時,管理任務會更復雜,因此需要系統能夠支援使用者的新增與管理,以完成日常的管理任務。


Linux作為一個網路作業系統,意味者可能有一個或更多的使用者在同時使用這個作業系統,因此,建立彼此分開的使用者賬戶是必要的。在Linux系統中,根使用者(即root賬戶,類似Windows系統中的Admin)具有系統最高的許可權,可以進行任何操作,如果在使用這個賬號時,出現一個錯誤操作,就有可能使系統崩潰,因此管理員要根據不同的需要授予使用者不同的操作許可權,以保障系統的安全及執行的穩定性。

當然,合理地對各種授權的使用者進行系統資源方面的管理也是非常重要的。

Linux在系統中的使用者分為三種超級使用者、普通使用者和特殊使用者

  • 超級使用者

在預設安裝的初始情況下,Linux系統中的超級使用者為root,也稱其為根使用者,具有系統中最高的許可權。超級使用者可以對Linux系統做任何操作,比如終止程序、新增或刪除硬體裝置、超越任何使用者和使用者組的許可權來對檔案或目錄進行讀取、修改或刪除,所以除非絕對必要,不要使用超級使用者來進行操作或者登入,經常使用超級使用者進行操作,會使系統存在很大的危險!許多網路伺服器在處理超級使用者時都有一些特殊的考慮。比如在預設安裝的情況下,超級使用者是無法通過telnet登入Linux系統的,如果允許這樣做,就會成為一個相當大的安全漏洞。需要初學者注意的是,在大部分Unix和Linux作業系統裡,UID為0的即為超級使用者,其登入名稱並不一定是“root”。


  • 普通使用者

由超級使用者建立及授權,並且可以登入到計算機執行某些任務。普通使用者為受限使用者,只能操作其擁有許可權的目錄和檔案,使用者之間私人的資源可以相互隔離,例如使用者A只能修改自己使用者目錄下的資料,而不可以修改或檢視使用者B的資料。同時普通使用者只能管理由自己啟動的程序,而不能結束由其它使用者發起的程序。

  • 系統使用者

也稱虛擬使用者、偽使用者、假使用者或者特殊使用者。在Linux系統中,每個檔案、目錄和程序,都歸屬於某一個使用者,為了完成特定的任務,系統內建了若干使用者,比如mail、ftp、bin等,系統使用者也是受限使用者。預設情況下,系統使用者都是無法登入的,如果給這些使用者授權登入口令後,就可以使用使用者登入系統。但為了安全起見,最好不要給這些使用者授權口令。


使用者管理

1. useradd或adduser:新增使用者。

基本格式:useradd [選項] <使用者名稱>
常用選項有:
-u:直接指定一個特定的 UID 給這個帳號,預設情況下,普通使用者一般其UID大於499。
-g:直接指定使用者所在組的名稱。
-M:強制不要建立使用者家目錄。
-c:指定使用者資訊描述。
-d:指定使用者家目錄,不使用系統預設值。
-s:指定使用者shell ,而不使用預設的/bin/bash。
-G:指定使用者所屬的附加組。
-mk:複製其他使用者主目錄下的檔案和配置資訊來建立使用者。
-e expire_date:帳號終止日期。日期的指定格式為MM/DD/YY。
-f inactive_days:帳號過期幾日後永久停權。當值為0時帳號則立刻鎖定禁用。而當值為-1時則關閉此功能,預設值為-1。

2. userdel:刪除使用者。

基本格式:userdel [選項] <使用者名稱>
常用選項有:
-r:刪除使用者的同時一併刪除使用者家目錄及其擁有的所有檔案
notice:   tail /etc/passwd      //檢視使用者賬號是否存在


3. passwd:設定及更改使用者口令。

基本格式:passwd [選項] [使用者名稱]
常用選項及含義:
-l:鎖定使用者賬號。
-u:解鎖使用者賬號。
-d:設定使用者口令為空。但該使用者可以在系統中登入。
-x:密碼使用最大時間(天)。
-n:密碼使用最小時間(天)。
-w:在距多少天提醒使用者修改密碼。
-i:密碼過期多少開之後被禁用。
注意:在Linux系統中,超級使用者可修改任何使用者的密碼,普通使用者只可修改自己的密碼.
圖片4.png

4. usermod:更改使用者賬戶屬性。

該命令可用於更改、設定使用者屬性,其語法與useradd基本相同。
基本格式:usermod [-c comment] [-d home_dir [ -m]] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[,…]] [-l login_name] [-p password][-s shell] [-u uid [ -o]] [-L|-U] <使用者名稱>
選項含義:
-c:修改使用者帳號的備註。
-d:修改使用者家目錄,
-e:修改賬號有限期限。
-f:修改賬號密碼過期多少天之後即關閉該賬號。
-g:修改使用者所屬的群組。
-G:修改使用者所屬附加群組。
-l:修改使用者賬號名稱。
-p:修改使用者密碼。
-s:修改使用者登入後的shell。
-u:修改使用者uid。
-L:鎖定使用者不得登入。
-U:解除使用者鎖定。
圖片5.png


5. su:使用指定使用者的shell,經常理解為切換使用者身份。

基本格式:su [選項] [使用者名稱]
常用選項及含義:
-f:不必讀啟動檔案(如 csh.cshrc 等),僅用於csh或tcsh兩種Shell。
-l:使用指定使用者的登入環境,例如HOME、SHELL和USER等,並且工作目錄也會改變。如果沒有指定使用者,預設情況是root。
-m:執行su時不改變環境變數。
-c command:臨時變更賬號為指定使用者,並執行指令(command)後再返回為原來的使用者。
圖片7.png
提示:在使用su時經常攜帶引數“-”號,表示同時使用該使用者的環境變數和Shell。


6. finger:檢視指定使用者資訊。

圖片6.png
從示例可見finger並不是一個很安全的指令,在某些版本的Linux系統中,預設不安裝此命令。

組管理

1. groupadd:新增組。

基本格式:groupadd [-g GID] <組名> 常用用法示例:

[root @test/root]#groupadd -g 55 testing //新增一個組,GID為55
[root @test/root]#groupadd pro //新增一個組,其它值為預設
[root @test/root]#groupadd -g pro oradba //新增一個組,指定其屬組為pro

2. groupdel:刪除組。

[root @test/root]#groupdel pro //刪除組


3. gpasswd:管理組群資訊

[root @test/root]#gpasswd -d oradba pro //將使用者oradba從pro組中刪除
[root @test/root]#gpasswd -a oradba pro //將使用者oradba加入pro組中刪除

4.檢視所屬組

groups命令用於顯示指定使用者所屬的組,如未指定使用者則顯示當前使用者所屬的組。該命令的語法格式為:
groups 使用者名稱

sudo命令

用途:以可替換的其他使用者身份執行命令,若未指定目標使用者,預設為root使用者
格式:

sudo[-u 使用者名稱] 操作命令

說明:操作命令需在配置檔案中授權給使用者

sudo配置檔案:/etc/sudoers

作用:授權哪些使用者可以通過sudo方式執行哪些命令

  • 編輯方式:
    (1)visudo (2)vi /etc/sudoers
    推薦方式(1)
    3.png
    提升許可權的幾個步驟:
    chmod 660 sudoers
    vi sudoers
    user_name ALL=(ALL) ALL

RPM軟體包管理

rpm軟體包管理常用於以下用途:

  • 安裝、刪除、升級和管理軟體。
  • 支援線上安裝和升級軟體。
  • 明確RPM包包含哪些檔案,檢視系統中的某個檔案屬於哪個軟體包。
  • 查詢系統中的軟體包是否已安裝。
  • 檢視軟體包版本。
  • 開發者可以把自己的程式打包為RPM 包併發布。
  • 軟體包簽名GPG和MD5的匯入、驗證和簽名釋出。
  • 依賴性的檢查。
    RPM軟體包的安裝、刪除、更新只有具有root許可權才能使用,而查詢功能任何使用者都可以操作。

1. RPM命令的一般選項:

-v:顯示附加資訊。
–keep-temps:保留臨時檔案。臨時檔案通常位於“/tmp/rpm-*”,此選項用於debug。
–quiet:安靜工作,只有當出現錯誤時才給出提示資訊。
–help:顯示幫助。
–version:顯示當前使用的RPM版本。

2. 安裝和升級:

使用RPM安裝的一般格式如下:
rpm –i [安裝選項] <軟體包>
rpm –U [升級選項] <軟體包>

安裝選項與升級選項大致相同。
常用選項及含義有:
-h:安裝時輸出hash記號“#”。
–test:只對安裝進行測試,並不實際安裝。
–percent:以百分比的形式輸出安裝的進度。
–excludedocs:不安裝軟體包中的檔案檔案。
–includedocs:安裝檔案。
–replacepkgs:強制重新安裝已安裝的軟體包。
–replacefiles:替換屬於其他軟體包的檔案。
–force:忽略軟體包及檔案的衝突。
–noscripts:不執行預安裝和後安裝指令碼。
–prefix:將軟體包安裝到指定的路徑下。
–ignorearch:不校驗軟體包的結構。
–ignoreos:不檢查軟體包執行的作業系統。
–nodeps:不檢查依賴性關係。

注意:如果要升級RPM軟體包,只需要把引數“i”更換為“U”即可,其過程基本相同,只不過在升級安裝時,系統會自動檢測系統內原有版本,如果未安裝軟體包或者現版本號高於原版本,則刪除原版本後再進行安裝。
在進行安裝或者升級時,有時會配合其它的一些選項一起使用,比如↓:

  • –force:強制安裝。當要安裝的軟體版本已經安裝在系統上,或者是系統上現有的版本比將要安裝的版本高,系統就會發出警告,這時,使用者如果堅持安裝的話,可以用–force選項。

  • –nodeps:使用RPM安裝前,RPM會檢查該軟體包的依賴關係,即正確執行該軟體包所需的其他軟體包是否已經安裝。如果沒有安裝,系統會給出警告,這時,使用者要強行安裝的話,可以使用這個選項。但並不推薦這種做法。


3. 查詢選項:

查詢的命令格式如下:
rpm –q [查詢選項]
這裡的選項包括兩大類:軟體包選項和資訊選項。
軟體包選項有以下幾個:
<軟體包名字>:查詢系統上是否已經安裝這個軟體包。
-a:查詢所有安裝的軟體包。
–whatrequires <功能>:查詢所有需要<功能>才能正常執行的軟體包。
–whatprovides:查詢所有能提供某功能的軟體包。
-f:查詢檔案屬於哪一個軟體包。
–requiredby <軟體包>:查詢所有安裝<軟體包>所需要的其他軟體包。
-p:查詢未安裝的軟體包<軟體包名字>。這個軟體包可以指定為FTP路徑,這時,RPM會下載它的頭部資訊並查詢。
-g:查詢屬於某個組的軟體包。
資訊選項有:
-i:顯示軟體包的資訊,包括名稱、版本、描述資訊。
-R:顯示這個軟體包所依賴的軟體包。
–provides:顯示這個軟體包所提供的功能。
-l:列出這個軟體包內所包含的檔案。
-s:顯示這個軟體包的狀態。狀態是指normal、not installed或replaced。
-d:列出被標註為文件的檔案 (如man 手冊、 info 資訊、README等等) 。
-c:列出被標註為配置檔案的檔案。這些檔案是需要在安裝完畢後加以定製的。如 (sendmail.cf、passwd、inittab等)
圖片3.png

例項:↓
檢視系統安裝的所有軟體包:

rpm -qa

檢視系統是否安裝了zz軟體包

rpm -qa | grep zz  //用grep篩選

檢視 /etc/httpd/conf/httpd.conf檔案由哪個軟體包所安裝

rpm -qf /etc/httpd/conf/httpd.conf

檢視已經安裝的軟體包相關資訊

rpm -qi xxx(軟體包)

檢視軟體包所安裝的檔案位置及名稱

rpm -ql xxx(軟體包)

查詢某RPM包要安裝的資訊

rpm -qlp xxx(軟體包)

4. 校驗選項:

校驗命令的一般格式如下:
rpm -V[校驗選項] <軟體包名稱>
常用校驗選項及含義:
-f:校驗檔案所屬軟體包。
-p:校驗已安裝的軟體包。
-a:校驗所有已安裝的軟體包。
-g:校驗所有屬於某個組的軟體包。
校驗會把軟體包所安裝的軟體與原先資料庫中儲存的軟體資訊做一個比較。RPM可以驗證檔案的大小、MD5校驗碼、檔案許可權、型別、屬主等資訊。特定軟體的驗證選項同查詢選項一樣。
校驗輸出的格式是一個包括8個字元的字串,這8個字元中每個字元都代表同資料庫中資訊所比較的結果。如是結果是“.”,就代表沒有問題。下面是相應字元的意義:
S:檔案大小。
M:屬性(包括讀寫許可權和檔案型別)。
5 :MD5 校驗。
L:符號連結
D:裝置檔案。
U:使用者名稱。
G:組名。
T:檔案修改時間。
?:不可讀檔案。
圖片2.png
圖片1.png

驗證所有的軟體包或者是檢視誤刪了哪些檔案

rpm -Va

4.刪除軟體包

命令如下:
rpm -e <軟體名>

注意: 在解除安裝軟體包時使用軟體包名稱zsh-4.2.6-1,而不是軟體包檔名稱zsh-4.2.6-1.rpm。