3.1 用户配置文件和密码配置文件
3.2 用户组管理
3.3 用户管理
3.4 usermod命令
3.5 用户密码管理
3.6 mkpasswd命令
3.7 su命令
3.8 sudo命令
3.9 限制root远程登录
3.1 用户配置文件和密码配置文件
1、用户配置文件(/etc/passwd)
第一行是root用户
添加的用户从最后一行开始
user1:x:1000:1000::/home/user1:/bin/bash
用户:密码:uid:gid:注释信息:家目录:shell(交互窗口)
ps:密码放在别的地方,所以统一为x
2、密码配置文件(/etc/shadow)(与用户配置文件一一对应)
/etc/passwd内容含义:
分为九段:
-
用户名
-
密码(经过加密)
-
上次更改密码距离格林乔治时间几天
-
多少天后可以更改密码
-
多少天后要改密码
-
密码到期前多少天提示
-
密码到期后,没改密码多少天账户失效
-
账号使用期限在格林乔治时间后多少天
-
略
# root(用户名):$6$dAG6/8RmAOv603Ln$eDc6vFHvGC4snH3YJPVJkIP3OC7qbl0ax069YxFTlRb9TRjb0VqSimxoK2Eva6NKkZkV1YWZsOrqgtInheaCD1(密码'加密过'):(上次更改密码距离'格林乔治时间'天数):0(多少天之后可再更改密码):99999(多少天之后要更改密码):7(密码到期前多少天提示):(密码到期后没修改密码多少天账号失效):(账号使用期限'格林乔治时间后多少天'):(略)
# longlong02(用户名):!!(密码'没密码是!!'):17387(上次更改密码距离):0(多少天之后可再更改密码):99999(多少天之后要更改密码):7(密码到期前多少天提示):(密码到期后没修改密码多少天账号失效):(账号使用期限'格林乔治时间后多少天'):(略)
# xxx:*(密码被锁定):17110:0:99999:7:::
即使密码设置的一样,但是加密的字符串是不一样的
head -n2 /etc/shadow; tail -n2 /etc/shadow
3.2 用户组管理
用户组管理文件(/etc/group)
#user3:x:1003:user3
#用户:密码:组ID:组成员
groupadd 组名 #创建组
[root@localhost ~]# groupadd grp1
[root@localhost ~]# tail -n1 /etc/group
grp1:x:1002:
group -g 1005 组名 #创建组,并将组gid设为1005
#组ID1000以内的都被系统预留了,要定义组ID,从1001开始
[root@localhost ~]# groupadd -g 1004 grp2
[root@localhost ~]# groupdel grp1
[root@localhost ~]# tail -n2 /etc/group
slocate:x:21:
grp2:x:1004:
groupdel 组名 #删除组(组内要为空,无成员)
[root@localhost ~]# groupdel grp1
[root@localhost ~]# tail -n2 /etc/group
slocate:x:21:
grp2:x:1004:
[root@localhost ~]# groupdel user1
groupdel:不能移除用户“user1”的主组
[root@localhost ~]# LANG=en
[root@localhost ~]# groupdel user1
groupdel: cannot remove the primary group of user 'user1'
3.3 用户管理
1)useradd 用户名 #创建用户
-u 1003 #自定义uid=1003
-g 组名 #指定组
-d 目录 #自定义选择家目录
-s #自定义选择shell
useradd -u 1004 -g grp2 -d /home/user3 -s /sbin/nologin user3
[root@localhost ~]# tail -n4 /etc/passwd
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
xin:x:1000:1000::/home/xin:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
[root@localhost ~]# useradd -u 1004 -g grp2 -d /home/user3 -s /sbin/nologin user3
[root@localhost ~]# tail -n4 /etc/passwd
xin:x:1000:1000::/home/xin:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1004:1004::/home/user3:/sbin/nologin
-M 用户名 #创建用户同时不创建家目录
userdel 用户名 #删除用户(会保留该用户家目录)
userdel -r 用户名 #删除用户同时删除家目录
#gid的数字不会根据gid自增,只会随着uid增加
ps:如果用户没有家目录怎么办?
/etc/skel/ #系统家目录的模板目录地址
先退出,root用户再/home/m目录下创建user4的家目录,并将所有者和所属组改为user4,然后去/etc/skel/ 将模板目录的文件全部拷贝到/home/user4/,将所有文件的所有者和所属组改为user4,然后重新登录进去就可发现正常了
cp /etc/skel/.bash* /home/user4
chown user4:user4 !$
cp /etc/skel/.bash* /home/user4
chown -R user4:user4 !$
操作失误问题
创建新用户出错Creating mailbox file:File exists的问题
在Linux环境下安装oracle时需要创建oracle用户,提示上面这个错误;原因是没有正确删除用户
解决方法:
重新创建oracle用户:
useradd -oracle #创建oracle用户
userdel -r oracle #删除用户
然后创建别的用户就不会出错了
3.4 usermod命令
usermod(更改用户属性)
-u 1002 用户名 #改uid
-g gid/组名 用户名 #改gid
-d 目录 用户名 # 改家目录
-s /sbin/nologin 用户名 #改shell
-G 组名 用户名 #替换一个扩展组
-G 组名,组名 用户名 #可以替换多个组,中间用“,”隔开(g不行,只有大G才行)
id 用户名 #查看用户uid,gid,扩展组
3.5 用户密码管理
passswd #什么不加就是改root密码,加username改用户密码
/etc/shadow文件里密码那一段显示“!!”表示密码为空或者“*”都表示密码被锁定 (都不能够登陆)
passwd -l username #锁定用户(!!)
passwd -u username # 解锁用户
usermod -L username #锁定用户(!)
usermod -U username # 解锁用户
passwd --stdin username #更改密码,只用一次修改,且密码明文显示
echo “1234”|passwd --stdin user1
echo -e "1234\n1234" |passwd user1
echo -e "123\n123" echo -e "123\t123"
#\n是换行符 ,\t是table键(空格)
锁定密码:usermod -L 与passwd -l的区别
/etc/shadow文件密码那里:
usermod -L 会产生1个!号
passwd -l 会产生2个!号
#usermod和passwd的解锁、锁定可以互用
3.6mkpasswd 命令(密码生成器(生成随机字符))
-
-l(长度) 默认16位
-
-s(字符) 默认1位
-
-C(大写) 默认4位
-
-c(小写)默认3位
-
-d(数字)默认2位
yum install -y expect #安装
mkpasswd -l #指定长度
mkpasswd -s #指定特殊符号
[root@localhost ~]# mkpasswd -l 9 -s 2
m8Fd&(2Gt
[root@localhost ~]#
3.7 su命令
#普通用户显示为$符号,root用户显示为#符号。
echo $? #检查上条命令的执行结果是否成功 (常用于脚本)
# 输出为0表示执行成功
pwd #查看当前位置
su username #切换用户,但是位置在root目录下
su - username #位置在用户家目录
su - -c “touch /tmp/user1.111”user1
#在root用户下创建文件将文件所属者给user1
3.8 sudo命令
#让用户临时拥有root的权限
visudo #打开sudo配置文件编辑 (注意别用vi编辑,语法错了不会提示)
visudo所在位置:/etc/sudoers.tmp
第一种设置方式
这是用户权限设置
例:user1 ALL=(ALL) (NOPASSWD:)/usr/bin/ls,/usr/bin/mv,/usr/bin/cat
#命令需要用绝对路径;输入括号里的NOPASSWD:, (冒号后面要加空格)则可避免第一次sudo登录输入密码
第一次sudo时需要输入用户密码
sudo 命令/绝对路径 文件/目录
sudo /usr/bin/ls /root/ 或sudo ls /root/
sudo /usr/bin/cat /root/3.txt
第二种设置方式
通过命名别名,
这是用户组权限设置(设置类似用户上面设置)
3.9 限制root远程登录
思路:通过visudo,将选择的普通用户可以实现免密登录root用户,然后通过/etc/ssh/sshd_config 将root远程登录禁掉;使用选择免密登录root的普通用户登录,然后直接sudo su - 切换到root用户
visudo # 开sudo配置文件编辑
遇到问题
[root@localhost ~]# visudo
visudo: /etc/sudoers 忙,请稍后重试
#应该还运行过一个visudo没有退出来。
ps aux |grep visudo 看下是否有进程。 如果有用这个命令停掉
killall visudo
yum install psmisc #安装kill命令
visudo # 开sudo配置文件编辑
User_Alias XINS = xin,user1,user2,user3
XINS ALL=(ALL) NOPASSWD: /usr/bin/su
实现普通用户免密登录root用户
vi /etc/ssh/sshd_config #通过修改文件限制root远程登录
将root远程服务改为no(一开始文件默认为yes),并将#去掉
systemctl restart sshd.service #重启sshd服务
[root@localhost ~]# systemctl restart sshd.service
[root@localhost ~]#
通过xshellroot登录不了
通过putty登录普通用户user1,然后sudo ,就进入root用户了
一个防止root远程登录软件,别人猜密码时,在猜错3次后,这个连接的IP断30分钟(时间可以自定议)
安装fail2ban前需要安装epel-release扩展源
yum install -y epel-release
yum install -y fail2ban
#fail2ban的主配置文件:/etc/fail2ban/jail.conf
防猜sshd登录密码,只改这里就可以了。注意,前面不能有空格。