Linux下的使用者和使用者組

來源:互聯網
上載者:User
文章目錄
  • 1、Linux下的使用者分類
  • 2、使用者組的概念
  • 3、使用者和使用者組的關係
  • 1、使用者和組的設定檔
  • 2、其他目錄和檔案
  • 1、使用者的管理命令
  • 2、使用者組管理命令
  • 1、超級使用者概念與重要性
  • 2、超級使用者在系統管理中的作用
  • 3、超級使用者的授權

自己玩ubuntu也玩過一段時間也沒怎麼注意到這個問題,一遇到許可權問題就sudo,或者chmod777,沒怎麼管這些許可權的作用。最近老師整了個伺服器給我們折騰,CentOS配起伺服器來了就得面臨安全問題,得真正的理解使用者和使用者組的概念了。看了很多部落格相關的內容,總結一下。

一、使用者和使用者組1、Linux下的使用者分類
  • 超級使用者:擁有對系統的最高系統管理權限,預設是root使用者。
  • 普通使用者:只能對自己目錄下的檔案進行訪問和修改,具有登入到系統的許可權。
  • 虛擬使用者:這類使用者最大的特點是不能登入系統,它們的存在主要是方便系統管理,滿足相應的系統進程對檔案屬主的要求。例如系統預設的bin、adm、nobody使用者等,一般啟動並執行web服務,預設就是使用的nobody使用者,但是nobody使用者是不能登入系統的。
2、使用者組的概念

使用者組是具有相同特徵使用者的邏輯集合,又是我們需要讓多個使用者具有相同的許可權,比如查看、修改某一檔案的許可權,一種方法是對多個使用者進行訪問授權,如果有10個使用者的話,就需要授權10次,顯然這種方法不太合理;另一種方法是建立一個組,讓這個組具有查看、修改此檔案的許可權,然後將所有需要訪問此檔案的使用者放入這個組中,那麼所有使用者就具有了和組一樣的許可權。這就是使用者組,將使用者分組是Linux 系統中對使用者進行管理及控制存取權限的一種手段,通過定義使用者組,在很大程度上簡化了管理工作。

3、使用者和使用者組的關係
  • 一對一:一個使用者存在一個組中,即使用者是組的唯一成員
  • 一對多:一個使用者可以存在多個使用者組中,此使用者有多個組的共同許可權
  • 多對一:多個使用者組可以存在一個組中,這些使用者具有和組共同的許可權
  • 多對多:多個使用者可以存在多個組中,即上述關係的擴充
二、設定檔1、使用者和組的設定檔(1)/etc/passwd檔案

系統使用者資訊檔,記錄了每個使用者的基本屬性。

格式:“使用者名稱:口令:使用者標識號:組標識號:注釋描述:主目錄:預設shell”

含義

  • 使用者名稱:是代表使用者帳號的字串。
  • 口令:存放著加密後的使用者口令,這個欄位存放的只是使用者口令的加密串,不是明文,但是由於/etc/passwd檔案對所有使用者都可讀,所以這仍是一個安全隱患。因此,現在許多Linux 版本都使用了shadow技術,把真正加密後的使用者口令存放到/etc/shadow檔案中,而在/etc/passwd檔案的口令欄位中只存放一個特殊的字元,例如用“x”或者“*”來表示。
  • 使用者標識號:就是使用者的UID,每個使用者都有一個UID,並且是唯一的,通常UID號的取值範圍是0~65535,0是超級使用者root的標識號,1~99由系統保留,作為管理帳號,普通使用者的標識號從100開始。而在Linux系統中,普通使用者UID預設從500開始。UID是linux下確認使用者權限的標誌,使用者的角色和許可權都是通過UID來實現的,因此多個使用者公用一個UID是非常危險的,會造成系統許可權和管理的混亂,例如將普通使用者的UID設定為0後,這個普通使用者就具有了root使用者的許可權,這是極度危險的操作。因此要盡量保持使用者UID的唯一性。
  • 組標識號:就是組的GID,與使用者的UID類似,這個欄位記錄了使用者所屬的使用者組。它對應著/etc/group檔案中的一條記錄。
  • 注釋性描述:欄位是對使用者的描述資訊,比如使用者的住址、電話、姓名等等。
  • 主目錄:也就是使用者登入到系統之後預設所處的目錄。
  • 預設shell:使用者登入系統後預設使用的命令直譯器,shell是使用者和linux核心之間的介面,使用者所作的任何操作,都是通過shell傳遞給系統核心的。linux下常用的shell有sh、bash、csh等,管理員可以根據使用者的習慣,為每個使用者佈建不同的shell。

