Linux用户和权限管理学习
Linux用户
Linux有三种不同类用户
- 管理用户,即root用户,root用户是在安装操作系统时,由系统自动创建,具有Linux的所有权限。通常root用户是黑客在本机的终极目标。
- 一般用户,即我们安装系统时创建的yjr1100。可以在操作系统上访问程序,如vim,数据库,WEB浏览器。可以创建保存文件到自己的HOME目录。无法修改系统配置文件
- 服务用户,用于apache、邮件、打印服务等系统服务。这些服务用户与Linux系统用户进行交互,通常不需要我们人为的去更改。
通常我们对Linux的操作过程是:使用普通用户登录进行查看,而需要修改Linux时,切换为root用户或使用root的权限进行操作
Linux用户管理文件
用户管理文件存放在 /etc/passwd
文件中,包含每个用户的基本信息,我们可以使用vim打开该文件。

这个文件每一行有7列,中间用冒号隔开,分别是 用户名:密码:用户id:组id:解释性描述:家目录:shell
username
: 代表用户名,可以包含数字、-
、·
、_
,但是不能-
开头,不能大于32个字符password
: 用户口令,可以是x
、*
或者字母数字的随机组合x
:表示实际口令指向/etc/shadow
*
: 表示禁用用户字母数字
:表示加密后的口令,这样一般不安全,可以被破解的
UserID
: 用户的数字ID,root 默认是 0,普通用户从 1000 开始GroupID
: 用户所属组ID,默认情况下,Linux会给每个用户新建一个用户组,与数字ID匹配Userinfo
:类似于用户的备注信息,可以任意输入Home Directory
:用户的家目录,登陆后用户默认所处的目录,默认是/home/用户名
Login Shell
:表示用户登录的SHELL程序- 默认可登录用户为
/bin/bash
,也可以自己定义一些其他的shell - 无法登录的服务用户默认为
/sbin/nologin
表示无法登录
- 默认可登录用户为
用户的组管理文件
用户的组管理文件放在 /etc/group
文件中,在Linux中每个用户都被分配到一个组名与用户名相同的组中

这个文件一行 4列,分别是:组名:口令:组id:组内用户(这个一般看不到,是隐藏的)
Groupname
:每个用户都有与用户名相同的组,也是组的唯一名称Password
:通常是x
,表示指向/etc/shadow
文件,也可是字母数字的随机组合Group ID
:和UserID
一样,如果要创建一个特殊的组,表示管理员权限,建议分配一个独立的Group ID
避免Group ID
滥用Group menbers
:表示组内成员
/etc/shadow
文件

它是/etc/passwd
的补充,包含8列信息
Username
:用户名Password
:加密后的口令,对应在/etc/password
第二列需要是xPassword history
:口令的最后修改日期,在1970年1月1日之后的天数mindays
:用户必须保持该口令的最小天数maxdays
:口令的使用最长天数,在此之后必须更改口令warndays
:口令过期前,提供警告的天数inactive
:口令过期后仍然可使用口令的天数,在此期间会提示修改口令disable
:禁用账户后,在1970年1月1日之后的天数
用户管理命令
添加用户
useradd
命令,格式如下
1 | useradd [选项] 用户名 |
选项有:
-u
: 指定uid-g
: 指定GID-d
: 指定用户家目录-C
: 输入备注信息-M
: 表示不建立家目录-S
: 自定义shell程序,不使用默认的/bin/bash-e
: YYYY-MM-DD格式,输入用户的过期日期
这样创建好后用户是默认没有密码的,我们只有设置好密码才能登录对应用户使用口令 passwd 用户名
给对应用户设置密码
注意:输入密码的过程中同样是没有回显的
我们也可以通过直接编辑/etc/passwd文件来添加用户确保以下几点:
- 添加用户的主目录,并确保你想添加的用户和用户组有目录所有权
- 确保编辑文件的格式正确
- 确保用户有与其名称对应的私有组
删除用户
userdel
命令,格式如下
1 | userdel [选项] 用户名 |
常用选项为 -r
表示一并删除用户家目录,一般来说,我们会保留家目录
添加和删除用户组
groupadd
命令
1 | groupadd -g GID 组名 |
注意: 如果不使用-g
来指定 GID,系统会默认从1000 开始分配
groupdel
命令
1 | groupdel 组名 |
直接删除组
删除时,如果有用户的主要组是这个组,则需要先删除用户才能删除该组,所谓 主要组 就是用户的/etc/passwd
文件中的组ID那个组
一个用户是可以属于多个组的,我们可以使用以下命令更改用户的组
- 将现有用户添加到辅助组,请使用带有-G 选项
1
usermod -G groupname username
- 将用户添加到多个辅助组
1
usermod -G groupname1,groupname2 username
- 我们必须使用 -g 改变用户的主要组
1
usermod -g groupname username
使用id命令可以查看用户的状态
1 | id username |
切换用户
su 用户名
切换为指定用户
比如切换到root 用户,su root
,这里需要输入root
用户的密码

上面su命令必须要知道root的密码才行。而root密码是一个非常敏感的密码,为了保障root密码的安全,Linux系统设计了sudo
这个命令,即用root的身份
执行一个命令,而不是切换为root用户。
sudo通过visudo工具来实现,Centos7默认已经安装有visudo。如果没有sudo命令,可以通过yum install sudo
来安装。
使用sudo时需要输入当前用户自身的密码。普通用户如果要使用sudo,必须经过root用户
的设置(允许)才行。下图就是普通用户使用sudo,但是提示,用户不在 sudoers
文件中,操作被拒绝了

我们可以看一下 /etc/sudoers
文件

在文件中我们可以找到上面两行,第一行是说允许 root 用户运行任何命令

第二行是说 允许 wheel 组的用户执行sudo中的任何命令
%wheel 代表用户组
所以如果我们想要用户有执行sudo命令的权限,我们只需要用root
用户,执行下面命令,把对应用户加入到 wheel
组中
1 | usermod -G wheel yjr1100 |
再次执行sudo
命令,发现可以执行了
