天天看點

linux學習之路(5)使用者和使用者組管理

1.  /etc/passwd

linux學習之路(5)使用者和使用者組管理

/etc/passwd由’:’分割成7個字段,每個字段的具體含義是:

1)使用者名(如第一行中的root就是使用者名),代表使用者賬号的字元串。使用者名字元可以是大小寫字母、數字、減号(不能出現在首位)、點以及下劃線,其他字元不合法。雖然使用者名中可以出現點,但不建議使用,尤其是首位為點時,另外減号也不建議使用,因為容易造成混淆。

2)存放的就是該賬号的密碼,為什麼是’x’呢?早期的unix系統密碼确實是存放在這裡,但基于安全因素,後來就将其存放到/etc/shadow中了,在這裡隻用一個’x’代替。

3)這個數字代表使用者辨別号,也叫做uid。系統識别使用者身份就是通過這個數字來的,0就是root,也就是說你可以修改test使用者的uid為0,那麼系統會認為root和test為同一個賬戶。通常uid的取值範圍是0~65535,0是超級使用者(root)的辨別号,1~499由系統保留,作為管理賬号,普通使用者的辨別号從500開始,如果我們自定義建立一個普通使用者,你會看到該賬戶的辨別号是大于或等于500的。

4)表示組辨別号,也叫做gid。這個字段對應着/etc/group中的一條記錄,其實/etc/group和/etc/passwd基本上類似。

5)注釋說明,該字段沒有實際意義,通常記錄該使用者的一些屬性,例如姓名、電話、位址等等。不過,當你使用finger的功能時就會顯示這些資訊的(稍後做介紹)。

6)使用者的家目錄,當使用者登入時就處在這個目錄下。root的家目錄是/root,普通使用者的家目錄則為/home/username,這個字段是可以自定義的,比如你建立一個普通使用者test1,要想讓test1的家目錄在/data目錄下,隻要修改/etc/passwd檔案中test1那行中的該字段為/data即可。

7)shell,使用者登入後要啟動一個程序,用來将使用者下達的指令傳給核心,這就是shell。Linux的shell有很多種sh, csh, ksh, tcsh, bash等,而Redhat/CentOS的shell就是bash。檢視/etc/passwd檔案,該字段中除了/bin/bash外還有/sbin/nologin比較多,它表示不允許該賬号登入。如果你想建立一個賬号不讓他登入,那麼就可以把該字段改成/sbin/nologin,預設是/bin/bash。

2.  /etc/shadow

linux學習之路(5)使用者和使用者組管理

用”:”分割成9個字段。

1)使用者名,跟/etc/passwd對應。

2)使用者密碼,這個才是該賬号的真正的密碼,不過這個密碼已經加密過了,但是有些黑客還是能夠解密的。是以為了安全,該檔案屬性設定為600,隻允許root讀寫。

3)上次更改密碼的日期,這個數字是這樣計算得來的,距離1970年1月1日到上次更改密碼的日期,例如上次更改密碼的日期為2012年1月1日,則這個值就是365*(2012-1970)+1=15331。

4)要過多少天才可以更改密碼,預設是0,即不限制。

5)密碼多少天後到期。即在多少天内必須更改密碼,例如這裡設定成30,則30天内必須更改一次密碼,否則将不能登入系統,預設是99999,可以了解為永遠不需要改。

6)密碼到期前的警告期限,若這個值設定成7,則表示當7天後密碼過期時,系統就發出警告告訴使用者,提醒使用者他的密碼将在7天後到期。

7)賬号失效期限。你可以這樣了解,如果設定這個值為3,則表示:密碼已經到期,然而使用者并沒有在到期前修改密碼,那麼再過3天,則這個賬号就失效了,即鎖定了。

8)賬号的生命周期,跟第三段一樣,是按距離1970年1月1日多少天算的。它表示的含義是,賬号在這個日期前可以使用,到期後賬号廢棄。