例子:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
admin1:x:500:500::/home/admin1:/bin/bash
admin2:x:501:500::/home/admin2:/bin/bash
ftp1:x:502:50::/var/ftp/ftp1:/sbin/nologin
ftp2:x:503:50::/var/ftp/ftp2:/sbin/nologin

(2)/etc/shadow檔案

使用者加密諮詢檔案。由於/etc/passwd檔案是所有使用者都可讀的,這樣就導致了使用者的密碼容易出現泄露,因此,linux將使用者的密碼資訊從/etc/passwd中分離出來,單獨的放到了一個檔案中,這個檔案就是/etc/shadow,該檔案只有root使用者擁有讀許可權,從而保證了使用者密碼的安全性。

格式:“使用者名稱:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不啟用時間:失效時間:保留欄位”

含義

  • 使用者名稱:與/etc/passwd檔案中的使用者名稱有相同的含義。
  • 加密口令:存放的是加密後的使用者口令字串,如果此欄位是“*”、“!”、“x”等字元,則對應的使用者不能登入系統。
  • 最後一次修改時間:表示從某個時間起,到使用者最近一次修改口令的間隔天數。可以通過passwd 來修改使用者的密碼,然後查看/etc/shadow中此欄位的變化。
  • 最小時間間隔:表示兩次修改密碼之間的最小時間間隔。
  • 最大時間間隔:表示兩次修改密碼之間的最大時間間隔,這個設定能增強管理員系統管理使用者的時效性。
  • 警告時間:表示從系統開始警告使用者到密碼正式失效之間的天數。
  • 不啟用時間:此欄位表示使用者口令作廢多少天后,系統會禁用此使用者,也就是說系統不再讓此使用者登入,也不會提示使用者到期,是完全禁用。
  • 失效時間:表示該使用者的帳號生存期,超過這個設定時間,帳號失效,使用者就無法登入系統了。如果這個欄位的值為空白,帳號永久可用。
  • 保留欄位:linux的保留欄位,目前為空白,以備linux日後發展之用。

例子:

root:$6$I7qDSp4rrR2ptx3n$Io8gSanh6ekWXufjCfNYP9qIrav2BebLtwElGAsBSH8USUhGD7HS7rcIwZIMq3MZ9rUj74RQfD6VAd5Zp9z9T.:15445:0:99999:7:::
bin:*:15240:0:99999:7:::
admin1:$6$KBSNBizW$YD2/.eej7mvFbka/cl8MwMUaEgzE9JG216T4gBHAanP9r8XQe7mbveoMM3rtIGa/LKGSqNAVqOEfs8d7RpeGF/:15446:0:99999:7:::

(3)/etc/group檔案

使用者組資訊檔,儲存使用者組的資訊

格式:“組名:口令:組標識號:組內使用者列表”

含義

組名:是使用者組的名稱,由字母或數字構成。與/etc/passwd中的使用者名稱一樣,組名不能重複。
口令:存放的是使用者組加密後的口令字串,密碼預設設定在/etc/gshadow檔案中,而在這裡用“x”代替,linux系統下預設的使用者組都沒有口令,可以通過gpasswd來給使用者組添加密碼。
組標識號:就是GID,與/etc/passwd中的組標識號對應。
組內使用者列表: 顯示屬於這個組的所有使用者,多個使用者之間用逗號分隔。

例子

root:x:0:root
bin:x:1:root,bin,daemon
admin:x:500:

(4)/etc/gshadow

