Linux/Windows通过用户来管理和维护系统;
Windows/Linux都是多用户系统
用户识别的本质(Linux如何识别用户)
[root@destiny ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@destiny ~]# id root
uid=0(root) gid=0(root) groups=0(root)
Linux用户分类
用户分类 | 作用 | 特点 |
---|---|---|
root(uid 0) | 管理维护整个系统 | 老子天下第一 |
普通用户(uid>=1000) | 只能查看和管理自己的一亩三分地 | 管理特定服务 |
虚拟用户(傀儡用户)(uid 1~1000) | 让linux下面服务正常运行所需要的 | 为了服务正常运行所需要,并不需要登录到系统,设置密码,切换用户 |
[root@destiny ~]# id hanyi
uid=1000(hanyi) gid=1000(hanyi) groups=1000(hanyi)
[root@destiny ~]# man 5 shadow
[root@destiny ~]# cat /etc/shadow
密码信息
字段名称 注释说明
1.用户登陆名 //用户的账号名称
2.加密后的密码 //用户密码,这时加密过的口令
------------------了解----------------------------------------------
3.最近一次密码更改时间 //从1970年到最近一次更改密码时间之间过了几天
4.密码最少使用几天 //密码最少使用几天才可以更改密码(0表示无限制)
5.密码最长使用几天 //密码使用多少天需要修改密码(默认99999永不过期)
6.密码到期前警告期限 //密码过期前多少天提醒用户更改密码(默认是过期提前7天警告)
7.密码到期后保持活动的天数 //在此期限内,用户依然可以登录系统并更改密码,指定天数过后,账户 被锁定
8.账户到期标志 //从1970年起,账户在这个日期前可使用,到期后失效
9.标志 //保留
查询某个特定的用户是否存在
使用grep
[root@destiny ~]# grep "test" /etc/passwd | wc -l
1 -->说明用户存在;则跳过判断;
2 -->说明用户不存在;则进行创建操作;
使用id
id username
[root@destiny ~]# id root
uid=0(root) gid=0(root) groups=0(root)
$? # 判断上一次的命令是否执行成功;0 成功;其他任何数字都是失败;
创建用户会在系统的哪个配置中保存信息
/etc/passwd:用户信息;
root:x:0:0:root:/root:/bin/bash #以冒号为分隔符
第一列:用户名称
第二列:用户的密码;x——>不可见——>/etc/shadow
第三列:用户的UID
第四列:用户组的GID
第五列:用户的描述信息;(手机号;等等)
第六列:用户的家目录
第七列:用户的登录Shell类型 /bin/bash——>正常登录 /sbin/nologin——>禁止登陆
/etc/shadow:密码信息;
bin:*:18535:0:0:99999:7:2:66275:
第一列:用户名称
第二列:用户的密码;(一段不可读的密文;(* !! 说明这个用户没有密码;))
第三列:最近一次变更密码,用户从1970年 到现在过了多少天;
第四列:密码的最短使用天数;0为不限制;
第五列:密码最长使用的天数;99999为不限制;
第六列:密码到期前7天,系统会警告
第七列:密码到期后,密码过期后2天强制提示用户更改密码
第八列:账户失效时间,从1970年起,账户在这个日期前可使用,到期后失效;
管理用户和密码的方式,不仅仅只有用户+密码这一种
如何创建用户,删除用户,修改用户?
创建用户
useradd
adduser
[root@destiny ~]# which useradd
/usr/sbin/useradd
[root@destiny ~]# which adduser
/usr/sbin/adduser
# 它们都在同一个目录下
[root@destiny ~]# ll /usr/sbin/adduser
lrwxrwxrwx. 1 root root 7 Dec 6 16:55 /usr/sbin/adduser -> useradd
#1. 创建bgx用户,UID5001,基本组students,附加组sa 注释信息:2019 new student,登录shell:/bin/bash
# 先创建组
[root@destiny ~]# groupadd sa
[root@destiny ~]# groupadd students
# 再创建用户 useradd
# -u:指定UID
-g:指定组名称
-G:指定附加组名称
-c:附加描述信息(可忽略)
-s:指定登录Shell窗口的类型
[root@destiny ~]# useradd -u 5001 -g students -G sa -c "2019 new student" -s /bin/bash bgx
[root@destiny ~]# id bgx
uid=5001(bgx) gid=1002(students) groups=1002(students),1001(sa)
#2. 创建mysql系统 用户,
# -M:不建立用户家目录,
# -s:指定nologin使其用户无法登录系统
# -r:创建系统用户
[root@destiny ~]# useradd mysql -r -M -s /sbin/nologin
[root@destiny ~]# id mysql
uid=996(mysql) gid=994(mysql) groups=994(mysql)
基本组:原生家庭;
附加组:认来的;
——————————>有一些操作无法执行;但是附加组是有权限的;加入附加组;就具备操作这类资源的权限;
修改用户
usermod
#选项
# -u:指定要修改用户的UID
# -g:指定要修改用户基本组
# -G:指定要修改用户附加组,使用逗号隔开多个附加组,覆盖原有的附加组
# -d:指定要修改用户家目录
# -s:指定要修改用户的bash Shell
# -c:指定要修改用户注释信息
# -l:指定要修改用户的登录名
# -L:指定要锁定的用户
# -U:指定要解锁的用户
# 1.检查此前创建的用户信息
[root@destiny ~]# grep "bgx" /etc/passwd
bgx:x:5001:1002:2019 new student:/home/bgx:/bin/bash
# 2.修改bgx用户uid,gid,附加组
[root@destiny ~]# groupadd -g 5008 network_sa
[root@destiny ~]# groupadd -g 5009 devops
[root@destiny ~]# usermod -u 6001 -g5008 -a -G 5009 bgx
# 3.修改bgx用户的注释信息,用户家目录,登录shell,登录名
[root@destiny ~]# usermod -c "2019 new student" -md /bgx -s /bin/sh -l change_bgx bgx
#检查是否修改成功
[root@destiny ~]# grep "bgx" /etc/passwd
change_bgx:x:6001:5008:2019 new student:/bgx:/bin/sh
[root@destiny ~]# id change_bgx
uid=6001(change_bgx) gid=5008(network_sa) groups=5008(network_sa),1001(sa),5009(devops)
[root@destiny ~]# ll -d /bgx
drwx------. 2 change_bgx network_sa 62 Jan 12 08:44 /bgx
删除用户
userdel
#选项 -r:删除用户同时删除它的目录
# 1.删除user1用户,但不删除用户家目录和mail spool
[root@destiny ~]# userdel user1
# 2.-r参数可以连同用户家目录一起删除(慎用)
[root@destiny ~]# userdel -r user1
# 有进程正在使用该用户,无法删除;只有进程退出后,用户没有被占用,才可以处理;
[root@destiny ~]# userdel www
userdel: user www is currently used by process 2559
与用户相关的还有很多命令,以下简单列举一些,但都不是常用命令,所以了解即可
如何为用户设定密码,又如何修改密码?
不能太简单;容易被暴力破解;
太复杂;记不住;
不用记住密码;就要复杂;——>专门存储密码的文件或软件;lastpass 1password
使用passwd命名来实现:
超级管理员
普通用户执行
passwd使用方法:
交互式修改密码:
passwd username
#root用户
[root@destiny ~]# passwd dba
Changing password for user dba.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
#普通用户
[dba@destiny ~]# passwd dba
passwd: Only root can specify a user name.
[root@destiny ~]# passwd
Changing password for user dba.
Changing password for dba.
(current) UNIX password:
New password:
BAD PASSWORD: The password is shorter than 8 characters
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
非交互式修改密码:
[dba@destiny ~]# echo "123" | passwd --stdin dba
Changing password for user dba.
passwd: all authentication tokens updated successfully.
强度较高的密码:
# -l 长度
# -d 数字
# -c 小写
# -C 大写
# -s 特殊字符
[root@destiny ~]# mkpasswd -l 10 -d 3 -c 3 -C 3 -s 1
0BAuH|8hz0
[root@destiny ~]# mkpasswd -l 10 -d 3 -c 3 -C 3 -s 1
6jj|JsF90Y
#设定一个随机密码
[root@destiny ~]# echo "$(mkpasswd -l 10 -d 3 -c 3 -C 3 -s 1)" | tee ok.txt | passwd --stdin dba
Changing password for user dba.
passwd: all authentication tokens updated successdully.
[root@destiny ~]# cat ok.txt
Hp7uHEc=32
系统创建用户参考的两个配置文件
/etc/login.defs
[root@destiny ~]# grep -vE "^#|^$" /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
# 定义普通用户的UID范围
UID_MIN 1000
UID_MAX 60000
# 定义系统用户的UID范围
SYS_UID_MIN 201
SYS_UID_MAX 999
# 定义组的GID范围
GID_MIN 1000
GID_MAX 60000
#定义系统组的GID范围
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
/etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home #把用户的家目录建在/home中
INACTIVE=-1 #是否启用账号过期停权,-1表示不启用
EXPIRE= #账号终止日期,不设置表示不启用
SHELL=/bin/bash #新用户默认所有的shell类型
SKEL=/etc/skel #配置新用户家目录的默认文件存放路径
CREATE_MAIL_SPOOL=yes #创建mail文件
当使用useradd创建用户时,创建的用户家目录下会存在.bash_*环境变量相关的文件,这些环境变量文件默认从/etc/skel目录中拷贝。这个默认拷贝环境变量为u之是由/etc/defaults/useradd配置文件中定义的
#故障案例,在当前用户家目录执行了rm -rf .*,喜爱次登陆系统时出现-bash-4.1$,如何解决:
-bash-4.1$ cp -a /etc/skel/.bash* ./
-bash-4.1$ exit
[root@destiny ~]# #重新连接即可恢复
如果在创建时,我们自行指定了参数,那么优先使用定义的;如果没有定义则使用默认配置(/etc/login.defs | /etc/default/useradd)
什么是组?
在整个网络中,各个访问网络的用户的权限可能是各不相同的,可以将具有相同权限的用户划为一组。
组的分类
创建组
groupadd
选项:-g :指定gid
[root@destiny ~]# groupadd g1 -g 1456
[root@destiny ~]# tail -1 /etc/group
g1:x:1456:
修改组
groupmod
[root@destiny ~]# tail -1 /etc/group
g1:x:1456:
[root@destiny ~]# groupmod g1 -g 5656
[root@destiny ~]# tail -1 /etc/group
g1:x:5656:
删除组
groupdel
[root@destiny ~]# groupdel g1
组中存在成员怎么办?
附加组还是基本组
附加组:
如果组中只有附加组成员,直接删除;用户附加组信息会自动被移除;
基本组
直接创建用户,会创建一个同名的组
[root@destiny ~]# useradd nice
[root@destiny ~]# id nice
uid=1007(nice) gid=1010(nice) groups=1010(nice)
#用户存在,不可以直接删除组
[root@destiny ~]# groupdel nice
groupdel: cannot remove the primary group of user 'nice'
创建一个组;有一些成员加入,该如何删除该组;
[root@destiny ~]# useradd zhangsan -g dev
[root@destiny ~]# useradd lisi -g dev
[root@destiny ~]# id zhangsan
uid=1007(zhangsan) gid=1010(dev) groups=1010(dev)
[root@destiny ~]# id lisi
uid=1008(lisi) gid=1010(dev) groups=1010(dev)
[root@destiny ~]# groupdel dev
groupdel: cannot remove the primary group of user 'zhangsan'
# 移除所有用户即可删除该组