Linux的VMWare中Centos7用戶和用戶管理三個系統文件(/etc/passwd-shadow-group解讀)和批量創建用戶user及用戶工作環境path


Linux 用戶和用戶組管理 用戶工作環境PATH

Linux系統是一個多用戶多任務的分時操作系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個賬號,然后以這個賬號的身份進入系統。

用戶的賬號一方面可以幫助系統管理員對使用系統的用戶進行跟蹤,並控制他們對系統資源的訪問;另一方面也可以幫助用戶組織文件,並為用戶提供安全性保護

每個用戶賬號都擁有一個唯一的用戶名和各自的口令。

用戶在登錄時鍵入正確的用戶名和口令后,就能夠進入系統和自己的主目錄。

實現用戶賬號的管理,

    用戶賬號的添加、刪除與修改。

    用戶口令的管理。

    用戶組的管理。

一、用戶賬號的管理

用戶賬號的管理工作主要涉及到用戶賬號的添加、修改和刪除。

添加用戶賬號就是在系統中創建一個新賬號,然后為新賬號分配用戶號、用戶組、主目錄和登錄Shell等資源。剛添加的賬號是被鎖定的,無法使用。

1.useradd添加新的用戶賬號

語法:

useradd 選項 用戶名

-u指定UID -g指定主組 -G指定附屬組 -d指定家目錄 -s指定登錄后使用的shell

參數說明:

選項:

-c comment 指定一段注釋性描述。

-d 目錄 指定用戶主目錄,如果此目錄不存在,則同時使用-m選項,可以創建主目錄。

-g 用戶組 指定用戶所屬的用戶組。

-G 用戶組,用戶組 指定用戶所屬的附加組。

-s Shell文件 指定用戶的登錄Shell。

-u 用戶號 指定用戶的用戶號,如果同時有-o選項,則可以重復使用其他用戶的標識號。

 

用戶名:

指定新賬號的登錄名。

 

實例1.

# useradd –d  /home/sam -m sam

此命令創建了一個用戶sam,

其中-d和-m選項用來為登錄名sam產生一個主目錄 /home/sam(/home為默認的用戶主目錄所在的父目錄)。

 

實例2.

# useradd -s /bin/sh -g group –G adm,root  gem

此命令新建了一個用戶gem,

該用戶的登錄Shell是 /bin/sh,

它屬於group用戶組,

同時又屬於adm和root用戶組,

其中group用戶組是其主組。

 

這里可能新建組:#groupadd group及groupadd adm

增加用戶賬號就是在/etc/passwd文件中為新用戶增加一條記錄,

同時更新其他系統文件如/etc/shadow, /etc/group等。

2.userdel刪除帳號

如果一個用戶的賬號不再使用,可以從系統中刪除。

刪除用戶賬號就是要/etc/passwd等系統文件中的該用戶記錄刪除,必要時還刪除用戶的主目錄。

刪除一個已有的用戶賬號使用userdel命令,

(1)語法

userdel 選項 用戶名

常用的選項 -r,它的作用是把用戶的主目錄一起刪除。

(2)例如:

userdel -r sam

此命令刪除用戶sam在系統文件中  主要是/etc/passwd, /etc/shadow, /etc/group等的記錄,同時刪除用戶的主目錄。

3.usermod修改帳號 附屬組 id -s -d -g

修改用戶賬號就是根據實際情況更改用戶的有關屬性,如用戶號、主目錄、用戶組、登錄Shell等。

修改已有用戶的信息使用usermod命令,

(1)語法

usermod 選項 用戶名

常用的選項包括-c, -d, -m, -g, -G, -s, -u以及-o等,

這些選項的意義與useradd命令中的選項一樣,可以為用戶指定新的資源值。

另外,有些系統可以使用選項:-l 新用戶名

這個選項指定一個新的賬號,即將原來的用戶名改為新的用戶名。

(2)例如:

# usermod -s /bin/ksh -d /home/z –g developer sam

此命令將用戶sam的登錄Shell修改為ksh,

主目錄改為/home/z,用戶組改為developer。

 

