天天看點

鳥哥的Linux私房菜 指令行筆記4

使用者識别碼:UID與GID

使用者ID:UID

群組ID:GID

#檢視系統裡面有沒有名為dmtsai的使用者
id dmtsai
           

/etc/passwd檔案結構:記錄賬号資訊

每一行都代表一個賬号,有幾行就代表有幾個賬号在你的系統中。不過需要特别留意的是,

裡頭很多賬号本來就是系統正常運作所必須要的。我們可以簡稱他為系統賬号,例如bin,

daemon,adm,nobody…

head -n 4 /etc/passwd

鳥哥的Linux私房菜 指令行筆記4
content
root 賬号名稱
x 密碼
UID;系統管理者UID是0,1-999UID系統賬号,1000~60000給一般使用者
GID,與/etc/group有關
root 使用者資訊說明欄
/root 家目錄
/bin/bash shell目錄

/etc/shadow檔案結構:記錄賬号密碼

head -n 4 /etc/shadow

鳥哥的Linux私房菜 指令行筆記4
content
root 賬号名稱
$ 6$tbCCce… 經過編碼的密碼
16559 最近更改密碼的日期
密碼不可被改動的天數
99999 密碼需要變更的天數,你必須要這個天數内重新設定密碼
7 密碼需要變更期限前的警告天數;密碼到期前7天之内,系統會警告使用者
- 密碼過期後賬号寬限時間;密碼過期賬号還能工作
- 賬号失效日期
- 保留

這裡Linxu的日期是以1970年1月1日作為1而累加的,1971年1月1日則為366。

計算累積日期:

鳥哥的Linux私房菜 指令行筆記4

(1)你想要計算的日期 (2)一天的秒數 (3)+1:補齊1970/01/01當天

/etc/group檔案結構:記錄群組資訊

head -n 4 /etc/group

鳥哥的Linux私房菜 指令行筆記4
content
root 群組名稱
x 群組密碼
GID
- 此群組内的賬号名稱。例如将dmtsai和alex加入群組root,這裡寫成 dmtsai,alex
鳥哥的Linux私房菜 指令行筆記4

Q:假如我同時加入多個群組,那麼我在作業時,到底是以那個群組為準?

有效群組(effective group)與初始群組(initial group)

初始群組:使用者/etc/passwd中第四欄GID所對應的組

我們該如何知道所有支援群組呢?

groups

鳥哥的Linux私房菜 指令行筆記4

我們如何切換有效群組?

newgrp 切換組名

鳥哥的Linux私房菜 指令行筆記4

切換後輸入exit傳回原來的群組

鳥哥的Linux私房菜 指令行筆記4

/etc/gshadow

head -n 4 /etc/gshadow

鳥哥的Linux私房菜 指令行筆記4
content
root 群組名稱
- 密碼欄,如果開頭為!表示無合法密碼,所有無群組管理者
- 群組管理者的賬号
- 加入該群組支援的所屬賬号

賬号管理

useradd:新增使用者

useradd [-u UID] [-g 初始群組] [-G 次要群組] [-mM] [-c 說明欄] [-d homedictory ] [-s shell] 使用者賬号名

option mean
-u 後面接UID,指定一個特定UID給這個賬号
-g 指定initial group,/etc/passwd的第四個欄目
-G 指定次要群組,/etc/group
-d 指定某個目錄做家目錄,用絕對路徑表達
-s 預設/bin/bash
-c /etc/passwd第五欄的說明内容
-m 強制,建立使用者的家目錄
-M 強制,不建立使用者的節目錄
-r 建立一個系統賬号
#完成參考預設值建立一個使用者,名稱為vbird1
useradd vbird1
grep vbird1 /etc/passwd /etc/shadow /etc/group
           
鳥哥的Linux私房菜 指令行筆記4
#以users為初始群組,uid為1500建立一個名為vbird2的賬号
useradd -g users -u 1500 vbird2

