Linux用户

Linux有三种不同类用户

  1. 管理用户,即root用户,root用户是在安装操作系统时,由系统自动创建,具有Linux的所有权限。通常root用户是黑客在本机的终极目标。
  2. 一般用户,即我们安装系统时创建的yjr1100。可以在操作系统上访问程序,如vim,数据库,WEB浏览器。可以创建保存文件到自己的HOME目录。无法修改系统配置文件
  3. 服务用户,用于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第二列需要是x
  • Password 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命令,发现可以执行了