1.修改附屬組:

usermod -G grp1,grp2 liu  用戶原來屬於的附屬組刪除,修改為grp1,grp2

usermod -a -G grp4 liu 增加附屬組grp3,原來的附屬組保持

 

2、修改用戶名:

usermod -l 新名字 舊名字

 

練習:

usermod -u 1070 -s /sbin/nologin -a -G grp3 user1

usermod -s /bin/bash user1

系統上的用戶,UID修改為1070,shell修改為/bin/nologin,新增加附屬組grp3,再將shell修改回/bin/bash

 

4、passwd用戶密碼的管理 設置密碼 清空密碼  鎖密碼

用戶管理的一項重要內容是用戶口令的管理。用戶賬號剛創建時沒有口令,但是被系統鎖定,無法使用,必須為其指定口令后才可以使用,即使是指定空口令。

指定和修改用戶口令的Shell命令是passwd。超級用戶可以為自己和其他用戶指定口令,普通用戶只能用它修改自己的口令。

(1)語法

passwd 選項 用戶名

可使用的選項:

    -l 鎖定口令,即禁用賬號。

    -u 口令解鎖。

    -d 使賬號無口令。

    -f 強迫用戶下次登錄時修改口令。

如果默認用戶名,則修改當前用戶的口令。

 

鎖用戶--- 即禁用用戶用戶的密碼管理可在增添用戶后修改。

 

方式一-- 鎖密碼

2列:passwd -l user1 ——鎖定口令    

passwd  -u user1 ——解鎖口令  

3列:passwd  -e 0 user1 ——重新設置口令

5列:passwd  -x 180(天數) user1 ——修改口令最長生命周期

8列:useradd -e 20201001 user1 ——修改賬戶失效期,注意格式

  usermod -e 20201001 user1

 

例如,假設當前用戶是sam,則下面的命令修改該用戶自己的口令:

$ passwd

Old password:******

New password:*******

Re-enter new password:*******

 

如果是超級用戶,可以用下列形式指定任何用戶的口令:

# passwd sam

New password:*******

Re-enter new password:*******

普通用戶修改自己的口令時,passwd命令會先詢問原口令,驗證后再要求用戶輸入兩遍新口令,如果兩次輸入的口令一致,則將這個口令指定給用戶;而超級用戶為用戶指定口令時,就不需要知道原口令。

 

清空口令

為用戶指定空口令時,執行下列形式的命令:

# passwd -d sam

此命令將用戶 sam 的口令刪除,這樣用戶 sam 下一次登錄時,系統就不再允許該用戶登錄了。

passwd 命令還可以用 -l(lock) 選項鎖定某一用戶,使其不能登錄,例如:

# passwd -l sam

二、用戶組的管理

每個用戶都有一個用戶組,系統可以對一個用戶組中的所有用戶進行集中管理。不同Linux 系統對用戶組的規定有所不同,如Linux下的用戶屬於與它同名的用戶組,這個用戶組在創建用戶時同時創建。

用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實際上就是對/etc/group文件的更新。

1、增加一個新的用戶組使用groupadd命令。

1.groupadd增加組

(1)語法

groupadd 選項 用戶組

可以使用的選項有:

    -g GID 指定新用戶組的組標識號(GID)。

    -o 一般與-g選項同時使用,表示新用戶組的GID可以與系統已有用戶組的GID相同。

(2)實例

# groupadd group1

此命令向系統中增加了一個新組group1,新組的組標識號是在當前已有的最大組標識號的基礎上加1。

實例2:

# groupadd -g 101 group2

此命令向系統中增加了一個新組group2,同時指定新組的組標識號是101。

2、如果要刪除一個已有的用戶組,使用groupdel命令,

2.groupdel刪除組

(1)語法

groupdel 用戶組

 

groupdel group1

此命令從系統中刪除組group1。

修改用戶組的屬性使用groupmod命令。

3.groupmod修改用戶屬性

(1)語法

groupmod 選項 用戶組

