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命令,发现可以执行了