#建立一個系統賬号,名稱為vbird3
useradd -r vbird3 
所有系統賬号不會主動建立家目錄
           

useradd參考檔

呼叫出useradd的預設值

useradd -D

鳥哥的Linux私房菜 指令行筆記4
title mean
GROUP=100 建立賬号的初始群組使用的GID為100,在CentOS上面預設的群組為與賬号名相同的群組
HOME=/home 使用者家目錄的basedir
INACTIVE=-1 密碼過期後是否會失效的設定值。0代表密碼過期立刻失效;-1代表永遠不會失效;數字n代表過期n天後會失效
EXPIRE=:賬号失效日期
SHELL=/bin/bash 預設使用的shell程式檔名
SKEL=/etc/skel 使用者家目錄參考基準目錄
CREATE_MAIL_SPOOL=yes 建立使用者的mailbox

UID/GID密碼參數參考

/etc/login.defs

鳥哥的Linux私房菜 指令行筆記4

passwd

所有人均可使用來改自己的密碼:passwd [–stdin] 賬号名稱

root功能:passwd [-l] [-u] [–stdin] [-S] [-n day] [-x day] [-w day] [-i day] 賬号

option mean
–stdin 可以通過來自前一個管線的資料,作為密碼輸入
-l lock,/etc/shadow第二欄最前面加上!使密碼失效
-u unlock
-S 列出密碼的相關參數
-n 多久可以修改密碼的天數
-x 多久内必須修改密碼
-w 密碼過期前的警告天數
-i 密碼時效天數

要幫一般賬号建立密碼需要使用 “passwd 賬号” 格式,使用“passwd”是修改自己的密碼

#root給予vbird2密碼
passwd vbird2
#用vbird2登入後,修改VBird2自己的密碼
passwd
           

設定密碼的要求

(1)密碼不能與賬号相同

(2)需要超過8個字元

(3)密碼不要使用個人資訊

(4)密碼不要使用簡單關系式

(5)密碼盡量使用大小寫字元、數字和特殊字元組合

#使用standard input建立使用者密碼
echo "abc543CC" | passwd --stdin vbird2

#管理vbird2密碼具有60天變更,密碼過期10天後失效的設定
passwd -x 60 -i 10 vbird2
passwd -S vbird2

#讓vbird2的賬号失效并觀察 再生效
passwd -l vbird2
passwd -S vbird2
passwd -u vbird2
           

chage

如何顯示更詳細的密碼參數顯示功能?

passwd -S

chage

chage [-ldElmMW] 賬号名

option mean
-l 列出該賬号的詳細密碼參數
-d 修改shadow第三欄目(最近一次更改密碼的日期)後面接日期,格式為YYYY-MM-DD
-E 後接日期,修改shadow第八欄目(賬号失效日)
-l 後接天數,修改密碼失效日期
-m 後接天數,修改密碼最短保留天數
-M 後接天數,修改密碼多久需要進行變更
-W 後接天數,修改密碼過期前警告日
#列出vbird2的詳細密碼參數
chage -l vbird2
#建立一個agetest的賬号,該賬号第一次登入後使用預設密碼,但必須要更改密碼後才能夠登入系統使用bash環境
useradd agetest
echo "agetest" | passwd -stdin agetest
chage -d 0 agetest 密碼建立時間被改為1970/1/1
           

usermod

usermod [-cdegGlsuLU] username

option mean
-c 修改賬号的說明
-d 修改家目錄
-e 修改失效日期,格式YYYY-MM-DD
-g 修改初始群組
-G 修改次要群組
-l 修改賬号名稱
-s 修改shell
-u 修改UID
-L 當機密碼
- U 解凍密碼
#修改使用者vbird2的說明欄,加上 VBird's test
usermod -c "VBird's test" vbird2

#使用者vbird2在2015/12/31失效
usermod -e "2015-12-31" vbird2