常用的選項有:

    -g GID 為用戶組指定新的組標識號。

    -o 與-g選項同時使用,用戶組的新GID可以與系統已有用戶組的GID相同。

    -n新用戶組 將用戶組的名字改為新名字

(2)實例

# groupmod -g 102 group2

此命令將組group2的組標識號修改為102。

 

2

# groupmod –g 10000 -n group3 group2

此命令將組group2的標識號改為10000,組名修改為group3

 

3.如果一個用戶同時屬於多個用戶組,那么用戶可以在用戶組之間切換,以便具有其他用戶組的權限。

用戶可以在登錄后,使用命令newgrp切換到其他用戶組,這個命令的參數就是目的用戶組。例如:

$ newgrp root

這條命令將當前用戶切換到root用戶組,前提條件是root用戶組確實是該用戶的主組或附加組。類似於用戶賬號的管理,用戶組的管理也可以通過集成的系統管理工具來完成。

 

3.組管理

組分類

私有組   ---又稱主組,primary group

    每個用戶必須屬於且只能屬於一個私有組

    添加用戶時,若不做特殊指定,Linux系統將自動創建一個與用戶同名的組,作為用戶的私有組

    一個私有組,可以同時是多個用戶的私有組

    私有組不可刪

 

標准組   ---又稱附屬組

    普通用於多用戶管理的組,用戶可以在、不在、或在多個標准組中

    標准組可刪

注:一個組可以即是私有組,又是標准組

 

管理命令

groupadd  zu11

vi  /etc/group   ---組配置文件

    共四列:  組名:組密碼:組ID,即GID:標准組成員

gpasswd  -a  zhang  zu11   ---用戶加入組

id  zhang   ---查看用戶的相關id、組信息

gpasswd  -d  zhang  zu11   ---從組中刪除用戶

 

gpasswd  -A  zhang  zu11   --- -A指定組的管理員,注:只有組管理員才有權給組中添加、刪除用戶

gpasswd  -A  zhang,lisi  zu11   ---設置多個組的管理員

gpasswd  -A  root  zu11   --- 組管理員的設置是替換式,則設置root后,原管理員被撤銷

 

usermod  -G  zu22  zhang   --- 把用戶加入標准組中,但是以替換式操作的,即會從原有的標准組中退出

 usermod  -g  zu11  zhang   --- 更改用戶私有組

 

groupdel  zu22   ---刪除組

 

用戶復雜命令

useradd  -u  1100  -g  zu11  -G zu22  -d /mnt/zs  -s  /bin/bash   zhang

---  -u指定UID  -g 指定私有組  -G 指定標准組  -d 指定家目錄  -s 指定登錄后使用的shell

注:這些參數,在usermod命令中大多都可使用

    創建用戶后,會影響到的文件:/etc/passwd   /etc/shadow   /etc/group  /home家目錄(環境變量配文件)   

 

 

 

4.用戶組,實驗練習:

1、useradd -u 1050 user1  創建指定UID為1050的用戶user1,用戶的組是缺省的,組名和用戶名相同,組id和用戶id也相同。刪除用戶時,組也會一同刪除。

 

2、groupadd -g 1010 grp1 創建一個新的組

useradd -g grp1 user1  創建指定GID為1010的用戶user1,加入的組必須已經創建

 

3、useradd -G grp1 user1  創建指定附屬組grp1的用戶user1

 

4、groupadd -g 1012 grp2

groupadd -g 1013 grp3

useradd -g 1010 -G grp2,1013 user1 創建指定主組id為1010,附屬組為grp2,附屬組id1013的用戶user1

 

5、useradd -u 1040 -g 1010 -G grp2,grp3 user1  創建指定UID為1040、指定主組id為1010,附屬組為grp2,附屬組id1013的用戶user1

 

6、mkdir /user1

useradd -d /user1/myuser user1  創建指定家目錄為/user1/myuser的用戶user1

passwd

 

7、rm -rf /user1

useradd -d /user1/myuser user1  沒有user1目錄,創建指定家目錄為/user1/myuser的用戶user1能夠成功創建但遠程登錄后會在shell下

 

