Day13-Linux系統用戶管理知識精講2
- 1. passwd 給用戶設置密碼
- 2. chpasswd 批量設置密碼
- 3. chage 查看和更改密碼屬性 更改用戶密碼過期信息
- 4. 用戶組相關的命令了解
1. passwd 給用戶設置密碼
用戶自己給自己設置密碼直接passwd
root用戶給普通用戶設置密碼passwd 用戶名。
–stdin 從標準輸入獲取信息
[root@oldboy ~]# echo 123456|passwd --stdin oldboy
更改用戶 oldboy 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
2. chpasswd 批量設置密碼
bash腳本
for n in {01..10}
douseradd oldboy$n
done
把用戶和密碼用冒號分割,然后放入文件里。
[root@oldboy ~]# vim user.list
oldboy01:01
oldboy02:02
oldboy03:03
oldboy04:04
oldboy05:05
批量設置密碼命令:
chpasswd <user.list #不好用。
cat user.list|chpasswd #好用
su - oldboy02,然后在切入到其他用戶測試。
擴展技術:后期細講,此處可忽略
批量【生成】用戶名和密碼文件列表;
[root@oldboy ~]# seq -w 10|sed -rn 's#(.*)#oldboy\1:\1#gp' >user.list
[root@oldboy ~]# cat user.list
oldboy01:01
oldboy02:02
oldboy03:03
oldboy04:04
oldboy05:05
oldboy06:06
oldboy07:07
oldboy08:08
oldboy09:09
oldboy10:10
批量【設置】用戶和密碼列表;
[root@oldboy ~]# seq -w 10|sed -rn 's#(.*)#useradd oldboy\1;echo \1|passwd --stdin oldboy\1#gp'
useradd oldboy01;echo 01|passwd --stdin oldboy01
useradd oldboy02;echo 02|passwd --stdin oldboy02
useradd oldboy03;echo 03|passwd --stdin oldboy03
useradd oldboy04;echo 04|passwd --stdin oldboy04
useradd oldboy05;echo 05|passwd --stdin oldboy05
useradd oldboy06;echo 06|passwd --stdin oldboy06
useradd oldboy07;echo 07|passwd --stdin oldboy07
useradd oldboy08;echo 08|passwd --stdin oldboy08
useradd oldboy09;echo 09|passwd --stdin oldboy09
useradd oldboy10;echo 10|passwd --stdin oldboy10
[root@oldboy ~]# seq -w 10|sed -rn 's#(.*)#useradd oldboy\1;echo \1|passwd --stdin oldboy\1#gp'|bash
通過nodepad++批量生成用戶名,
按住ALT,然后將光標第1行拉倒第10行,然后輸入oldboy,
然后按住alt+c,設置生成數字序列
oldboy1
oldboy2
oldboy3
oldboy4
oldboy5
oldboy6
oldboy7
oldboy8
oldboy9
3. chage 查看和更改密碼屬性 更改用戶密碼過期信息
-l 查看用戶和更改密碼屬性
[root@oldboy ~]# chage -l oldboy
最近一次密碼修改時間 :6月 30, 2030
密碼過期時間 :從不
密碼失效時間 :從不
帳戶過期時間 :從不
兩次改變密碼之間相距的最小天數 :0
兩次改變密碼之間相距的最大天數 :99999
在密碼過期之前警告的天數 :7
-e “” 設定賬戶過期時間。
useradd -e “2040/5/20” oldboy11
[root@oldboy ~]# useradd -e "2040/5/20" oldboy11
useradd:警告:此主目錄已經存在。
不從 skel 目錄里向其中復制任何文件。
正在創建信箱文件: 文件已存在
[root@oldboy ~]# chage -l oldboy11
最近一次密碼修改時間 :6月 30, 2030
密碼過期時間 :從不
密碼失效時間 :從不
帳戶過期時間 :5月 20, 2040 =========================賬戶過期時間
兩次改變密碼之間相距的最小天數 :0
兩次改變密碼之間相距的最大天數 :99999
在密碼過期之前警告的天數 :7
chage -E “2041/6/30” oldboy11
[root@oldboy ~]# chage -E "2041/6/30" oldboy11
[root@oldboy ~]# chage -l oldboy11
最近一次密碼修改時間 :6月 30, 2030
密碼過期時間 :從不
密碼失效時間 :從不
帳戶過期時間 :6月 30, 2041
兩次改變密碼之間相距的最小天數 :0
兩次改變密碼之間相距的最大天數 :99999
在密碼過期之前警告的天數 :7
useradd -e和chage -E是一樣的。
范例:要求oldgirl用戶7天內不能更改密碼,60天以后必須修改密碼,過期前10天通知用戶,過期后30天后禁止用戶登錄。
修改的文件/etc/shadow
查看 chage -l 用戶名
設置方法:2個:
passwd -n 7 -x 60 -w 10 -i 30 oldboy #<==參數含義詳見前文表格。
chage -m8 -M61 -W11 -I31 oldboy #<==使用chage按題意要求授權。
[root@oldboy ~]# chage -l oldboy
最近一次密碼修改時間 :6月 30, 2030
密碼過期時間 :從不
密碼失效時間 :從不
帳戶過期時間 :從不
兩次改變密碼之間相距的最小天數 :0
兩次改變密碼之間相距的最大天數 :99999
在密碼過期之前警告的天數 :7
練習修改密碼屬性(了解)
[root@oldboy ~]# grep -w oldboy /etc/shadow
oldboy:$6$V07NxoML$u.O04z4BaVQqosvEDjZfrQPvla19tEKLdoYxqjWpbgng8XQgtdjBS0xUMjtjN2zWBE8XiW5X6820iKPyDBJI00:22095:0:99999:7:::
[root@oldboy ~]# passwd -n 7 -x 60 -w 10 -i 30 oldboy
調整用戶密碼老化數據oldboy。
passwd: 操作成功
[root@oldboy ~]# grep -w oldboy /etc/shadow
oldboy:$6$V07NxoML$u.O04z4BaVQqosvEDjZfrQPvla19tEKLdoYxqjWpbgng8XQgtdjBS0xUMjtjN2zWBE8XiW5X6820iKPyDBJI00:22095:7:60:10:30::
[root@oldboy ~]# chage -l oldboy
最近一次密碼修改時間 :6月 30, 2030
密碼過期時間 :8月 29, 2030
密碼失效時間 :9月 28, 2030
帳戶過期時間 :從不
兩次改變密碼之間相距的最小天數 :7
兩次改變密碼之間相距的最大天數 :60
在密碼過期之前警告的天數 :10
[root@oldboy ~]#
4. 用戶組相關的命令了解
groupadd 添加用戶組
groupdel 刪除用戶組
練習:
[root@oldboy ~]# groupadd sa
[root@oldboy ~]# tail -n 1 /etc/group /etc/gshadow
==> /etc/group <==
sa:x:5018:==> /etc/gshadow <==
sa:!::
[root@oldboy ~]# groupdel sa
[root@oldboy ~]# grep -w sa /etc/group /etc/gshadow
切換用戶以及提權管理命令:
su
sudo
su 切換用戶角色,從A用戶切換到B用戶。
su - oldboy # -表示攜帶用的環境變量切換
顯示:root環境變量
[root@oldboy ~]# env|grep root
USER=root
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
HOME=/root
LOGNAME=root
練習查看加不加-的區別:
[root@oldboy ~]# su oldboy
[oldboy@oldboy root]$ env|grep oldboy
HOSTNAME=oldboy
USER=oldboy
HOME=/home/oldboy
LOGNAME=oldboy
[oldboy@oldboy root]$ pwd #還是root家目錄,這就是沒有加-的問題。
/root
[oldboy@oldboy root]$ env|grep root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
MAIL=/var/spool/mail/root
PWD=/root
[oldboy@oldboy root]$ exit
[root@oldboy ~]# su - oldboy
上一次登錄:一 7月 1 00:11:41 CST 2030pts/1 上
[oldboy@oldboy ~]$ env|grep root
[oldboy@oldboy ~]$ env|grep oldboy
HOSTNAME=oldboy
USER=oldboy
MAIL=/var/spool/mail/oldboy
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/oldboy/.local/bin:/home/oldboy/bin
PWD=/home/oldboy
HOME=/home/oldboy
LOGNAME=oldboy
第二個參數:
-c 以oldboy用戶身份執行命令,然后退回當下用戶
[root@oldboy ~]# su - oldboy -c pwd
/home/oldboy
用普通用戶登錄管理,su - root切換到root管理,擁有了所有權限。
普通用戶必須要知道root密碼,登錄到root,他就可以改了密碼,讓你登錄不上。
適合運維部門人少的時候。
弊端:
1)切換到root
2)擁有所有權限
更規范的管理方法:
不切換到root,在操作命令同時,擁有root權限,一旦操作完成,權限就消失。而且不需要root密碼
sudo
sudo配置文件是/etc/sudoers
通過visudo管理sudo配置文件/etc/sudoers
[root@oldboy ~]# ls /etc/sudoers -l
-r--r-----. 1 root root 4328 11月 28 2019 /etc/sudoers
root ALL =(ALL) ALL
用戶 主機 切換的角色 執行命令
設置oldboy用戶在所有主機上,可以切換到所有角色,執行所有命令。
oldboy ALL =(ALL) ALL
oldboy就相當于root,不是root。
測試1:
[oldboy@oldboy ~]$ useradd bingbing
useradd: Permission denied.
useradd:無法鎖定 /etc/passwd,請稍后再試。
[oldboy@oldboy ~]$ sudo useradd bingbing我們信任您已經從系統管理員那里了解了日常注意事項。
總結起來無外乎這三點:#1) 尊重別人的隱私。
#2) 輸入前要先考慮(后果和風險)。
#3) 權力越大,責任越大。[sudo] oldboy 的密碼:
[oldboy@oldboy ~]$ tail -1 /etc/passwd
bingbing:x:5018:5018::/home/bingbing:/bin/bash
[oldboy@oldboy ~]$ sudo su - root
上一次登錄:日 6月 30 22:28:53 CST 2030從 10.0.0.1pts/1 上
[root@oldboy ~]# whoami
root
生產管理方法;給用戶設置具體的命令。
oldboy ALL =(ALL) /usr/sbin/useradd,/usr/sbin/userdel ##執行命令 越小越具體越好。
#設置粒度,最小是一個命令,允許他執行這個命令時擁有root權限。
[oldboy@oldboy ~]$ rm -fr /root
rm: 無法刪除"/root": 權限不夠
[oldboy@oldboy ~]$ sudo rm -fr /root
對不起,用戶 oldboy 無權以 root 的身份在 oldboy 上執行 /bin/rm -fr /root。
[oldboy@oldboy ~]$ rm -fr /root
rm: 無法刪除"/root": 權限不夠
[oldboy@oldboy ~]$ sudo userdel bingbing
[oldboy@oldboy ~]$ grep bing /etc/passwd
[oldboy@oldboy ~]$ sudo useradd bingbing
useradd:警告:此主目錄已經存在。
不從 skel 目錄里向其中復制任何文件。
正在創建信箱文件: 文件已存在
[oldboy@oldboy ~]$ grep bing /etc/passwd
bingbing:x:5018:5018::/home/bingbing:/bin/bash
[oldboy@oldboy ~]$ ls /root
ls: 無法打開目錄/root: 權限不夠
[oldboy@oldboy ~]$ sudo ls /root
對不起,用戶 oldboy 無權以 root 的身份在 oldboy 上執行 /bin/ls /root。
[oldboy@oldboy ~]$
sudo優點
1)不是root用戶,還是自己。
2)指定命令擁有root權限,可以完成管理員分配的任務。
3)不需要root密碼。
查看用戶信息命令
idwhoamiwhow
查看用戶日志
last
lastlog
/var/log/secure 遠程登錄安全日志
更改文件屬性:
更改用戶所屬用戶和組:chown #change owner
更改用戶組:chgrp #change group
chown 用戶.用戶組 文件 #.可以用;替代 更改用戶和組
chown 用戶 文件 #更改用戶
chown .用戶組 文件 #更改用戶組,等價:chagrp 用戶組 文件
前提:用戶和組必須要存在。
練習:
[root@oldboy ~]# touch test.txt
[root@oldboy ~]# ls -l test.txt
-rw-r--r--. 1 root root 184 7月 1 01:51 test.txt
[root@oldboy ~]# chown oldboy.oldboy test.txt #更改用戶和組為oldboy
[root@oldboy ~]# ls -l test.txt
-rw-r--r--. 1 oldboy oldboy 184 7月 1 01:51 test.txt
[root@oldboy ~]# chown root test.txt #更改用戶為root
[root@oldboy ~]# ls -l test.txt
-rw-r--r--. 1 root oldboy 184 7月 1 01:51 test.txt
[root@oldboy ~]# chown .root test.txt
[root@oldboy ~]# ls -l test.txt
-rw-r--r--. 1 root root 184 7月 1 01:51 test.txt
[root@oldboy ~]# chgrp oldboy test.txt
[root@oldboy ~]# ls -l test.txt
-rw-r--r--. 1 root oldboy 184 7月 1 01:51 test.txt
-R參數 遞歸更改
練習:
[root@oldboy ~]# mkdir abc
[root@oldboy ~]# touch abc/{1..3}
[root@oldboy ~]# ls -ld ab
abc/ ab.txt
[root@oldboy ~]# ls -ld abc
drwxr-xr-x. 2 root root 33 7月 1 01:54 abc
[root@oldboy ~]# ls -l abc
總用量 0
-rw-r--r--. 1 root root 0 7月 1 01:54 1
-rw-r--r--. 1 root root 0 7月 1 01:54 2
-rw-r--r--. 1 root root 0 7月 1 01:54 3
[root@oldboy ~]# chown -R oldboy abc/
[root@oldboy ~]# ls -l abc
總用量 0
-rw-r--r--. 1 oldboy root 0 7月 1 01:54 1
-rw-r--r--. 1 oldboy root 0 7月 1 01:54 2
-rw-r--r--. 1 oldboy root 0 7月 1 01:54 3