3.1用户配置文件和密码配置文件
-
用户配置文件 /etc/passwd
[root@qklinux-01 ~]# cat /etc/passwd
root❌0:0:root:/root:/bin/bash
bin❌1:1:bin:/bin:/sbin/nologin
qkai❌1000:1000::/home/qkai:/bin/bash
user1❌1001:1001::/home/user1:/bin/bash
/etc/passwd 文件每一行代表一个用户,分为七个字段每一个字段用冒号隔开 第一段是用户名
第二个字段存放的是该账号的口令,由于/etc/passwd文件对所有用户都可读,为了安全将其存放在、etc/shadow中,这里用X代替
第三个字段为一个数字,这个数字代表用户标识号,也称为uid。 第四个字段表示组标识号gid,记录用户所属的用户组
第五个字段为注释说明,记录该用户的一些属性 第六个字段为用户的家目录,当用户登录时就在这个目录下
第七个字段为用户的shell,用户在登录后要启动一个进程,用来将用户下达的指令传给内核,这就是shell。Linux的shell有sh.
csh.ksh.tcsh.bash等多种。/sbin/nologin不能登录
密码配置文件/etc/shadow
[root@qklinux-01 ~]# cat /etc/shadow
root:$6$K30TDNPt$pF7RRfurbmsam3cKzv0V0lyuaheCeuxmwCdBsMQCQZj1x26./3iaNXJQaTO4GITZNZrstvCrxbXLdin0Q27Cd.:17965:0:99999:7:::
/etc/shadow同样用冒号分割成9个字段
第一个字段为用户名
第二个字段为用户密码,
如果为空则登录不需要密码
如果是*说明用户是禁用状态
如果是X说明用户不能登陆系统
如果是双叹号表示这个密码过期
第三个字段为最近一次改密码距离1970年1月1总共多少天 第四字段要过多少天才可以修改密码,默认为0,
第五个字段为密码多少天后到期,多少天内必须修改密码
第六个字段密码到期的警告期限
第七个字段账号失效期限,
第八个字段账号的生命周期如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
第九个字段保留字段
3.2用户组管理
新增加一个组 groupadd XX
比如groupadd grp1
[root@qklinux-01 ~]# groupadd grp1
[root@qklinux-01 ~]# tail -n1 /etc/group
grp1:x:1002:
如果不加-g选项,则按照系统默认的gid创建组gid从1000开始
[root@qklinux-01 ~]# groupadd -g 1005 grp2
[root@qklinux-01 ~]# tail -n3 /etc/group
slocate:x:21:
grp1:x:1002:
grp2:x:1005:
删除一个组groupdel groupname
[root@qklinux-01 ~]# groupdel grp1
[root@qklinux-01 ~]# tail -n3 /etc/group
user1:x:1001:
slocate:x:21:
grp2:x:100
非空的组是不能删除,一个组中如果有账户除非账户才能删除组
[root@qklinux-01 ~]# groupdel user1
groupdel:不能移除用户“user1”的主组
3.3用户管理
命令useradd是增加用户
-u表示自定义uid
-g表示新增用户属于已经存在的某个组,后面可以跟组id 也可以跟组名
-d 表示自定义用户的家目录
-M表示不建立家目录
-s 表示自定义shell
创建用户user2
[root@qklinux-01 ~]# useradd user2
[root@qklinux-01 ~]# tail -n2 /etc/passwd
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
指定用户uid为1004 组为grp2创建user3
[root@qklinux-01 ~]# useradd -u 1004 -g grp2 user3
[root@qklinux-01 ~]# tail -n3 /etc/passwd
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1004:1005::/home/user3:/bin/bash
指定uid gid 家目录和sehll创建用户user4
[root@qklinux-01 ~]# useradd -u 1006 -g grp2 -d /home/qkai111 -s /sbin/nologin user4
[root@qklinux-01 ~]# tail -n3 /etc/passwd
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1004:1005::/home/user3:/bin/bash
user4:x:1006:1005::/home/qkai111:/sbin/nologin
不指定创建用户家目录创建user5
[root@qklinux-01 ~]# useradd -M user5
[root@qklinux-01 ~]# tail -n3 /etc/passwd
user3:x:1004:1005::/home/user3:/bin/bash
user4:x:1006:1005::/home/qkai111:/sbin/nologin
user5:x:1007:1007::/home/user5:/bin/bash
[root@qklinux-01 ~]# ls /home/
qkai qkai111 user1 user2 user
删除用户userdel
直接删除一个用户 不会删除用户家目录
[root@qklinux-01 ~]# userdel user8
[root@qklinux-01 ~]# ls /home/
qkai qkai111 user1 user2 user3 user6 user7 user8
加上-r选项 删除用户的同时删除用户家目录
[root@qklinux-01 ~]# userdel -r user7
[root@qklinux-01 ~]# ls /home/
qkai qkai111 user1 user2 user3 user6 user8
3.4 usermod命令
使用id命令查看用户的uid gid和扩展组的gid
[root@qklinux-01 ~]# id qkai
uid=1000(qkai) gid=1000(qkai) 组=1000(qkai)
usermod是用来修改用户的属性
更改用户的uid
Usermod –u 111 username
更改用户gid
[root@qklinux-01 ~]# usermod -g grp2 qkai
[root@qklinux-01 ~]# !id
id qkai
uid=1000(qkai) gid=1005(grp2) 组=1005(grp2),1007(user5)
-d选项更改用户的家目录
usermod –d /home/xxx username
-s 更改用户的shell
usermod –s /sbin/nologin username
-G 扩展组 给用户指定多个组
给用户同时添加grp2和user5组
[root@qklinux-01 ~]# usermod -G grp2,user5 qkai
[root@qklinux-01 ~]# id qkai
uid=1000(qkai) gid=1000(qkai) 组=1000(qkai),1005(grp2),1007(user5)
3.5用户密码管理
修改用户密码 passwd
[root@qklinux-01 ~]# passwd
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码未提供
重新输入新的 密码:
密码未提
[root@qklinux-01 ~]# passwd qkai
更改用户 qkai 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
-l选项 锁定用户密码 和usermod –L一样
[root@qklinux-01 ~]# passwd -l user5
锁定用户 user5 的密码 。
passwd: 操作成功
-u选项 解锁用户 跟usermod –U一样
[root@qklinux-01 ~]# passwd -u qkai
解锁用户 qkai 的密码。
passwd: 操作成功
–stdin选项 直接更改用户密码 也可以用echo passwd |passwd –stdin username
[root@qklinux-01 ~]# passwd --stdin user5
更改用户 user5 的密码 。
123456
passwd:所有的身份验证令牌已经成功更新。
[root@qklinux-01 ~]# echo "111222" |passwd --stdin user5
更改用户 user5 的密码 。
passwd:所有的身份验证令牌已经成功更新。
3.6 mkpasswd命令
安装mkpasswd 这个命令生成随机字符串
root@qklinux-01 ~]# yum install -y expect
默认生成随机密码
[root@qklinux-01 ~]# mkpasswd
dqDR]32kr
-l选项 指定生成字符串的长度
[root@qklinux-01 ~]# mkpasswd -l 12
qo7xy=hSB7db
-s选项 指定生成特殊符号数量
[root@qklinux-01 ~]# mkpasswd -l 12 -s 3
u4Jsz%\\hw5O
[root@qklinux-01 ~]# mkpasswd -l 12 -s 0
Iejrh75dvQau
3.7 su命令
用来切换用户命令 su
[root@qklinux-01 ~]# whoami
root
[root@qklinux-01 ~]# su - qkai
上一次登录:一 3月 18 20:39:10 CST 2019pts/1 上
[qkai@qklinux-01 ~]$ whoami
Qkai
使用su命令时 加上- 可以加载要切换到的用户的环境变量和配置
[root@qklinux-01 ~]# su - qkai
上一次登录:五 3月 22 00:38:54 CST 2019pts/0 上
[qkai@qklinux-01 ~]$ pwd
/home/qkai
更改用户的家目录 如果家目录不存在 则不能切换到这个用户下去 需要复制系统的家目录模板到指定路径下去
切换user5为例
[root@qklinux-01 ~]# su - user5
上一次登录:五 3月 22 00:48:21 CST 2019pts/0 上
-bash-4.2$ pwd
/home/user5
查看模板文件
[root@qklinux-01 ~]# ls -la /etc/skel/
总用量 24
drwxr-xr-x. 2 root root 62 4月 11 2018 .
drwxr-xr-x. 74 root root 8192 3月 22 00:47 ..
-rw-r--r--. 1 root root 18 10月 31 01:07 .bash_logout
-rw-r--r--. 1 root root 193 10月 31 01:07 .bash_profile
-rw-r--r--. 1 root root 231 10月 31 01:07 .bashrc
拷贝文件到user5家目录下 并且修改权限
[root@qklinux-01 ~]# cp /etc/skel/.bash* /home/user5/
[root@qklinux-01 ~]# chown -R user5:user5 !$
chown -R user5:user5 /home/user5/
[root@qklinux-01 ~]# su - user5
上一次登录:五 3月 22 00:50:08 CST 2019pts/0 上
[user5@qklinux-01 ~]$ pwd
/home/user5
3.8 sudo命令
1.sudo命令用来以其它身份来执行命令,预设的身份为root
配置文件 /etc/sudoers
使用visudo来配置文件
Allow root to run any commands anywhere
root ALL=(ALL) ALL
在下面再加一行内容
qkai ALL=(ALL) /usr/bin/ls, /usr/bin/mv, /usr/bin/cat
这行的意思是qkai用户可以在终端上以root权限运行这三个命令
保存退出 切换到qkai用户 ,看可以用sudo命令执行这三个在root下的操作
[root@qklinux-01 ~]# su - qkai
上一次登录:五 3月 22 01:24:03 CST 2019pts/0 上
[qkai@qklinux-01 ~]$ ls /root/
ls: 无法打开目录/root/: 权限不够
[qkai@qklinux-01 ~]$ sudo /usr/bin/ls /root/
111 1.txt~ anaconda-ks.cfg.1
123 234 qkai2
1_heard.ttx 2.txt yum.log
1_sorft.txt 3.txt 新建文本文档.txt
[qkai@qklinux-01 ~]$ cat /root/ 3.txt
cat: /root/: 权限不够
cat: 3.txt: 没有那个文件或目录
[qkai@qklinux-01 ~]$ sudo /usr/bin/cat /root/3.txt
给user5用户设置不输入密码使用sudo命令
进入配置文件visudo添加
user5 ALL=(ALL) NOPASSWD: /usr/bin/ls, /usr/bin/cat
保存切换命令试验
root@qklinux-01 ~]# visudo
[root@qklinux-01 ~]# su - user5
上一次登录:五 3月 22 00:53:59 CST 2019pts/0 上
[user5@qklinux-01 ~]$ ls /root/
ls: 无法打开目录/root/: 权限不够
[user5@qklinux-01 ~]$ sudo ls /root/
111 1.txt~ anaconda-ks.cfg.1
123 234 qkai2
1_heard.ttx 2.txt yum.log
1_sorft.txt 3.txt 新建文本文档.txt
用户别名配置,visudo找到配置
添加配置
Cmnd_Alias QKAI_CMD = /usr/bin/ls, /usr/bin/mv, /usr/bin/cat
测试是可行
[root@qklinux-01 ~]# visudo
[root@qklinux-01 ~]# su - qkai
上一次登录:五 3月 22 01:25:24 CST 2019pts/0 上
[qkai@qklinux-01 ~]$ sudo ls /root/
[sudo] qkai 的密码:
111 1.txt~ anaconda-ks.cfg.1
123 234 qkai2
1_heard.ttx 2.txt yum.log
1_sorft.txt 3.txt 新建文本文档.txt
也可以把用户放到一个组配置 使用sudo命令
%wheel ALL=(ALL) NOPASSWD: ALL
3.9限制root远程登录
在生产环境中,为了安全 应该禁止root用户远程登录。如果有需求
要用到root权限,可以用sudo设置,授权给普通用户
限制root远程登录 只是用普通用户登录, 再使用su- 切换到root
编辑visudo配置文件 qkai用户就可以使用 sudo su - 切换到root
#User_Alias ADMINS = jsmith, mikem
User_Alias ADMINS= qkai, user5, user6
QKAI ALL=(ALL) NOPASSWD: /usr/bin/su
[root@qklinux-01 ~]# su - qkai
上一次登录:五 3月 22 01:49:27 CST 2019pts/0 上
[qkai@qklinux-01 ~]$ sudo su -
上一次登录:五 3月 22 09:41:32 CST 2019从 192.168.18.1pts/1 上
编辑配置/etc/ssh/sshd_config 允许root用户远程登录
[root@qklinux-01 ~]# vi /etc/ssh/sshd_config
#PermitRootLogin yes改为PermitRootLogin no
保存退出后 重启sshd服务
[root@qklinux-01 ~]# systemctl restart sshd.service
配置完后 当root用户退出后就不能用远程工具登陆了