8、創建user1.將其使用的shell指定為/bin/sh或/sbin/nologin

useradd -s /bin/sh user1

 

9、綜合練習

centos7上,執行下述命令,產生如顯示的結果:

#grep liuwei /etc/passwd

#liuwei:x:1030:1002:Liu Wei Xin:/app/home/liuwx:/sbin/nologin

#grep liuwei /etc/group

#dongfang:x:1008:liuwei

根據上述信息,推導出創建用戶liuwei的命令

groupadd -g 1008 dongfang

mkdir -p /app/home

useradd -u 1030 -c Liu\ Wei\ Xin -g 1002 -G 1008 -d /app/home/liuwx -s /sbin/nologin liuwei

 

 

三個系統文件

完成用戶管理的工作有許多種方法,但是每一種方法實際上都是對有關的系統文件進行修改。

與用戶和用戶組相關的信息都存放在一些系統文件中,

這些文件包括/etc/passwd, /etc/shadow, /etc/group等。

 

/etc/passwd文件是用戶管理工作涉及的最重要的一個文件。

Linux系統中的每個用戶都在/etc/passwd文件中有一個對應的記錄行,它記錄了這個用戶的一些基本屬性。

這個文件對所有用戶都是可讀的。

 

1.)cat /etc/passwd   用戶密碼  七個字段意義

 

auth:x:7:21:Authentication administrator:/tcb/files/auth:

cron:x:9:16:Cron daemon:/usr/spool/cron:

listen:x:37:4:Network daemon:/usr/net/nls:

lp:x:71:18:Printer administrator:/usr/spool/lp:

 

從上面的例子我們可以看到,/etc/passwd中一行記錄對應着一個用戶,每行記錄又被冒號(:)分隔為7個字段

 

7個字段其格式和具體含義如下:

用戶名:口令:用戶標識號:組標識號:注釋性描述:主目錄:登錄Shell

sam:x:200:50:Sam san:/home/sam:/bin/sh

 

:號隔開

cat /etc/passwd ——用戶信息

1、用戶

2、x,密碼列,由於Linux把密碼轉存到了另一個專用的密碼配置文件,所以用x填充

3、用戶id

4、主組id

5、用戶屬性列,如:電話、郵箱、地址,一般不填

6、用戶所在家目錄

7、用戶所使用的的shell版本

 

2.cat /etc/shadow  保存口令 用戶狀態 9個字段

登錄名:加密口令:最后一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標志

 

cat /etc/shadow保存口令信息用戶的狀態

 

root:Dnakfw28zf38w:8764:0:168:7:::

daemon:*::0:0::::

bin:*::0:0::::

sys:*::0:0::::

adm:*::0:0::::

uucp:*::0:0::::

nuucp:*::0:0::::

auth:*::0:0::::

cron:*::0:0::::

listen:*::0:0::::

lp:*::0:0::::

sam:EkdiSECLWPdSa:9740:0:0::::

 

9個字段

1:用戶名

*2: 加密后的口令,若包括非crypt3()結果的字符,如有! ? *等,則用戶不能用Linux口令登錄(用戶登錄系統有其它意義),被鎖定了。

*3: 最近一次改變密碼的日期。是網1970 1 1開始的天數。0表示下次登錄必須改變密碼( -e  --expired) ,空表示密碼有效期的特性被禁用。

4:口令最短生命期,單位天,表示間隔幾天,才允許修改口令。0或空表示不設期限(-n  --minimum)

*5: 口令最長生命周期,單位天,表示間隔幾天就要修改口令,但超過該期限,口令依然有效,但下次登錄就要求修改口令了。空值表示沒有最長生命周期,也沒有告警周期,也沒有非活動周期。若最長周期短語最小周期,則用戶不能修改口令(-x --maximum)

6: 告警期,單位天。表示在最大生命期之前的幾天,用戶收到口令將過期警告。0或空值表示無告警期。 (W --warning)

7:非活動期,單位天。口令超過了最大生命周期后,口令依然可用的期限(單用戶登錄后要求修改口令)。超過該期限,用戶不能登錄。空值表示沒有強制的非活動期,即非活動期不受限制。 (-i --inactive )