使用者組加密資訊檔案,儲存了使用者組密碼一類的資訊。。/etc/gshadow和/etc/group是互補的兩個檔案;對於大型伺服器,針對很多使用者和組,定製一些關係結構比較複雜的許可權模型,設定使用者組密碼是極有必要的。比如我們不想讓一些非使用者群組成員永久擁有使用者組的許可權和特性,這時我們可以通過密碼驗證的方式來讓某些使用者臨時擁有一些使用者組特性,這時就要用到使用者組密碼。

格式:“組名:口令:組管理者:群組成員”

含義

組名:使用者組名稱

口令:存放的是使用者組密碼的加密口令,如果是空的或者是!表示沒有密碼。

使用者組管理者:也可以為空白,如果有多個管理這,之間用','隔開。

群組成員:如果有多個成員用','隔開。

例子

bin:::root,bin,daemon
admin:!::

2、其他目錄和檔案(1)etc/login.defs檔案

用來定義建立一個使用者時的預設設定,比如指定使用者的UID和GID的範圍,使用者的到期時間、是否需要建立使用者主目錄等等。

下面是rhel5下的/etc/login.defs檔案,簡單介紹如下:

MAIL_DIR /var/spool/mail
當建立使用者時,同時在目錄/var/spool/mail中建立一個使用者mail檔案
PASS_MAX_DAYS 99999
#指定密碼保持有效最大天數
PASS_MIN_DAYS 0
表示自從上次密碼修改以來多少天后使用者才被允許修改口令
PASS_MIN_LEN 5
指定密碼的最小長度
PASS_WARN_AGE 7
表示在口令到期前多少天系統開始通知使用者口令即將到期
UID_MIN 500
指定最小UID為500 ,也就是說添加使用者時,使用者的UID 從500開始
UID_MAX 60000
指定最大UID為60000
GID_MIN 500
指定最小GID為500,也就是添加組時,組的GID從500開始。
GID_MAX 60000
指定最大GID為60000
CREATE_HOME yes
此項是指定是否建立使用者主目錄,yes為建立,no為不建立。

(2)/etc/skel目錄

/etc/skel目錄定義了建立使用者在主目錄下預設的設定檔,更改/etc/skel目錄下的內容就可以改變建立使用者預設主目錄的設定檔資訊,例如建立一個新使用者後,會在新使用者的主目錄下看到類似.bash_profile, .bashrc, .bash_logout等檔案,這些檔案就是存在於/etc/skel目錄下的。

(3)/etc/default/useradd檔案

useradd 添加使用者時的規則檔案,當我們通過useradd命令不加任何參數建立一個使用者後,使用者預設的主目錄一般位於/home下,預設使用的shell是/bin/bash,這些都是在/etc/default/useradd檔案中定義的。更改此檔案可以更改添加使用者的預設配置,除此方法外還可以通過adduser命令的參數來實現。

內容如下:

GROUP=100
HOME=/home :把使用者的家目錄建在/home中
INACTIVE=-1 :是否啟用帳號到期停權,-1表示不啟用
EXPIRE= :帳號終止日期,不設定表示不啟用
SHELL=/bin/bash :所用SHELL的類型
SKEL=/etc/skel :預設添加使用者的目錄預設檔案存放位置;也就是說,當我們用adduser添加使用者時,使用者家目錄下的檔案,都是從這個目錄中複製過去的

三、使用者和使用者組的管理1、使用者的管理命令
  • useradd :添加使用者
  • adduser :添加使用者
  • passwd :為使用者佈建密碼
  • usermod :修改使用者命令,可以通過usermod 來修改登入名稱、使用者的家目錄等等
  • pwcov :同步處理的使用者從/etc/passwd 到/etc/shadow
  • pwck :pwck是校正使用者設定檔/etc/passwd 和/etc/shadow 檔案內容是否合法或完整
  • pwunconv :是pwcov 的立逆向操作,是從/etc/shadow和 /etc/passwd 建立/etc/passwd ,然後會刪除 /etc/shadow 檔案
  • finger :查看使用者資訊工具
  • id :查看使用者的UID、GID及所歸屬的使用者組
  • chfn :更改使用者資訊工具
  • su :使用者切換工具
  • sudo :sudo 是通過另一個使用者來執行命令(execute a command as another user),su 是用來切換使用者,然後通過切換到的使用者來完成相應的任務,但sudo 能後面直接執行命令,比如sudo 不需要root 密碼就可以執行root 賦與的執行只有root才能執行相應的命令;但得通過visudo 來編輯/etc/sudoers來實現
  • visudo :visodo 是編輯 /etc/sudoers 的命令;也可以不用這個命令,直接用vi 來編輯 /etc/sudoers 的效果是一樣的
  • sudoedit :和sudo 功能差不多