#建立vbird3這個系統賬号時沒有給予家目錄,請建立他的家目錄
ll -d ~vbird3 确認家目錄不存在
cp -a /etc/skel /home/vbird3 
chown -R vbird3:vbird3 /home/vbird3  連同家目錄底下的一起變更
chmod 700 /home/vbird3
ll -a ~vbird3
           

userdel

userdel [-r] username

-r:連同使用者家目錄一并删除

一般使用者功能(非root)

id:查詢某人或自己相關UID/GID資訊

id username

#查閱root自己的相關id資訊
id
#查閱vbird1
id vbird1
           

finger:查閱使用者相關資訊

finger [-s] username

-s:僅列出使用者的賬号、全名、終端代号與登入時間等

#觀察vbird1的使用者相關賬号屬性
finger vbird1
           
鳥哥的Linux私房菜 指令行筆記4
title content
Login 使用者賬号(/etc/passwd 第一欄目)
Name 全名(/etc/passwd 第五欄目的注解)
Directory 家目錄
Shell shell檔案所在
Never logged in 使用者登入主機的情況
No mail 調查/var/spool/mail當中的信箱資料
No plan 調查~username/.plan檔案,并讀取其中說明
#利用vbird1建立自己的計劃檔
echo "i will study Linux during this year." > ~/.plan
finger vbird1

#找出目前在系統上面登入的使用者與登入時間
finger
           

chfn:change finger

chfn [-foph] username

option mean
-f fullname,後面接完整大名
-o office,辦公室的房間号碼
-p phone,辦公室的電話号碼
-h homephone,家裡的電話号碼

#vbird1更改一下自己的相關資訊 chfn

鳥哥的Linux私房菜 指令行筆記4

chsh:change shell

chsh [-ls]

option mean
-l 列出目前系統上面可用的shell
-s 設定修改自己的shell
#用vbid1的身份列出系統上所有合法的shell,并且制定csh為自己的shell
chsh -l
chsh -s /bin/csh ; grep vbird1 /etc/passwd
chsh -s /bin/bash
           

新增與移除群組

groupadd:增加群組

groupadd [-g gid] [-r] 群組名稱

option mean
-g 給予群組一個GID
-r 建立系統群組

groupmod:修改group相關參數

groupmod [-g gid] [-n group_name] 群組名

option mean
-g 修改GID
-n 修改群組名稱
将group1的名稱改為mygroup,GID為201
groupmod -g 201 -n mygroup group1
           

groupdel:删除群組

groupdel groupname

gpasswd:群組管理者功能

關于root做的動作:

gpasswd groupname

gpasswd [-A user1] [-M user3] groupname

gpasswd [-rR] groupname

option mean
-A 将groupname的主要權交由user1管理
-M 将某些賬号加入這個群組中
-r 将groupname的密碼移除
-R 将groupname的密碼欄失效
- 若沒有參數,表示給予groupname一個密碼

關于群組管理者做的動作:

gpasswd [-ad] user groupname

option mean
-a add, 将使用者加入到groupname這個群組當中
-d del,将使用者移除groupname這個群組當中
建立一個新群則,名稱為testgroup,且群組交由vbird1管理
groupadd testgroup 建立群組
gpasswd testgroup 設定密碼
gpasswd -A vbird1 testgroup 
           

su:身份切換指令

su [-lm] [-c command] username

option mean
- su - 代表切換root身份
-l 後接username
-m 使用目前環境設定
-c 僅進行一次指令,後面接指令
#切換root身份 觀察變數
su -
env|grep root
exit

# 執行指令
su --c "head -n 3 /etc/shadow"

#切換身份vbird1
su -l vbird1
           

sudo:相比su需要知道新切換使用者的密碼,sudo執行僅需要自己的密碼即可

sudo [-b] [-u username]

option mean
-b 将後續的指令方到背景中讓系統自動執行
-u 後面接欲切換的使用者,預設為root
#以sshd身份在/tmp底下建立一個mysshd文檔
su -u sshd touch /tmp/mysshd

           

繼續閱讀