1.常用配置文件
用戶信息文件:? /etc/password
密碼文件:????? /etc/shadow
用戶組文件:??? /etc/group
用戶組密碼文件:/etc/gshadow
1.1 /etc/password文件
vim /etc/password
fubh:x:1020:1000::/home/fubh:/bin/bash
man 5 password? #查看配置文件幫助
(密碼文件)里每行一條記錄,并且每行有這樣的格式:
account:password:UID:GID:GECOS:directory:shell
(帳號:密碼:用戶ID:組ID:一般的信息:宿主目錄:shell)
字段描述如下:
????????????? account?? 使用者在系統中的名字,它不能包含大寫字母.
????????????? password? 加密的用戶密碼,或者星號。
????????????? UID?????? 用戶 ID 數。
????????????? GID?????? 用戶的主要組 ID 數。
????????????? GECOS???? 這字段是可選的,通常為了存放信息目的而設的。通常,它包含了用戶的全名.
????????????? directory 用戶的 $HOME 目錄.
????????????? shell???? 登錄時運行的程序(如果空的,使用/bin/sh如果設為不存在的執行(程序),用戶不能通過login(1) 登錄.)
1.1.1 用戶分類
UID=0的?????? 是超級用戶
UID=500~60000 為普通用戶
UID=1~499???? 是偽用戶(與系統和程序服務相關)
1.2 /etc/shadow 文件
root:#21312sd$44:wd323%cds:14945:0:99999:7:::
用戶名:加密密碼:最后一次修改時間:最小時間間隔:最大時間間隔:警告時間:賬號閑置時間:失效時間:
1.3 /etc/group 文件
vim /etc/group
sudo:x:27:web,yanghuang,zhoumin,duyp,taofh,luanqq
group_name:password:GID:user_list
(組名:組密碼:組ID:組成員)
2、常用命令:
添加一個用戶:useradd [-ugGdsce] 用戶名
useradd -g webadmin -G root,web -c ‘test suer’ bob
-u UID
-g 缺省所屬用戶組GID
-G 指定用戶屬于多個組
-d 宿主目錄
-s 命令解析器Shell
-c 描述信息
-e 指定用戶失效時間
設置密碼:passwd 用戶名
修改用戶信息:
???????????? 修改用戶名:??? usermod -l 新用戶名 舊用戶名
???????????? 添加用戶所屬組:usermod -G sys bob_fu
刪除一個用戶:userdel [-r] 用戶名 (-r 刪除用戶的宿主目錄)
給組設置密碼: gpasswd 組名
gpasswd [-adArR] 用戶名 組名
-a 將一個用戶添加到某個組
-d 將用戶從組中刪除
-A 設置用戶組管理員
-r 刪除用戶組密碼
-R 禁止用戶切換為改組
例如:
gpasswd webadmin
gpasswd -a bob_fu webadmin
gpasswd -A bob_fu webadmin
gpasswd -r webadmin
鎖定一個用戶:passwd -l? jack? / usermod -L jack
解鎖一個用戶:passwd -uf jack? / usermod -U jack
切換所屬組:newgrp webadmin
查看所屬組:groups lisi
添加組:groupadd [-g GID] 組名 (查看: grep webadmin /etc/group)
刪除組:groupdel webadmin
組改名:groupmod -n 新名 舊名
3、其他命令:
pwck?? 檢測/etc/passwd文件(鎖定文件)
vipw?? 編輯/etc/passwd文件查看(鎖定文件)
id???? 查看用戶id和組信息
finger 查看用戶詳細信息
su???? 切換用戶 (su – 用戶名)
passwd -S 查看用戶密碼狀態
who、w 查看當前燈虎用戶信息
grpck? 用戶組配置文件檢測
vigr?? 編輯/etc/group文件(鎖定文件)
chage [-lmM]? 設置密碼(linux下可用)
????? -l 查看用戶密碼設置 chage -l jack
????? -m 密碼修改的最小天數
????? -M 密碼修改的最大天數
????? -d 密碼最后修改的日期
????? -I 密碼過期后,牟定賬號的天數
????? -E 設置密碼過期日期,若為0,表示密碼立即過期,若為-1則永不過期
????? -W 設置密碼過期前,開始警告天數
4、案例:授權sofeware 目錄 對jack 、mary有寫權限
root創建一個目錄:
mkdir /software
添加兩個用戶:
useradd jack
useradd mary
設置密碼:
password jack
password mary
添加一個組
groupadd softadm
將用戶添加到組
usermod -G softadm jack
gpasswd -a mary softadm
查看組成員:
grep softadm /etc/group
將目錄有root組授權為softadm組
chgrp softadm ./software
給組添加目錄寫權限
chmod g+w ./software
5、擴展(RedHead系列)
5.1 批量添加用戶
newusers命令導入用戶信息文件
例如 user.info 內容如下
test01::10001:503::/home/test01:/bin/bash
test02::10002:503::/home/test02:/bin/bash
test03::10003:503::/home/test03:/bin/bash
test04::10004:503::/home/test04:/bin/bash
test05::10005:503::/home/test05:/bin/bash
test06::10006:503::/home/test06:/bin/bash
newusers
pwunconv 命令取消 shadow password 功能
pwunconv
chpasswd命令 導入密碼
例如pass.info 內容如下
test01:admin+01
test02:admin+02
test03:admin+03
test04:admin+04
test05:admin+05
test06:admin+06
chpasswd
pwconv
優化方案:寫腳本
#!/bin/bash #add-some-users.sh #The?script?is?add?some?users?to?a?new?group. echo?"Welcome?to?the?add?some?users!" echo?-n?"Please?input?the?new?group(example?:?mygroup)?:?" read??my_new_group?? groupadd?$my_new_group echo?-n?"Add?the?$my_new_group?group?is?successful!" echo?"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&" echo?"Then?add?some?users?to?the?$my_new_group?group!" echo?-n?"Please?input?the?username(example:?student)?:?" read?new_user echo?-n?"Please?input?the?username(begin_id)(example:?1?)?:?" read?begin_id echo?-n?"Please?input?the?username(end_id)(example:?10?)?:?" read?end_id echo?"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&" for?((i=$begin_id;i<h4>5.2 限制用戶su 為root</h4><p>groupadd sugroup</p><p>chmod 4550 /bin/su<br>chgrp sugroup /bin.su<br>ls -l /bin/su<br>設定后,只有sugroup組總的用戶可以使用su切換root<br>sueradd bob<br>passwd bob<br>usermod -G sugroup bob<br></p><h4>5.3 用sudo 替代su</h4><p>sudo 的配置文件 /etc/sudoers<br><br>(管理員)編輯配置文件命令:<br>visudo <br>格式:用戶名(組名)主機地址(主機名)=命令(絕對路徑)<br><br>例如:<br>用戶授權:bob 192.186.9.3=/usr/sbin/useradd,/usr/sbin/userdel<br>組授權:? %webadmin host1=/bin/vim /etc/httpd/conf/httpd.conf<br><br></p>