一、用户管理
1、用户的配置文件:/etc/passwd
2、配置文件内容格式
root用户:root : x : 0 : 0 : root : /root : /bin/bash
用户名 : 密码 : UID : GID : 备注 : 用户家目录 : 和根交互使用的shell
3、用户类型
(1)超级用户
root,UID为0
(2)系统用户
用来管理和运行服务,系统用户的shell为/sbin/nologin,不让该用户登录,uid为201-999
(3)一般用户
1000-60000,添加一般用户时,系统默认为该用户创建主目录和邮箱(/home/用户名)(/var/mail/用户名)
4、添加用户
添加普通用户:useradd 用户名=adduser 用户名
添加系统用户:useradd -r 用户名 ,添加系统用户,不创建主目录和邮箱
添加用户并用选项指定参数:useradd 用户名 -u UID -g GID/组名 -G 附加组ID/组名 -c 备注 -s 指定shell -d 指定家目录
添加用户时会创建的相关信息设置:
参数 | 含义 |
GROUP=100 | 这个选项用于建立用户的默认组,也就是说,在添加每个用户时,用户的初始组就是 GID 为 100 的这个用户组。但 CentOS 并不是这样的,而是在添加用户时会自动建立和用户名相同的组作为此用户的初始组。也就是说这个选项并不会生效。 Linux 中默认用户组有两种机制:一种是私有用户组机制,系统会创建一个和用户名相同的用户组作为用户的初始组;另一种是公共用户组机制,系统用 GID 是 100 的用户组作为所有新建用户的初始组。目前我们采用的是私有用户组机制。 |
HOME=/home | 指的是用户主目录的默认位置,所有新建用户的主目录默认都在 /home/下。 |
INACTIVE=-1 | 指的是密码过期后的宽限天数,也就是 /etc/shadow 文件的第七个字段。这里默认值是 -1,代表所有新建立的用户密码永远不会失效。 |
EXPIRE= | 表示账号过期时间,也就是 /etc/shadow 文件的第八个字段。默认值是空,代表所有新建用户没有失效时间,永久有效。 |
SHELL=/bin/bash | 表示所有新建立的用户默认 Shell 都是 /bin/bash。 |
SKEL=/etc/skel | 在创建一个新用户后,该用户主目录并不是空目录,而是有.bash_profile、.bashrc 等文件,这些文件都是从 /etc/skel 目录中自动复制过来的。因此,更改 /etc/skel 目录下的内容就可以改变新建用户默认主目录中的配置文件信息。 |
CREATE_MAIL_SPOOL=yes | 指的是给新建用户建立邮箱,默认是创建。也就是说,对于所有的新建用户,系统都会新建一个邮箱,放在 /var/spool/mail/ 目录下,和用户名相同。 |
修改/etc/default/useradd 文件的方法:第一种方法可以直接用vim修改,第二种可以用useradd -D修改
选项+参数 | 含义 |
-b HOME | 设置所创建的主目录所在的默认目录,只需用目录名替换 HOME 即可,例如 useradd -D -b /mulu1。 |
-e EXPIRE | 设置密码失效时间,EXPIRE 参数应使用 YYYY-MM-DD 格式,例如 useradd -D -e 2019-10-17。 |
-f INACTIVE | 设置密码过期的宽限天数,例如 useradd -D -f 7。 |
-g GROUP | 设置新用户所在的初始组,例如 useradd -D -g group1。 |
-s SHELL | 设置新用户的默认 shell,SHELL 必须是完整路径,例如 useradd -D -s /usr/bin/csh。 |
/etc/login.defs定义了与/etc/passwd和/etc/shadow配套的用户限制设定
/etc/skel 用户家目录下相关隐藏文件
5、查看用户
id 查看用户的UID、GID以及组
6、删除用户
userdel 用户名 只删除用户信息,不删除用户家目录
userdel -r 用户名 连带用户家目录一起删除
7、修改用户信息:usermod
-a -G 给用户追加附加组
-c 改变用户的全名(描述名称)
-d 改变用户的家目录
-e 设置用户账号的过期时间
-f 密码的过期宽限时间
-g 改变用户的GID
-G 将用户加入一个新组
-s 改变用户的默认shell
-l 改变用户的用户名
-u 改变用户的UID
-L 锁住密码,使账号不能用
-U 为用户密码解锁
二、用户组管理
1、组配置文件:/etc/group
2、组配置文件格式
root组: root : x : 0 :
组名 : 组密码 : 组ID : 用户列表
3、组分类
(1)私有组:当组里只有它一个成员时,它的基本组也叫做私有组
(2)基本组:用户的默认组
(3)附加组:默认组以外的组
4、创建组
groupadd -g GID 组名
5、修改组信息
groupmod -n 新组名 -g GID 原组名
6、删除组
groupdel 组名 (无法删除用户的基本组)
三、用户身份切换
su
su [-lm] [-c 命令] [username]
- :单纯使用 - 如“su -”,代表使用 login-shell 的变量文件读取方式来登录系统;若用户名没有写,则代表切换为 root 用户
-l :与 - 类似,但后面需要加欲切换的用户账号,也是 login-shell 的方式
-m :-m 与 -p 是一样的,表示使用目前的环境变量设置,而不读取新用户的配置文件
(注:使用 su 切换成为 root 的身份为 non-login shell ,这种方式下很多原本的变量不会改变。)
login-shell :取得bash时需要完整的登录流程。
login-shell读取配置文件的顺序是:/etc/profile、~/.bash_profile、~/.bashrc、/etc/bashrc。
non-login shell :取得 bash 接口的方法不需要重复登录。
non-login shell 会读取的配置文件为:~/.bashrc、/etc/bashrc。
sudo
sudo 是一种以限制配置文件中的命令为基础,在有限时间内给用户使用,并且记录到日志中的命令。
sudo 命令的配置在 /etc/sudoers 中,sudo 是系统管理员用来允许某些用户以 root 身份运行部分/全部系统命令的程序。
whoami :查看当前是哪个用户登录的 shell 。
sudo [-u 新用户账号] :-u 后面可以接欲切换的用户,若无此项则代表切换身份为 root 。
这个文件的所属者是 sshd 。
sudo 的执行流程如下(默认只有 root 用户能使用):
(1)当用户执行 sudo 时,便会让用户输入自己的密码来确认(root 执行 sudo 时不需要输入密码);
(2)若欲切换的身份与执行者身份相同,那也不需要输入密码;
(3)若密码输入成功,系统会去 /etc/sudoers 文件中查找该用户是否有执行 sudo 的权限;
(4)若用户具有执行 sudo 的权限,便开始 sudo 后续接的命令。
[root@localhost ~]# vim /etc/sudoers或者[root@localhost ~]# visudo
root ALL=(ALL) ALL
参数代表含义:
(1)用户账号:系统哪个账号可以使用sudo这个命令。默认为root用户。
(2)登录者的来源主机名:这个账号由哪台主机连接到本地Linux主机。默认值root可来自任何一台网络主机。
(3)可切换的身份:这个账号可以切换成什么身份来执行后续的命令。默认root可以切换成任何人。
(4)可执行的命令:这个命令最好使用绝对路径编写。默认root可以切换任何身份且进行任何命令。
(注:ALL 是关键字,代表任何身份、主机或命令。)