文章目录
前言
提示:这里可以添加本文要记录的大概内容:
一、用户/组配置文件
1.1、用户基本信息文件(/etc/passwd
)
下图是root
用户的基本信息。
/etc/passwd
文件中每一行为一个用户的信息,用:
分隔成7部分,每部分的含义如下:
root:x:0:0:root:/root:/bin/bash
1 root 用户名
2 x 密码占位符,具体内容在/etc/shadow文件中
3 0 用户id,
4 0 组id
5 root 用户描述
6 /root 家目录
7 /bin/bash 登录shell:命令解释器
用户id
的范围:
0 超级用户root
1-999 系统用户
1000-65535 普通用户
shell
类型:
/bin/bash 是一种Unix shell和命令语言,它是Linux和macOS中默认的shell。
/sbin/nologin 是一个特殊的shell,用于限制某个用户的登录。
/bin/sync 是一个用于刷新文件系统缓存的命令
/sbin/shutdown 是一个系统关机命令
1.2、用户密码信息文件(/etc/shadow
)
下图是root
用户的密码信息。
/etc/shadow
文件中每一行为一个用户的密码信息,用:分隔成9部分,每部分的含义如下:
root:$6$.bymQ1uTDdOGHDqW$ARaL9uwcL.y/wjnSwJr8d05nJmkAMyqaok7wOoUrVm63Xwdj5tWDfCS1lGidYwA8cmhS3LCxbCp5W960ASQJG.:19842:0:99999:7:::
1 root 用户名
2 $6$.bymQ1uT(缩减了一部分) 加密后的用户密码
3 19842 最后一次修改时间:从某个时刻起到最后一次修改的天数,时间起点不同的操作系统起点不同,SCOLinux中,时间起点是1970年1月1日
4 0 最小时间间隔:两次修改密码之间所需的最小天数
5 99999 最大时间间隔:密码保持有效的最大天数
6 7 警告时间:从系统开始警告用户到用户密码正式失效之间的天数
7 不活动时间:用户没有登录活动但账号仍能保持有效的最大天数,超过天数后,账号被禁用
8 失效时间:账号的生存期,期满后,账号不合法,不能用来登录
9 保留
用户密码$6$.bymQ1uT
空 用户没有密码,登陆时不需要密码
* 用户被锁定
!! 密码过期
$6$ 加密类型:SHA-512
$1$ 加密类型:MD5
$2$ 加密类型:Blowfish
$5$ 加密类型:SHA-256
1.3、组信息文件(/etc/group
)
下图是root
组的信息。
/etc/group
文件中每一行为一个用户组的信息,用:分隔成4部分,每部分的含义如下:
root:x:0:
1 root 用户组
2 x 用户组密码占位符
3 0 组id
4 组内成员列表
二、用户/组管理命令
2.1、useradd、adduser(推荐):新增用户
dduser
:会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码;
useradd
:需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本。有的操作系统不指定参数,也会又默认的参数值,不同操作系统不同。
创建用户过程:
useradd
不加任何参数创建时,系统首先读取用于添加用户的配置文件/etc/login.defs
和/etc/default/useradd
,根据这两个配置文件中定义的规则添加用户。然后向/etc/passwd
和/etc/group
文件添加用户和用户组记录,同时/etc/passwd
和/etc/group
对应的加密文件也会自动生成记录。接着系统会自动在/etc/default/useradd
文件设定的目录下建立用户家目录。最后复制/etc/skel
目录中的所有文件到新用户的家目录中,新用户建立完成。
Usage: useradd [options] LOGIN
useradd -D
useradd -D [options]
Options:
-u:用户标识号,此标识必须唯一。
-g:指定新用户登录时所属的默认组(主组)。
-G:指定新用户的附加组,必须是已经存在的组。附加组对于默认组而言,当一个用户同时是多个组中的成员时,登录时默认组称为主组,其他组称为附加组。
-d:指定新建用户的默认家目录,如果不指定系统会在/etc/default/useradd文件指定的目录下创建用户主目录。
-s:指定新建用户使用默认的shell类型,如果不指定,会在/etc/default/useradd文件中定义的shell作为新用户的默认shell。
-c:对新建用户添加说明信息。
-f:指定账号过期多长时间后会永久停用。当值为0时账号立刻停用。当值为-1时则关闭此功能。
-M:创建时不生成用户家目录。
2.2、usermod:修改用户
Usage: usermod [options] LOGIN
Options:
-u UID #修改用户的指定UID
-g 组名 #修改用户的指定初始组(尽量不修改)
-G 组名 #修改用户的附加组(不管之前设置了多少附加组,都替换掉)(加上-a选项可不替换)
-c 说明 #修改用户的描述信息
-d 目录 #结合 -m 选项直接对原家目录进行改名实现修改家目录
-s shell类型 #修改用户的登录shell类型
-L 用户名 #锁定用户的密码
-U 用户名 #解锁用户密码
-l 新用户名 旧用户名 #修改用户名
2.3、userdel:删除用户
Usage: userdel [options] LOGIN
Options:
-r 删除用户时,连带家目录一起删除
2.4、passwd:修改用户密码
Usage: passwd [OPTION...] <accountName>
Options:
-l 用户名 #锁定用户的密码,使之无法登录系统。
-u 用户名 #解锁用户密码。
-S 用户名 #查看用户账号状态。
说明:
第一次对一个用户使用时是为此用户创建密码,第二次使用时是修改密码。
当普通用户没有密码时,自己是修改不了密码的。
2.5、groupadd:新增用户组
Usage: groupadd [options] GROUP
Options:
-g:指定新建用户组的GID,该GID必须唯一,不能和其他用户组的GID重复。
-o:表示新用户组的GID可以与系统中已有的用户组的GID相同。
2.6、gpasswd:修改组内成员列表
Usage: gpasswd [option] GROUP
Options:
-a:向指定组内添加一个成员
-d:把指定用户从组内删除
-M:定义组内成员列表,用户之间用,分隔(覆盖式)
2.7、newgrp:切换用户组
Usage: newgrp [-] [group]
说明:
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户权限。
2.8、groupdel:删除用户组
Usage: groupdel [options] GROUP
说明:
如果该用户组中扔包括某些用户,则必须先删除这些用户后,才能删除用户组。
2.9、groups:查询用户所属哪些组
Usage: groups [OPTION]... [USERNAME]...
2.10、其他用户命令
whoami 显示用户名称
id 显示用户名称id、主组id、附属组id
三、提权
3.1、su:切换用户身份(永久提权,重启服务器失效)
su [options] [-] [<user> [<argument>...]]
说明:
su - 用户 切换用户身份和shell环境
su 用户 切换用户身份
exit 退出用户切换,返回到切换用户前的身份
3.2、sudo:(临时提权)
3.2.1、sudo命令
usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] [VAR=value] [-i|-s]
[<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...
Options:
-l 列出当前用户可以执行的命令
3.2.2、/etc/sudoers配置文件
给普通用户提供某个命令的权限的话需要修改/etc/sudoers
配置文件,推荐使用visudo
命令,以下是配置方法:
在`/etc/sudoers`文件的最后添加如下格式的配置:
username host = (runas) NOPASSWD command
1 username 用户名,也可以是用户组,但是要在用户组前面加上`%`
2 host 主机名或IP地址
3 runas 表示以哪个用户的身份运行命令,默认为`root`
4 NOPASSWD 不需要输入密码
5 command 表示可执行的命令或命令序列,比如:`/sbin/reboot`重启命令
/etc/sudoers
配置文件的参数
参数 | 作用 |
---|---|
user | 表示将授权信息添加到指定用户的权限列表中 |
ALL | 表示将授权信息添加到所有用户或者组的权限列表中 |
NOPASSD | 表示授权用户在执行该命令时无需输入密码 |
PASSWD | 表示授权用户在执行该命令时需要输入密码 |
/path/ | 表示授权用户可以执行的命令路径,必须使用完整的命令路径 |
/file | 表示授权用户可以执行的文件路径,必须使用完整的文件路径 |
# | 表示注释符号,后面的内容将被视为注释,不起实际作用 |
Defaults | 表示设置sudo的默认配置信息,包括日志路径、运行超时时间等 |
3.2.3、visudo命令
usage: visudo [-chqsV] [[-f] sudoers ]
Options:
-c 检查sudoers文件语法错误
-f 指定要编辑的sudoers文件,默认为/etc/sudoers
-q 在检查sudoers文件时,只输出错误信息而不进行其他操作
-s 指定编辑的sudoers文件为模拟模式,不会真正写入sudoers文件中