*8:賬戶失效期單位天。1970. l 1開始的天數。空值表示無失效期,即永遠有效: 0不要用,因為即可能被認為無失效期,也可能被認為期限就到1970.1.1。

注意:賬戶失效和口令的過期不同,賬戶失效表示賬戶不再允許登錄,口令失效表示不能用原來失效的口令登錄。 (useradd usermod修改過期)

9: 保留,用於將來使用。

用戶組的所有信息都存放在/etc/group文件中。

3.cat /etc/group文件 組 四個字段

每個用戶都屬於某個用戶組;一個組中可以有多個用戶,一個用戶也可以屬於不同的組。

當一個用戶同時是多個組中的成員時,在/etc/passwd文件中記錄的是用戶所屬的主組,也就是登錄時所屬的默認組,而其他組稱為附加組。

用戶要訪問屬於附加組的文件時,必須首先使用newgrp命令使自己成為所要訪問的組中的成員。

 

組名:口令:組標識號:組內用戶列表

cat /etc/group  ——組信息

1、組名

2、密碼

3、主組id

4、附屬組為該組的用戶名

 

用戶組的所有信息都存放在/etc/group文件中。此文件的格式也類似於/etc/passwd文件,由冒號(:)隔開若干個字段,

 

四個字段

組名:口令:組標識號:組內用戶列表

 

"組名"是用戶組的名稱,由字母或數字構成。與/etc/passwd中的登錄名一樣,組名不應重復。

"口令"字段存放的是用戶組加密后的口令字。一般Linux 系統的用戶組都沒有口令,即這個字段一般為空,或者是*。

"組標識號"與用戶標識號類似,也是一個整數,被系統內部用來標識組

"組內用戶列表"是屬於這個組的所有用戶的列表/b],不同用戶之間用逗號(,)分隔。這個用戶組可能是用戶的主組,也可能是附加組。

 

cat /etc/group

root::0:root

bin::2:root,bin

sys::3:root,uucp

adm::4:root,adm

daemon::5:root,daemon

lp::7:root,lp

users::20:root,sam

四、添加批量用戶 user

1.先編輯一個文本用戶文件。

vim /etc/passwd一個范例文件user.txt

user001::600:100:user:/home/user001:/bin/bash

user002::601:100:user:/home/user002:/bin/bash

每一列按照/etc/passwd密碼文件的格式書寫,要注意每個用戶的用戶名、UID、宿主目錄都不可以相同,其中密碼欄可以留做空白或輸入x號。

 

2.以root身份執行命令 /usr/sbin/newusers,從剛創建的用戶文件user.txt中導入數據,創建用戶:

# newusers < user.txt

vipw 

vi /etc/passwd 檢查文件是否已經出現這些用戶的數據,並且用戶的宿主目錄是否已經創建。

 

3.執行命令/usr/sbin/pwunconv。

/etc/shadow 產生的 shadow 密碼解碼,然后回寫到 /etc/passwd 中,

並將/etc/shadow的shadow密碼欄刪掉。

這是為了方便下一步的密碼轉換工作,即先取消 shadow password 功能。

# pwunconv

 

4.編輯每個用戶的密碼對照文件。

范例文件 passwd.txt 內容如下:

user001:密碼

user002:密碼

user003:密碼

 

5.以root身份執行命令 /usr/sbin/chpasswd。

創建用戶密碼,chpasswd 會將經過 /usr/bin/passwd 命令編碼過的密碼寫入 /etc/passwd 的密碼欄。

chpasswd < passwd.txt

 

6.確定密碼經編碼寫入/etc/passwd的密碼欄后。

執行命令 /usr/sbin/pwconv 將密碼編碼為 shadow password,並將結果寫入 /etc/shadow。

# pwconv

這樣就完成了大量用戶的創建了,之后您可以到/home下檢查這些用戶宿主目錄的權限設置是否都正確,並登錄驗證用戶密碼是否正確。

 

.用戶工作環境PATH  sudo 授權 發送通知

