Linux是個多用戶多任務(wù)操作系統(tǒng),所有要使用系統(tǒng)資源的用戶都必須向管理員申請一個賬號,然后以這個賬號的身份進(jìn)入系統(tǒng)。用戶的賬號一方面能幫助管理員對使用系統(tǒng)的用戶進(jìn)行跟蹤涂炎,并控制他們對系統(tǒng)資源的訪問;另一方面也能幫助用戶組織文件设哗,并為用戶提供安全性保護(hù)唱捣。每個用戶賬號都擁有一個惟一的用戶名和用戶口令。用戶在登錄時輸入正確的用戶名和口令后网梢,才能進(jìn)入系統(tǒng)和自己的主目錄震缭。
實(shí)現(xiàn)用戶的管理,要完成的工作主要有如下幾個方面:
1战虏、用戶賬號的添加拣宰、刪除和修改。
2烦感、用戶口令的管理巡社。
3、用戶組的管理手趣。
首先Linux用戶類別有:
管理員,UID:root,0
系統(tǒng)用戶,UID:1-499(CentOS 6),1-999(CentOS 7)
登陸用戶,UID:>500(CentOS 6),>1000(CentOS 7)
用戶組類別:
管理員組,GID:root,0
系統(tǒng)組,GID:1-499(CentOS 6),1-1000(CentOS 7)
普通組,GID:>500(CentOS 6),>1000(CentOS 7)
Linux組的類別:
用戶的主要組(主組):每個有且僅有一個主要組晌该,當(dāng)用戶創(chuàng)建時,自動創(chuàng)建一個與用戶同名的組作為主要組绿渣。
用戶的附加組(輔助組):一個用戶可以屬于零個或多個輔助組朝群。
CentOS6和7的默認(rèn)UID和GID不同,這個是由于/etc/login.defs文件里面的默認(rèn)值所決定的
Linux用戶和組的主要配置文件
/etc/passwd:用戶及其屬性信息(名稱怯晕、UID潜圃、主組ID等)
該文件里面一共有7項(xiàng),包括
# [root@centos ~]# cat ?/etc/passwd
# root(用戶名):x(密碼):0(UID):0(GID):root(注釋):/root(家目錄):/bin/bash(默認(rèn)SHELL)
假如把普通用戶的UID更改成0舟茶,該普通用戶會變成管理員賬號,因?yàn)樵贚inux系統(tǒng)里面,識別管理員是否為管理員吧凉,就是查看用戶的UID號碼隧出,為0則為管理員,在生產(chǎn)環(huán)境中阀捅,可能會把管理員root的賬號改成其他名字胀瞪,這樣做是以防止黑客攻擊root賬號來進(jìn)行破解。
/etc/group:組及其屬性信息
getent group [groupname]
# [root@centos7 ~]# cat /etc/group
# root(主組):x(組密碼):0(GID):gentoo(附加組的用戶列表)
組成員:將該組作為輔助組的成員列表饲鄙。當(dāng)成員先把該組當(dāng)作輔助組凄诞,再轉(zhuǎn)成主要組時,不改變忍级。當(dāng)成員離開該組時帆谍,被刪除。
/etc/shadow:用戶密碼及其相關(guān)屬性
# [root@centos 7~]# cat ?/etc/shadow
# root(用戶名):$6$(加密方式為sha512加密)5wrv8BV(隨機(jī)數(shù)轴咱,俗稱鹽)$n3wljU/4.OUa/X.RYOGbE3SX72vay1Qo1ZXiUNZhuQJIB7fdzE87gaCQiuiOZbin(用戶密碼):17110(從1970-1-1到最近一次修改的時間經(jīng)過了多少天來表示):0(最小存活期,密碼再過幾天可以被更改):99999(最大存活期,密碼過期時間):7(在正確登錄時汛蝙,密碼過期前提醒時間):(在正確登錄時,密碼過期后幾天賬號會被鎖定):(從1970年1月1日算起朴肺,多少天后帳號失效):(保留)
上面這個設(shè)置了密碼顯示的用戶窖剑。
現(xiàn)在我們再新建一個用戶看看
[root@centos6 ~]# useradd wang
[root@centos6 ~]# tail -1 /etc/shadow
wang:!!:17015:0:99999:7:::
我們會看見賬號密碼那里有兩個!!,這表示賬號被鎖定戈稿,沒有密碼的話不允許該用戶去登陸西土,假如有密碼,但是那里還是有一個嘆號的話鞍盗,也表示賬號被鎖定需了,不對用戶進(jìn)行解鎖的話該用戶將無法登陸。假如沒有嘆號的話橡疼,該用戶可以沒有密碼的情況下面直接登陸援所。不過該功能只能在CentOS 5版本和更老的版本可以實(shí)現(xiàn),為了安全起見欣除,從CentOS 6以后已經(jīng)修正此問題住拭。
/etc/gshadow:組密碼及其相關(guān)屬性
getent gshadow [groupname]
# cat /etc/gshadow
# root/(主組):(組密碼):(組管理員列表):gentoo(附加組的用戶列表)
當(dāng)用戶不是該groupname的輔助組成員時,則需要輸入密碼历帚,成功后臨時以主要組的身份加入該組滔岳。
當(dāng)用戶是該groupname的輔助組成員時,無需輸入密碼挽牢,將臨時以主要組的身份加入該組谱煤,而其原有的主要組,臨時變?yōu)檩o助組禽拔。
注意:為安全起見刘离,現(xiàn)在一般都沒有組密碼室叉,直接管理員指派,因?yàn)楫?dāng)其他用戶知道了組密碼硫惕,可以隨意加入該組茧痕,這樣的話就顯得不安全。
用戶和組管理命令
用戶管理命令: ? useradd ? usermod ?userdel?
組的管理命令: ? groupadd ? groupmod ? groupdel
用戶管理命令
useradd [options] username增加用戶
-u? UID username 創(chuàng)建用戶時指定UID恼除,(如不指定則Centos:500-60000, Centos7: 1000-60000)
-o? 配合-u選項(xiàng)使用踪旷,不檢查UID的唯一性,可以與已存在的用戶的uid相同
-g? groupname username 創(chuàng)建用戶時豁辉,指定主組為某個已存在的組(將不會再創(chuàng)建與用戶同名的組)
-G? group1[,group2] username ?指定用戶的輔助組令野,但GID要事先存在
-N username 不創(chuàng)建私用組做主組,使用用戶的主要組做主組
-d? 目錄: 指定家目錄(確保指定的家目錄所在的上級目錄要存在徽级,且家目錄本身不能存在)
-c? 備注 ?創(chuàng)建用戶時指定描述信息
-s? shell:指定默認(rèn)shell气破,應(yīng)該指定使用/etc/shells文件中出現(xiàn)的shell
-r? 創(chuàng)建系統(tǒng)用戶 特點(diǎn):CentOS 6: ID<500,CentOS 7: ID<1000 默認(rèn)shell為/sbin/nologin
-D? 顯示或更改默認(rèn)設(shè)置? (默認(rèn)值設(shè)定:/etc/default/useradd或/etc/login.defs文件中)(此命令相當(dāng)于cat / etc/default/useradd)
注:創(chuàng)建用戶時的諸多默認(rèn)設(shè)定配置文件為/etc/login.defs
useradd –D -s SHELL? ? ? -d是指定用戶的家目錄和登錄shell
注意:創(chuàng)建用戶不加-d和-s是是系統(tǒng)默認(rèn)的家目錄(/home/qqq)和登錄shell(/bin/bash)灰追。
useradd –D –b BASE_DIR
useradd –D –g GROUP
[root@centos6 ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
該命令堵幽,可以查看到創(chuàng)建用戶時候的各項(xiàng)默認(rèn)值
例如更改其他用戶默認(rèn)的家目錄和默認(rèn)SHELL之類等等的參數(shù)就在這里面
/etc/skel? ? 家目錄文件的來源,在此文件夾里面新建文件的話弹澎,創(chuàng)建新用戶的時候會連指定的新文件一并創(chuàng)建
/etc/login.defs? 一些用戶和組等創(chuàng)建的默認(rèn)設(shè)置的文件
usermod [options] username 修改指定用戶(跟useradd命令使用方法類似)
-u UID 更改用戶的UID
-g 組名 ?用戶名 更改用戶的主組
-G "" username? 或 usermod -G primarygroup username 清空用戶所有的輔助組
-aG ?組名朴下,可以追加輔助組而不用覆蓋之前的組
-s SHELL 更改用戶的默認(rèn)SHELL
-c 注釋
-d home,跟-m同時用移動家目錄數(shù)據(jù)苦蒿,并將家目錄移動到目的目錄并改名 (不會創(chuàng)建殴胧,只修改/etc/passwd當(dāng)中的家目錄信息)
-m 移動家目錄數(shù)據(jù),跟-d同時用
-l 新的名字佩迟,把用戶改名
-e 指定過期日期yyyy-mm-dd
-f days ?指定密碼過期之后多少天帳戶過期
-L 鎖定指定用戶团滥,在/etc/shadow 里面加!? ? (同以上/etc/shadow的解釋)
-U 解鎖用戶,將/etc/shadow 里面的!號拿掉? ? (同以上/etc/shadow的解釋)
userdel [options] LOGIN 刪除指定用戶
-r 連同家目錄和郵箱一起刪除
組的管理命令
groupadd [options] groupname 添加指定組
-g:指定用戶的GID
-r groupname: 創(chuàng)建系統(tǒng)組 ? ? CentOS 6: ID<500 ? CentOS 7: ID<1000
groupmod [options] GROUP 修改指定組
-g? newgid groupid: 修改組的GID
-n? newgrpname oldgrpname: 修改組的組名
groupdel [options] GROUP 刪除指定組
groupmems [options]? [action] 更改和查看組成員
groupmems -a user_name | -d user_name | [-g group_name] | -l | -p? (CentOS 7才有此命令)
options:
-g, --group groupname 更改為指定組 (只有root)(查看組里有哪些用戶)
-l -g 用戶名: 查看指定用戶名組下面還有哪些用戶屬于此組
-a? ? 要增加的組?
切換用戶或以其他用戶身份執(zhí)行命令
切換用戶的方式:
su UserName:非登錄式切換报强,即不會讀取目標(biāo)用戶的配置文件灸姊,不改變當(dāng)前工作目錄
su – UserName:登錄式切換,會讀取目標(biāo)用戶的配置文件秉溉,切換至家目錄力惯,完全切換
root su至其他用戶無須密碼;非root用戶切換時需要密碼
換個身份執(zhí)行命令:
su [-] UserName-c 'COMMAND'
選項(xiàng):-l –login:
su -l UserName相當(dāng)于su-UserName
查看用戶相關(guān)的ID信息
id [OPTION]… [USER]
-u: 查看用戶的UID
-g: 查看用戶的GID
-G: 查看用戶的Groups
-n: 查看用戶的Name
修改用戶密碼策略
chage -l username 顯示帳戶的密碼信息
-d 指定密碼的上次修改時間(yyyy-mm-dd)
-d 0 則強(qiáng)制用戶下次登錄時必須修改密碼
-E 指定賬戶的過期時間
-I 密碼過期之后多少天帳戶過期
-m 設(shè)置最小存活時間
-M 設(shè)置最大存活時間
-W 設(shè)置密碼過期前的提醒時間
chage username 交互式修改用戶的密碼策略
示例:
chage -d 0 tom 下一次登錄時強(qiáng)制重設(shè)密碼
chage -m 0 –M 42 –W 14 –I 7 tom
chage -E 2016-09-10 tom
getent? passwd,shadow,gourp,gshadow? USERNAME/GROUPNAME
直接查看指定用戶/組里面的passwd,shadow,gourp,gshadow文件里面的內(nèi)容
其他命令總結(jié):
chsh:修改默認(rèn)的shell
chfn:修改用戶注釋
finger:查看個人信息
vipw:使用vim來編輯passwd文件
vigr:使用vim來編輯group文件
pwconv:pwconv命令用來開啟用戶的投影密碼
pwunconv:pwconv命令用來關(guān)閉用戶的投影密碼
Linux系統(tǒng)里的用戶和群組密碼召嘶,分別存放在名稱為passwd和group的文件中父晶, 這兩個文件位于/etc目錄下。因系統(tǒng)運(yùn)作所需弄跌,任何人都得以讀取它們甲喝,造成安全上的破綻。投影密碼將文件內(nèi)的密碼改存在/etc目錄下的shadow和gshadow文件內(nèi)铛只,只允許系統(tǒng)管理者讀取埠胖,同時把原密碼置換為"x"字符糠溜,有效的強(qiáng)化了系統(tǒng)的安全性。
批量增加用戶和改密碼
newusers FILE(有格式的文件)? 批量加用戶? 文件格式? /etc/passwd 文件的格式 root:x:0:0::/root:/bin/bash
ex. newusers user.txt
chpasswd FILE (有格式的文件) 批量改密碼? USERNAME:PASSWORD
ex. cat p.txt |chpasswd
注意押袍,按照以上步驟的方法批量添加完用戶和密碼以后诵冒,這些用戶的家目錄里面并沒有配置凯肋,此時需要我們手動把這里面的配置復(fù)制到它們的家目錄里面
/etc/skel 這個文件甲下面的文件是關(guān)于用戶初始配置里面的變量文件之類
cp -r /etc/skel/.[^.]* /home/USERNAME
練習(xí):
創(chuàng)建下面的用戶谊惭、組和組成員關(guān)系
名字為admins 的組
用戶natasha,使用admins 作為附屬組
用戶harry侮东,也使用admins 作為附屬組
用戶sarah圈盔,不可交互登錄系統(tǒng),且不是admins 的成員悄雅,
natasha驱敲,harry,sarah密碼都是centos
groupadd admins
useradd -G admins natasha
useradd -G admins harry
useradd -s /sbin/nologin sarah
echo centos |passwd --stdin natasha > /dev/null
echo centos |passwd --stdin harry > /dev/null
echo centos |passwd --stdin sarah > /dev/null
/dev/null是一個特殊的設(shè)備宽闲,就是一個數(shù)據(jù)黑洞众眨,吞噬送往該設(shè)備的所有數(shù)據(jù),以后如果不想讓屏幕有顯示可以容诬,會經(jīng)常用到這個/dev/unll 的數(shù)據(jù)吞噬設(shè)備