linux是多用户的系统
用户管理相关文件
用户基本信息 /etc/passwd
1.该文件中一行就是一个用户!
2.统计当前系统中有多少用户:
[root@kuying2 ~]# cat /etc/passwd | wc -l
128
3.passwd文件详解
zero:x:1000:1000:zero:/home/zero:/bin/bash
root:x:0:0:root:/root:/bin/bash
root 用户名
x 用x进行密码占位
0 UID
0 GID
root 描述信息
/root root用户家目录,其他用户是在/home下
/bin/bash shell类型 /bin/bash是可以登录系统的;/sbin/nologin是不可以登录系统的。
用户组信息 /etc/group
zero:x:1000:zero
root:x:0:
root 组名
x 用x进行密码占位
0 GID
最后还有一位表示有哪些用户在此组内
如下:表示kuying用户在root组内
root:x:0:kuying
/etc/default/useradd文件详解
定义创建用户默认选项的文件
# useradd defaults file # useradd默认文件
GROUP=100 #表示可创建普通组
HOME=/home #用户的家目录建在/home中;用户家目录的默认创建地
INACTIVE=-1 #是否启用帐号过期停权,-1表示不启用;宽限天数,0及以下数皆为无效数字
EXPIRE= #帐号终止日期,不设置表示不启用;帐号失效日期(如:20081212)
SHELL=/bin/bash #所用SHELL的类型;登录后执行的程序
SKEL=/etc/skel #用户家目录中的环境文件,默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;
CREATE_MAIL_SPOOL=yes #是否创建用户邮件缓冲,yes表示创建
主组和附加组
在Linux系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳入其他用户组,则这个其他用户 组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组
用户的基本组(主组):当前用户具有哪个组的权限
用户的附加组:用户额外属于的组
linux中用户分类
超级管理员 root uid 0
系统用户 uid 1-999 运行服务
普通用户 uid 1000+ 工作中用到用户
注意:uid只是一种规范
系统用户:
1.运行服务程序的
2.一般不让系统用户登录系统
3.系统用户无家目录
默认的shell类型为/bin/bash
面试题:系统用户都是不可以登录系统的吗?
错误的。在linux当中创建用户的时候默认使用的shell类型为/bin/bash是可登录系统的,
如果没有指定不可登录系统的shell类型的话。系统用户是可以登录我们的系统的。
只是说在工作中需要不让系统用户登录系统,我们在创建系统用户的时候指定系统用户的shell
类型不可登录系统。
useradd命令
作用: 创建用户
使用格式: useradd options... username
选项:
-u 指定UID
-g 指定主组的ID
-G 指定附加组ID
-r 创建系统用户
-s 指定shell类型 /bin/bash /sbin/nologin
-c 添加描述信息
例子1:创建普通用户kuying
[root@kuying2 ~]# useradd kuying
例子2:创建用户并添加描述信息
[root@kuying2 ~]# useradd -c "this is for test" kuying1
[root@kuying2 ~]# tail -1 /etc/passwd
kuying1:x:1102:1102:this is for test:/home/kuying1:/bin/bash
例子3:创建用户并指定用户ID为1105
[root@kuying2 ~]# useradd -u 1105 kuying2
[root@kuying2 ~]# tail -1 /etc/passwd
kuying2:x:1105:1105::/home/kuying2:/bin/bash
例子4:创建用户并指定主组ID为0 #指定组的时候组必须存在!
[root@kuying2 ~]# useradd -g 0 kuying4
或者
[root@kuying2 ~]# useradd -g root kuying4
例子5:创建用户并指定附加组ID为0 #指定组的时候组必须存在!
[root@kuying2 ~]# useradd -G 0 kuying6
例子6:创建系统用户
[root@kuying2 ~]# useradd -r -s /sbin/nologin kuying7
1.可以查看用户ID,发现是1000以内
2.用户家目录不会创建
passwd命令
作用:设置用户密码
选项:
-l 锁住密码
-u 解锁密码
-d 删除用户密码
-e 使用户密码过期
--stdin 从标准输入获取密码
例子1:给用户创建密码
[root@kuying2 ~]# passwd kuying
Changing password for user kuying.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokuyings updated successfully.
注意:root登录到普通用户是不需要输入密码的!
[kuying@kuying2 ~]$ su - root #从普通用户切换到root是需要输入密码的
Password:
[kuying@kuying2 ~]$ exit #输出exit退回上一次登录的用户
logout
[root@kuying2 ~]#
例子2:锁住用户密码
[root@kuying2 ~]# passwd -l kuying
Locking password for user kuying.
passwd: Success
[root@kuying2 ~]# su - kuying1
Last login: Thu Jul 11 15:58:44 CST 2019 on pts/0
[kuying1@kuying2 ~]$ su - kuying #普通用户在此登录输入密码之后会提示认证失败!
Password:
su: Authentication failure
例子3:解锁用户密码
[root@kuying2 ~]# passwd -u kuying
Unlocking password for user kuying.
passwd: Success
[root@kuying2 ~]# su - kuying1
Last login: Thu Jul 11 15:59:38 CST 2019 on pts/0
[kuying1@kuying2 ~]$ su - kuying #再次输入密码登录发现可以正常登录
Password:
Last login: Thu Jul 11 15:59:34 CST 2019 on pts/0
Last failed login: Thu Jul 11 15:59:46 CST 2019 on pts/0
There was 1 failed login attempt since the last successful login.
[kuying@kuying2 ~]$
例子4:让用户密码过期
[root@kuying2 ~]# passwd -e kuying
Expiring password for user kuying.
passwd: Success
[kuying1@kuying2 ~]$ su - kuying
Password:
You are required to change your password immediately (root enforced)
Changing password for kuying.
(current) UNIX password: #输入当前用户密码
New password: #输入新的密码,字母+数字组合
Retype new password:
例子5:--stdin使用格式
echo 密码 | passwd --stdin 用户名
[root@kuying2 ~]# echo "123" | passwd --stdin kuying
Changing password for user kuying.
passwd: all authentication tokuyings updated successfully.
userdel
作用:删除用户
选项:
-r 删除用户时连同用户家目录删掉
例子1:删除用户及家目录
[root@kuying2 ~]# userdel -r kuying6
[root@kuying2 ~]# id kuying6 #无kuying6用户了
id: kuying6: no such user
[root@kuying2 ~]# ls /home #用户家目录也无kuying6家目录
kuying kuying1 kuying2 kuying3 kuying4 kuying5 shelltest
例子2:
[root@kuying2 ~]# userdel kuying5 #删除用户时不删除用户家目录
[root@kuying2 ~]# id kuying5
id: kuying5: no such user
[root@kuying2 ~]# ls /home #但是用户家目录依然存在
kuying kuying1 kuying2 kuying3 kuying4 kuying5 shelltest
[root@kuying2 ~]# useradd kuying5 #创建同名用户时报如下的错误
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
[root@kuying2 ~]# id kuying5 #但是用户仍然创建成功了
uid=1108(kuying5) gid=1108(kuying5) groups=1108(kuying5)
如果不想看到上面的报错信息需要如下的操作:
[root@kuying2 ~]# userdel kuying4
[root@kuying2 ~]# rm -rf /home/kuying4 #删除用户家目录
[root@kuying2 ~]# rm -rf /var/spool/mail/kuying4 #删除用户邮箱
[root@kuying2 ~]# useradd kuying4
groupadd
作用:创建用户组
例子1:创建组
[root@kuying2 ~]# groupadd kuying9
[root@kuying2 ~]# tail -1 /etc/group
kuying9:x:1110:
groupdel
作用:删除用户组
例子1:删除组
[root@kuying2 ~]# groupdel kuying9
id
作用:查看用户信息
-u
-g
-G
例子1:查看用户信息
[root@kuying2 ~]# id kuying
uid=1101(kuying) gid=1101(kuying) groups=1101(kuying),0(root)
[root@kuying2 ~]# id kuying11
id: kuying11: no such user
su
作用:切换用户
注意:在切换用户的时候需要加上-进行环境变量的整体改变
例子1:切换用户
[root@kuying2 ~]# su - kuying
/etc/shadow:用户密码信息、过期时间等
zxhk: $6$dgnPoZ0s$6xNKEWz : 17729 : 0 : 99999 : 7 : : :
第一段:用户名:
第二段:加密后的密码
第三段:上次修改密码举例元年经过的天数1970年1月1日(如果该字段空,意味着该用户密码被禁用)
第四段:密码最短使用时间(0表示不限制)
第五段:密码最长有效期(99999表示不限制)(如果第5的值小于第四段,那么用户无法修改自己的密码)
第六段:密码到期前几天开始发送告警,提示密码即将过去,请立即修改
第七段:非活动期间,密码到期后的宽限时间(登录系统的时候必须先修改密码,才能登录)
第八段:密码过期时间(也是举例计算机元年经过的天数)(这里和前面的几个时间没有联系)
第九段:保留字段
usermod
作用:修改用户信息
选项:
-u 指定UID
-g 指定主组的ID
-G 指定附加组ID
-s 指定shell类型 /bin/bash /sbin/nologin
-L, –lock: 锁定用户的密码
-U : 解锁用户的密码
-l, –login NEW_LOGIN : 变 更 使 用 者 login 时 的 名 称 为 login_name 。
-e, –expiredate EXPIRE_DATE:加 上 使 用 者 帐 号 停 止 日 期 。 日 期 格 式 为 MM/DD/YY.
/etc/shadow:用户组密码
/etc/default/useradd:创建用户的默认配置信息
/etc/skel/:用户家目录模板
/etc/login.defs:全局用户设定信息