2、使用者組管理命令
  • groupadd :添加使用者組
  • groupdel :刪除使用者組
  • groupmod :修改使用者組資訊
  • groups :顯示使用者所屬的使用者組
  • grpck :檢查/etc/group檔案和/etc/gshadow檔案,檢查資料是否正確存放
  • grpconv :通過/etc/group和/etc/gshadow 的檔案內容來同步或建立/etc/gshadow ,如果/etc/gshadow 不存在則建立
  • grpunconv :通過/etc/group 和/etc/gshadow 檔案內容來同步或建立/etc/group ,然後刪除gshadow檔案
四、linux的超級使用者1、超級使用者概念與重要性

在所有Linux系統中,系統都是通過UID來區分使用者權限層級的,而UID為0的使用者被系統約定為是具有超級許可權。超級使用者具有在系統約定的最高許可權範圍內操作,所以說超級使用者可以完成系統管理的所有工作。我們可以通過/etc/passwd 來查得UID為0的使用者是root,而且只有root對應的UID為0,從這一點來看,root使用者在系統中是無可替代的至高地位和無限制許可權。root使用者在系統中就是超級使用者。

在系統中,每個檔案、目錄和進程,都歸屬於某一個使用者,沒有使用者許可其它普通使用者是無法操作的,但對root除外。root使用者的特權性還表現在root可以超越任何使用者和使用者組來對檔案或目錄進行讀取、修改或刪除(在系統正常的功能內);對可執行程式的執行、終止;對硬體裝置的添加、建立和移除等;也可以對檔案和目錄進行屬主和許可權進行修改,以適合系統管理的需要(因為root是系統中許可權最高的特權使用者)。

與超級使用者相對的就是普通使用者和虛擬(也被稱為偽裝使用者),普通和偽裝使用者都是受限使用者,但為了完成特定的任務,普通使用者和偽裝使用者也是必須的。Linux是一個多使用者、多任務的作業系統,多使用者主要體現在使用者的角色的多樣性,不同的使用者所分配的許可權也不同,這也是Linux系統比Windows系統更為安全的本質所在。

由於超級許可權在系統管理中的不可缺少的重要作用,為了完成系統管理任務,我們必須用到超級許可權;在一般情況下,為了系統安全,對於一般常規層級的應用,不需要root使用者來操作完成,root使用者只是被用來管理和維護系統之用;比如系統日誌的查看、清理,使用者的添加和刪除。

在不涉及系統管理的工作的環境下,普通使用者足可以完成,比如編寫一個檔案,聽聽音樂;用gimp 處理一個圖片等...... 基於普通應用程式的調用,大多普通使用者就可以完成。

當我們以普通許可權的使用者登入系統時,有些系統配置及系統管理必須通過超級許可權使用者完成,比如對系統日誌的管理,添加和刪除使用者。而如何才能不直接以root登入,卻能從普通使用者切換到root使用者下才能進行作業系統管理需要的工作,這就涉及到超級許可權管理的問題。

擷取超級許可權的過程,就是切換普通使用者身份到超級使用者身份的過程;這個過程主要是通過su和sudo來解決。

2、超級使用者在系統管理中的作用(1)對任何檔案、目錄或進程進行操作

但這種操作是在系統最高功能內的操作,有些操作就是具有超級許可權的root也無法完成。比如/proc 目錄,/proc 是用來反應系統啟動並執行即時狀態資訊的,因此即便是root也無法對其進行寫操作。

