ps: 紅字字體爲重要部分, 仔細看linux
1、 用戶配置文件和密碼配置文件字段介紹shell
①。 用戶配置文件;vim
[root@Centos1 ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash ……………………/省略 user1:x:500:521::/home/user1:/bin/bash
第一段: 用戶名 bash
第二段: 密碼 ssh
第三段: root的uid爲0, 普通用戶的uid從500開始(0-499爲系統用戶, 500以上爲普通用戶) ide
第四段: root的gid爲0, 普通用戶的gid從500開始 字體
第五段: 用戶說明 ui
第六段: 指定家目錄 加密
第七段: 指定用戶shell登陸環境, 默認爲/bin/bash spa
②。 密碼配置文件;
[root@Centos1 ~]# cat /etc/shadow root:$6$OsPJ9fHZc1oQNxA6$BWQ4QGnVm7dYFnBA1nkXymTBrPevHzDCPpcaGT9vaV/EIVlHJttJ1zOZh726xkmKoKRgFTGJQsuSM9A3M/L6M/:16455:0:99999:7::: ……………………/省略 user1:$6$pqFvLq/i$bXDdUqaydSp1jX8G4EqiHLinb/uWH7/SnZ7P.9WwPKwFgjon2SUpNnE4WfWkWiGTQAkJuoVDmcXTd8pyAWQR/.:16515:0:99999:7:::
第一段: 用戶名
第二段: 密碼(!!表示密碼爲空, $6$表示爲sha-512加密, $1$表示爲md5加密, $2$表示Blowfish加密, $5$表示爲sha-256加密,*表示用戶被鎖定)
第三段: 上次更改密碼的日期, 表示從1970年1月1日到密碼更改時間
第四段: 過多少天更改密碼,0爲不限制時間.
第五段: 99999表示密碼永不過時.
第六段: 7爲提示過多少天密碼過時
2、 建立/刪除/修改用戶和用戶組, 爲用戶設置密碼
1. useradd/groupadd: 建立用戶、用戶組;
[root@Centos1 ~]# useradd linux
經常使用選項:
①。 -d: 指定家目錄;
[root@Centos1 ~]# useradd -d /home/1 user1 [root@Centos1 ~]# tail -1 /etc/passwd user1:x:500:500::/hom
②。 -u: 指定用戶UID;
[root@Centos1 ~]# useradd -u 520 user2 [root@Centos1 ~]# tail -2 /etc/passwd | grep user2 user2:x:520:520::/home/user2:/bin/bash
③。 -g: 指定用戶GID;
[root@Centos1 ~]# groupadd linux #建立用戶組 [root@Centos1 ~]# tail -1 /etc/group linux:x:521: [root@Centos1 ~]# tail -3 /etc/group user1:x:500: user2:x:520: linux:x:521: [root@Centos1 ~]# useradd -g 521 user4 [root@Centos1 ~]# id user4 uid=521(user4) gid=521(linux) groups=521(linux)
④。 -G: 指定用戶附加組;
[root@Centos1 ~]# useradd -G 520 user5 [root@Centos1 ~]# id user5 uid=522(user5) gid=522(user5) groups=522(user5),520(user2)
⑤。 -M: 不建立家目錄;
[root@Centos1 ~]# useradd -M user6 [root@Centos1 ~]# ls -l /home/ | grep user6
⑥。 -s: 指定用戶shell;
[root@Centos1 ~]# useradd -s /bin/nologin user7 root@Centos1 ~]# tail -7 /etc/passwd | grep user7 user7:x:524:524::/home/user7:/bin/nologin
2. userdel/groupdel: 刪除用戶、用戶組;
[root@Centos1 ~]# userdel user7
①。 -r: 將用戶和家目錄一塊刪除;
[root@Centos1 ~]# userdel -r user4
②。 刪除組;
[root@Centos1 ~]# groupdel user4
3. usermod: 修改用戶信息;
[root@Centos1 ~]# id passwd uid=1110(passwd) gid=500(user1) groups=500(user1),520(user2),521(linux) [root@Centos1 ~]# usermod -u 11111 passwd [root@Centos1 ~]# id passwd uid=11111(passwd) gid=500(user1) groups=500(user1),520(user2),521(linux) ps: usermod不只能夠修改用戶的uid,還能夠修改gid,登陸shell,家目錄等......
4. passwd: 爲用戶設置密碼;
[root@Centos1 ~]# passwd user1 [root@Centos1 ~]# echo "123" | passwd --stdin user1
3、 鎖定/解除用戶
[root@Centos1 ~]# passwd -l user1 #鎖定用戶 [root@Centos1 ~]# passwd -u user1 #解鎖用戶 [root@Centos1 ~]# passwd -S user1 #查看用戶是否鎖定
4、 利用mkpasswd生成隨機密碼串
[root@Centos1 ~]# yum -y install expect 選項: -l: 密碼的長度, 默認爲9, 最低爲7 -d: 密碼中包含幾個數字, 默認值爲2 -c: 密碼中包含幾個小寫字母, 默認值爲2 -C: 密碼中包含幾個大寫字母,默認值爲2 -s: 密碼中包含幾個特殊字符,默認值爲2 -p: 對程序進行加密 [root@Centos1 ~]# mkpasswd -l 10 -d 3 -c 1 -C 1 -s 1 o8xu7{Kz8t
5、 用戶身份切換
1. su與su -區別;
[root@Centos1 ~]# su user1 [user1@Centos1 root]$ echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/sbin [user1@Centos1 root]$ ls -la ls: cannot open directory .: Permission denied [root@Centos1 ~]# su - user1 [user1@Centos1 ~]$ ls -a . .. .bash_logout .bash_profile .bashrc [user1@Centos1 ~]$ echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/1/bin ps: 能夠看到,加-與不加-的區別在於環境變量不同。 環境變量不同,致使某寫內置/外置命令不能執行
2. 以user1用戶執行命令;
[root@Centos1 ~]# su - user1 [user1@Centos1 ~]$ su -c "echo aa > /tmp/a.txt" - user1 Password: 輸入user1的密碼 [user1@Centos1 ~]$ cat /tmp/a.txt aa
3. 給普通命令受權命令;
[root@Centos1 ~]# visudo ## Allow root to run any commands anywhere root ALL=(ALL) ALL #找到此行 第一段: 指定用戶; 第二段: 來源IP,ALL爲全部IP。 (ALL)爲臨時擁某個用戶的執行身份; 第三段: 受權哪些命令, 填寫絕對路徑;
①。將root用戶受權/bin/ls命令給普通用戶user1使用;
[root@Centos1 ~]# su - user1 [user1@Centos1 ~]$ ls -l /root/ ls: cannot open directory /root/: Permission denied 執行ls查看/root目錄沒權限; [user1@Centos1 ~]$ su - root [root@Centos1 ~]# visudo ## Allow root to run any commands anywhere root ALL=(ALL) ALL #找到此行 user1 ALL=(root) /bin/ls, /bin/mv #增長此行 [root@Centos1 ~]# su - user1 [user1@Centos1 ~]$ sudo /bin/ls /root [sudo] password for user1: #輸入user1的密碼 2.txt ceshi drbd-8.4.3.tar.gz install.log.syslog anaconda-ks.cfg drbd-8.4.3 install.log
4. 不容許root登陸, 受權給普通用戶切換root用戶不須要密碼;
[root@Centos1 ~]# vim /etc/ssh/sshd_config PermitRootLogin no #去掉前面的"#",yes改成no [root@Centos1 ~]# visudo user1 ALL=(root) NOPASSWD: /bin/su #增長此行.. NOPASSWD表示切換時不輸入密碼 [root@Centos1 ~]# su - user1 [user1@Centos1 ~]$ sudo su -