用户管理
AAA认证
- Authentication:认证机制,通过某种方案来确认用户是其声称的用户,如密码、生物识别等
- Authorization:授权机制,资源使用级别(Linux只有管理员和普通用户两级分配机制,权限)
- Audition:审计机制,监督权限的使用 ,log审计凭据—额外审计功能Selinux
用户,组,权限
什么是组?为什么要分组?为什么分组后就方便管理了?
对于系统来说,后期有了用户后会给它们划分不同的权限,但是用户只是代表一个个体,分别对一个用户去进行管理就比较繁琐,所以便进行了分组。每创建一个用户都会默认把它放到一个组里面,后期想对一类用户进行管理直接对组管理就可以了。只要创建一个用户,就会有一个组产生,用户必须在组内,没有组就没有用户。
用户,组、权限的相关文件路径
路径 | 路径下的信息 |
---|---|
/etc/passwd | 用户相关信息 |
/etc/login.defs | 设置用户创建时默认相关信息 |
/etc/defualt/useradd | 用户添加时会创建的相关信息设置 |
/etc/skel | 用户家目录下相关隐藏文件 |
/etc/group | 组相关信息 |
/etc/gshadow | 组密码 |
/etc/shadow | 用户密码 |
/var/spool/mail | /var/mail 用户邮箱记录 |
用户类别
- 管理员: 只有一个root
- 普通用户: 1-65535,2^16个,其中1-200 是系统中的管理用户
- 系统用户: 201-999,专门用来运行后台进程和服务的用户,不允许登陆系统(服务用户)
- 一般用户: 1000-60000,后面的很少使用
用户组类别
- 管理员组:(UID为0)root
- 普通组 常用分法
- (主)基本组,用户默认组
- 附加组 额外组,默认组以外的其他组
创建一个Redhat用户,其默认就在Redhat组里面,如果把Redhat加入到root组里面,那么root就是Redhat的附加组或者是额外组。
用户管理
创建用户(useradd USERNAME/adduser)
- -u UID 指定UID
- -g GID 指定基本组
- -G GID1,GID2,… 指定附加组
- -c “注释信息” 指定用户注释信息 (chfn 用户名)
- -d /path/to/dir 指定某个目录为用户家目录
- -s /shell 指定用户使用的shell chsh -s
[root@localhost ~]# useradd xixi
[root@localhost ~]# useradd heihei
[root@localhost ~]# useradd lala
[root@localhost ~]# ll /usr/sbin/useradd
-rwxr-xr-x. 1 root root 229120 Jun 7 2019 /usr/sbin/useradd
useradd 一次性只能创建一个用户,且只能在root用户下执行,它在usr/sbin/useradd 目录下。
- 查看用户是否添加成功
[root@localhost ~]# cat /etc/passwd
xixi:x:1001:1001::/home/xixi:/bin/bash
heihei:x:1002:1002::/home/heihei:/bin/bash
lala:x:1003:1003::/home/lala:/bin/bash
快速查看
[root@localhost ~]# grep xixi /etc/passwd
xixi:x:1001:1001::/home/xixi:/bin/bash
查看用户(/etc/passwd (用户配置文件))后的每一行根据冒号隔开都有七个字段,其分别表示为:
用户名: x : UID : GID : 描述名称/注释 : 用户家目录 : shell
x:表示占位符,早期是密码信息
UID:用户ID
GID:组ID
shell:命令解释器
七项分别表示为:
- account 用户名
- password 密码,x为密码占位符,目标为/etc/shadow第二个字段
- UID 用户ID -u
- GID 基本组ID,额外组信息在/etc/group文件中 -g -G
- CECOS 用户基本信息 -c chfn
- HOME DIR 用户家目录,系统用户不允许登陆 -d
- shell 用户的默认shell,/etc/shells保存了所有的合法shell -s chsh
查看红帽上支持那些shell
[root@localhost ~]# sh
sh-4.4# chsh -l
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
sh-4.4# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
usermod 修改用户相关信息,选项同useradd
- -u 修改UID
- -g 修改基本组,基本组必须事先存在
- -G 这个选项会覆盖之前的附加组,和-a选项配合使用。usermod -a -G 追加附加组
- -c 修改用户注释信息
- -s 修改用户shell
- -l 修改登陆名
如何更改以上六个字段(除占位符)?
- 通过文本编辑器,打开该文件,对对应的字段进行修改
- 命令 usermod --help 查看更改项的选项,再对其修改
[root@localhost ~]# usermod --help
Usage: usermod [options] LOGIN
Options:
-c, --comment COMMENT new value of the GECOS field
-d, --home HOME_DIR new home directory for the user account
-e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-f, --inactive INACTIVE set password inactive after expiration
to INACTIVE
-g, --gid GROUP force use GROUP as new primary group
-G, --groups GROUPS new list of supplementary GROUPS
-a, --append append the user to the supplemental GROUPS
mentioned by the -G option without removing
the user from other groups
-h, --help display this help message and exit
-l, --login NEW_LOGIN new value of the login name
-L, --lock lock the user account
-m, --move-home move contents of the home directory to the
new location (use only with -d)
-o, --non-unique allow using duplicate (non-unique) UID
-p, --password PASSWORD use encrypted password for the new password
-R, --root CHROOT_DIR directory to chroot into
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
-s, --shell SHELL new login shell for the user account
-u, --uid UID new UID for the user account
-U, --unlock unlock the user account
-v, --add-subuids FIRST-LAST add range of subordinate uids
-V, --del-subuids FIRST-LAST remove range of subordinate uids
-w, --add-subgids FIRST-LAST add range of subordinate gids
-W, --del-subgids FIRST-LAST remove range of subordinate gids
-Z, --selinux-user SEUSER new SELinux user mapping for the user account
- 修改用户名(两种均可以)
[root@localhost ~]# usermod -l xiuxiu xixi
[root@localhost ~]# usermod xixi -l xiuxiu
- 修改其他项
[root@localhost ~]# usermod xiuxiu -u 1111 -g 1002 -G 1003 -c woshixixi -d /xixi -s /sbin/nologin
注意:不建议修改家目录,改了后不会自动创建出目录,并且目录下的有些配置文件也是不存在的。
- 修改用户密码
[root@localhost ~]# echo redhat | passwd --stdin haha
删除用户userdel USERNAME
- -r 删除用户时删除用户家目录和用户的邮箱
- id 查看用户的ID信息,选项同useradd
- -u 显示UID
- -G 显示附加GID
- -g 显示GID
[root@localhost mail]# userdel -r lala
组管理
- 增加组
#groupadd 组名
- 判断组是否存在
#cat /etc/group
#redhat:x:1000:
redhat这一项是组名;x表示密码的占位符;1000表示组id;最后这个冒号后面的字段表示用户名,如果显示为空,则表示这是一个基本组,不会显示用户信息,如果有用户显示,则表示该组为此用户的附加组。
- 修改组信息
- 用命令进行修改
- 进入文本编辑器进行修改(vi)
例如:
将名为g1的组改名为grp1,组id改为1111
#groupmod g1 -n grp1 -g 1111
#vi /etc/group
进入配置文件进行修改
- 组删除
#groupdel redhat
groupde不能删除基本组,删除基本组需要删除改组的用户
- 用户的相关默认属性
添加用户就是在/etc/passwd、/etc/shadow、/etc/group中添加用户相关信息
默认属性都来自 /etc/default/useradd
[root@localhost ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100 #组(在linux当中用户默认组有两种模式公有模式(统一一个组)和私有模式(创建一个用户就创建一个组),当前我们学习的linux是一种私有模式)
HOME=/home #家目录
INACTIVE=-1 #密码宽限限期
EXPIRE= #账户过期限不启用
SHELL=/bin/bash #指定shell
SKEL=/etc/skel #默认文件
CREATE_MAIL_SPOOL=yes #邮件配置
- 更改所属组----chgrp(只能更改组)
[root@localhost ~]# chgrp wyh 1
[root@localhost ~]# ll
-rw-r--r--. 1 root wyh 0 Mar 4 21:54 1
- 更改所属用户----chown
[root@localhost ~]# chown wyh 1
[root@localhost ~]# ll
-rw-r--r--. 1 wyh wyh 0 Mar 4 21:54 1
- 同时更改所属用户所属组
[root@localhost ~]# chown wyh:wyh 10
[root@localhost ~]# ll
-rw-r--r--. 1 wyh wyh 0 Mar 4 21:54 10
还可以如下修改所属组
[root@localhost ~]# chown :wyh 1
wyh前面的冒号可用点(.)代替
对文件进行读写执行操作
[root@localhost ~]# ./1