(2)對於涉及系統全域的系統管理

硬體管理、檔案系統管理、使用者管理以及涉及到的系統全域配置等等......如果執行某個命令或工具時,提示無許可權,大多是需要超級許可權來完成,比如用adduser來添加使用者,這個只能用通過超級許可權的使用者來完成。

3、超級使用者的授權(1)su命令

su命令就是切換使用者的工具。比如我們以普通使用者beinan登入的,但要添加使用者任務,執行useradd ,beinan使用者沒有這個許可權,而這個許可權恰恰由root所擁有。解決辦法無法有兩個,一是退出beinan使用者,重新以root使用者登入,但這種辦法並不是最好的;二是我們沒有必要退出beinan使用者,可以用su來切換到root下進行添加使用者的工作,等任務完成後再退出root。我們可以看到當然通過su 切換是一種比較好的辦法。通過su可以在使用者之間切換,如果超級許可權使用者root向普通或虛擬使用者切換不要求輸入密碼;而普通使用者切換到其它任何使用者都要求輸入密碼驗證。

su 在不加任何參數,預設為切換到root使用者,但沒有轉到root使用者家目錄下,也就是說這時雖然是切換為root使用者了,但並沒有改變root登入環境;使用者預設的登入環境,可以在/etc/passwd 中查得到,包括家目錄,SHELL定義等。

(2)sudo命令

su 的確為管理帶來方便,通過切換到root下,能完成所有系統管理工具,只要把root的密碼交給任何一個普通使用者,他都能切換到root來完成所有的系統管理工作,但通過su切換到root後,也有不安全因素;比如系統有10個使用者,而且都參與管理。如果這10個使用者都涉及到超級許可權的運用,做為管理員如果想讓其它使用者通過su來切換到超級許可權的root,必須把root許可權密碼都告訴這10個使用者;如果這10個使用者都有root許可權,通過root許可權可以做任何事,這在一定程度上就對系統的安全造成了威協,我們絕對不能保證這10個使用者都能按正常操作流程來管理系統,其中任何一人對系統操作的重大失誤,都可能導致系統崩潰或資料損失,所以su 工具在多人蔘與的系統管理中,並不是最好的選擇,su只適用於一兩個人蔘與管理的系統,畢竟su並不能讓普通使用者受限的使用,這時最好是針對每個管理員的技術特長和管理範圍,並且有針對性的下放給許可權,並且約定其使用哪些工具來完成與其相關的工作,這時我們就有必要用到 sudo。

通過sudo,我們能把某些超級許可權有針對性的下放,並且不需要普通使用者知道root密碼,所以sudo 相對於許可權無限制性的su來說,還是比較安全的,所以sudo 也能被稱為受限制的su ,另外sudo 是需要授權許可的,所以也被稱為授權許可的su。

sudo 執行命令的流程是目前使用者切換到root(或其它指定切換到的使用者),然後以root(或其它指定的切換到的使用者)身份執行命令,執行完成後,直接退回到目前使用者,而這些的前提是要通過sudo的設定檔/etc/sudoers來進行授權。

(3)編寫/etc/sudoers檔案

sudo的設定檔是/etc/sudoers ,我們可以用他的專用編輯工具visodu ,此工具的好處是在添加規則不太準確時,儲存退出時會提示給我們錯誤資訊。配置好後,可以用切換到授權的使用者下,通過sudo -l 來查看哪些命令是可以執行或禁止的。

/etc/sudoers 檔案中每行算一個規則,前面帶有#號可以當作是說明的內容,並不執行;如果規則很長,一行列不下時,可以用\號來續行,這樣看來一個規則也可以擁有多個行。

/etc/sudoers 的規則可分為兩類;一類是別名定義,另一類是授權規則;別名定義並不是必須的,但授權規則是必須的。

具體使用可以查看man sudoers。

參考部落格:

http://ixdba.blog.51cto.com/2895551/531787

http://blog.sina.com.cn/s/articlelist_1462904252_1_1.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.