每個用戶都有自己的工作環境,環境的設置有配置文件確定,配置文件中采用設置變量的方式設定工作環境,   變量用   鍵值對的方式   設置。

shell有固定的變量定義,都采用大寫稱為保留變量,  用於環境的保留變量又叫環境變量。

 

例:PATH   PWD  SHELL HOME等。

查看環境變量使用env命令

設置環境變量使用 變量名=值,但設置只對當前shell有效。若對子shell有效,要將變量輸出

 

輸出環境變量  使用export命令

export  變量=值

用上述方式設置的環境變量只對當前會話有效,若永久有效,需修改配置文件。

 

1.設置系統 和 個人 環境變量配置文件  修改path

(1)系統環境變量配置文件

針對整個系統生效,即所有用戶都會繼承、遵守

/etc/bashrc針對系統shell

/etc/profile針對外圍程序,一般更改此文件

 

(2)個人環境變量配置文件

針對單個用戶生效,不影響其他用戶,每個用戶都用一份

$HOME/.bachrc針對shell

$HOME/.bash_profile針對外圍程序  

$HOME/.profile默認不存在,等同於.bash_profile

 

vi  /etc/profile   ---更改系統配置

PS1="{\u@\h \t \W}\\$"

 

alias cd  /etc/sysconfig/network-scripts"

 

保存退出

 

vi  $HOME/.bash_profile

寫入環境變量、別名的配置命令

注:個人配置與系統配置沖突,以個人為准。原因:開機時先讀系統的,后讀個人的,后讀覆蓋先讀

 

練習:

1、自己定義環境變量:

USERHOME    該環境變量的值為 /usr/local/userhome

設置到自己用戶的環境文件中,並輸出為全部可用環境變量   使用env命令可以看

 

vim .bash_profile/~/.bash_profile文件中修改

export  USERHOME=/usr/local/userhome

 

 

2、設置PATH環境變量,將現有的PATH環境變量增加搜索/usr/local/userhome/bin目錄。

vim .bash_profile/~/.bash_profile文件中修改

PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/local/userhome/bin

2.用戶切換

su  zhang   切換到指定用戶界面下

su  -  zhang   - 表示su過去后,使用對方用戶的環境變量配置,

不加-,表示su過去后,使用原用戶的環境變量配置

 

root用戶切換時不需要輸入密碼可直接切換,普通用戶切換時需要輸入密碼

3.sudo授權 普通用戶對系統進行管理  功能格式 案例

功能:允許指定用戶使用某些系統命令

缺省情形下,只要將用戶加入wheel組,就可以執行管理命令

 

visudo   編輯sudo配置文件visudo是一個整命令,實質是編輯的/etc/sudoers文件

 

 

格式:

找到 root   ALL=(ALL)   ALL 行,在下面寫入或底行寫入

 

目標用戶    主機名=(以誰的身份)   允許使用的命令的絕對路徑,ALL表示所有全部命令 絕對路徑可用whereis、which查到

 

例:

zhang  CentOS7-3=(root)    /usr/bin/mount,/usr/bin/umount    ALL 表示所有

解釋:

允許用戶zhang,在CentOS7-3主機上,以root用戶的身份,運行mount、umount命令

 

su  - zhang

sudo  useradd  my_user1

4.su'do進階給組授權:

visudo

%zu11    CentOS7-3=(root)    GUAZAI     --- %表示給組授權

5.用戶通信:發通知

write  zhang   給已登錄用戶發送消息,回車后,進入消息編輯狀態,ctrl+d停止編寫並發送

write  root  tty1  指定終端上的用戶發送消息

wall   發送廣播消息,所有在線用戶都收

mail  zhang   給指定用戶發送郵件,回車后,進入郵件編輯界面,ctrl+d停止編寫並發送

mail  查看個人郵件,輸入郵件編號,查看郵件,輸入r 回復郵件,q鍵退出

說明:通過以上的保留字,制定的一些文件名、字符的格式,稱為正則表達式

網址的正則表達式:http://?*.?*.?*     郵箱的正則表達式:?*@?*.?* 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM