ps: 红字字体为重要部分, 仔细看
一、 用户配置文件和密码配置文件字段介绍
①。 用户配置文件;
[root@Centos1 ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash ……………………/省略 user1:x:500:521::/home/user1:/bin/bash
第一段: 用户名
第二段: 密码
第三段: root的uid为0, 普通用户的uid从500开始(0-499为系统用户, 500以上为普通用户)
第四段: root的gid为0, 普通用户的gid从500开始
第五段: 用户说明
第六段: 指定家目录
第七段: 指定用户shell登录环境, 默认为/bin/bash
②。 密码配置文件;
[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为提示过多少天密码过期
二、 创建/删除/修改用户和用户组, 为用户设置密码
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
三、 锁定/解除用户
[root@Centos1 ~]# passwd -l user1 #锁定用户 [root@Centos1 ~]# passwd -u user1 #解锁用户 [root@Centos1 ~]# passwd -S user1 #查看用户是否锁定
四、 利用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
五、 用户身份切换
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 -