9)作為保留用的,沒有什麼意義。

3、 使用者

3.1  增加使用者 useradd [-u UID] [-g GID] [-d HOME] [-M] [-s]

-u 自定義UID

-g 使其屬于已經存在的某個GID

-d 自定義使用者的家目錄

-M 不建立家目錄

-s 自定義shell

例: 添加使用者 meuser   →  

adduser meuser

3.2     

passwd 設定使用者密碼

          passwd [使用者名] 設定密碼

3.3 usermod 禁用、啟用帳号:

usermod -L [使用者名] 禁用帳号

usermod -U [使用者名] 啟用帳号

usermod -e YYYY-MM-DD [使用者名]  指定禁用日期

usermod 指令禁用和啟用賬号通過在 /etc/shadow中相應使用者密碼位之前添加和删除 "!" 實作的。

3.4  建立使用者的時候指定使用者屬于那個使用者組:

usersadd -g group_name user_name

3.4 更改使用者的使用者組:

usermod –g group_name user_name

3.4  将使用者添加到其它組:

usermod –G group_name user_name

3.5   修改使用者名稱:

usermod –l new_user_name old_ user_name

3.6    删除使用者:

userdel [-r] username

-r 選項的作用是删除使用者時,連同使用者的home目錄一起删除。

4.  使用者組

4.1   groupadd 建立組

groupadd [-g gid [-o]] [-r] [-f] group

不加-g則按照系統預設的gid建立組,跟使用者一樣,gid也是從500開始的

4.2 修改組的名稱

groupmod -n  new_group_name old_ group_name

4.3 删除組

gropudel groupname

切換登入使用者

su [-] username

後面可以跟”-”也可以不跟,普通使用者su不加username時就是切換到root使用者,當然root使用者同樣可以su到普通使用者。

加”-“後會連同使用者的環境變量一起切換過來。su test後雖然切換到了test使用者,但是目前目錄還是切換前的/root目錄,然後當用su - test時切換使用者後則到了test的家目錄/home/test。當用root切換普通使用者時,是不需要輸入密碼的。這也展現了root使用者至高無上的權利。

用su是可以切換使用者身份,如果每個普通使用者都能切換到root身份,如果某個使用者不小心洩漏了root的密碼,那豈不是系統非常的不安全?沒有錯,為了改進這個問題,産生了sudo這個指令。使用sudo執行一個root才能執行的指令是可以辦到的,但是需要輸入密碼,這個密碼并不是root的密碼而是使用者自己的密碼。預設隻有root使用者能使用sudo指令,普通使用者想要使用sudo,是需要root預先設定的,即,使用visudo指令去編輯相關的配置檔案/etc/sudoers。如果沒有visudo這個指令,請使先安裝:” yum install -y sudo”

預設root能夠sudo是因為這個檔案中有一行” root ALL=(ALL) ALL” 在該行下面加入” test ALL=(ALL) ALL”就可以讓test使用者擁有了sudo的權利。如果每增加一使用者就設定一行,這樣太麻煩了。是以你可以這樣設定。找到檔案中的這一行“# %wheel        ALL=(ALL)       ALL”

把這一行前面的”#”去掉,讓這一行生效。它的意思是,wheel這個組的所有使用者都擁有了sudo的權利。接下來就需要你把想讓有sudo權利的所有使用者加入到wheel這個組中就ok了。

還有一些設定感興趣的還可以了解下:

當我們建立使用者時,通過 /etc/login.defs 和 /etc/default/useradd 兩檔案實作新使用者的基本設定。

cat /etc/login.defs

linux學習之路(5)使用者和使用者組管理

cat /etc/default/useradd

linux學習之路(5)使用者和使用者組管理

這個檔案中SKEL這個選項指定使用者的根目錄内容是從 /etc/skel 這個目錄下複制過去。

個人qq群:399846037 支援的朋友可以加下

繼續閱讀