CentOS实践(3)用户管理

发布 : 2018-04-27 分类 : Notes 浏览 :

1. 用户和用户组

Linux系统中每个用户都有一个唯一标识(32位整数),即User ID,简称UID。用户分为3类,即普通用户、根用户、系统用户。

  • 普通用户
    指所有使用Linux系统的真实用户,这类用户可以使用用户名和密码登录系统。通常普通用户的UID从500开始。
  • 根用户
    即root用户,它的UID为0,是系统中的超级用户,拥有对系统的完全控制权。
  • 系统用户
    指系统运行时必须有的用户,但并不是真实的使用者。比如说运行MySQL数据库服务时,需要使用系统用户mysql来运行mysqld进程。UID范围是1~499。

每个用户组也有唯一标识Group ID,简称GID。

我们可以通过 id 命令来查看自己的UID和GID:

1
2
[root@localhost ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

也可以查看自己所属的用户组:

1
2
[root@localhost ~]# groups
root

查询当前有哪些用户正在登录到系统中,使用 who 命令:

1
2
[root@localhost ~]# who
root pts/0 2018-04-26 13:36 (192.168.27.1)

2. 账号管理

2.1 useradd 新增用户

添加一个新用户,用户名为 whai

1
[root@localhost ~]# useradd whai

创建一个新用户,系统会为该用户分配一个UID,并创建一个该用户的home目录 /home/whai。同时还会新建一个与用户名一样的用户组。

2.2 passwd 修改密码

创建一个新用户后,该用户是不能登录系统的,因为还没有设置用户的登录密码。使用 passwd 命令后跟用户名,然后回车,将会提示输入新密码和确认密码:

1
2
3
4
5
6
[root@localhost ~]# passwd whai
更改用户 whai 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

注意:输入密码的时候,都是看不到密码字符的

如果输入的密码太简单,系统则会提示 无效的密码,但是我们依然可以继续设置这个密码,因为我们用的是 root 超级管理员用户。

普通用户可以用过 passwd 命令来修改自己的密码(命令后面不需要也不能跟用户名),首先需要输入旧密码进行验证,然后才可以设置新的密码。如果设置的新密码太简单,系统会拒绝设置为简单的密码。

2.3 usermod 修改用户

可以使用下面的命令,为用户指定一个新的home目录:

1
[root@localhost ~]# usermod -d /home/whai_new -m whai

  • -d 参数就是修改用户的home目录
  • -m 参数是如果新目录不存在,则自动创建该目录

使用 -L 参数可以冻结对应的账号,使该账号无法使用:

1
[root@localhost ~]# usermod -L whai

如果需要解锁账户,则使用 -U 参数:

1
[root@localhost ~]# usermod -U whai

其实 usermod 命令就是对 /etc/passwd 和 /etc/shadow 文件做修改,我们也可以手动修改这两个文件达到同样的效果

2.4 userdel 删除用户

使用该命令可删除指定的用户,默认情况下,删除用户时不会删除用户的home目录和邮件信息。

1
[root@localhost ~]# userdel whai

如果需要删除与该用户相关的所有文件,则可以跟上 -r 参数。

1
[root@localhost ~]# userdel -r whai

2.5 groupadd 新增用户组

通过该命令可以手动创建用户组

1
[root@localhost ~]# groupadd group1

2.6 groupdel 删除用户组

1
[root@localhost ~]# groupdel group1

如果有用户属于这个组,使用该命令则无法删除该组

2.7 users、who、w 查看当前登录用户

使用 users 命令可以简单查看当前登录系统的用户:

1
2
[root@localhost ~]# users
root

如果用一个用户通过两个不同的终端登录,则会显示为两个用户。

使用 who 命令可以查看到详细一些的信息:

1
2
[root@localhost ~]# who
root pts/0 2018-04-27 12:27 (192.168.27.1)

  • root 用户名
  • pts/0 登录的终端
  • 2018-04-27 12:27 (192.168.27.1) 用户的登录时间和IP地址

使用 w 命令则可以查看到更详细的信息:

1
2
3
 14:11:52 up  1:44,  1 user,  load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.27.1 12:27 0.00s 0.08s 0.00s w

  • 第一行显示当前时间、系统运行时间、已登录的用户数量和系统负载
  • USER 用户名
  • TTY 用户登录终端
  • FROM 登录的主机名和IP地址
  • LOGIN@ 用户登录时间
  • IDLE 用户闲置时间
  • JCPU 与终端相关的当前所有运行进程消耗的CPU时间总量
  • PCPU 当前WHAT列所对应的进程消耗的CPU时间总量
  • WHAT 用户当前运行的进程

3. 切换用户

在使用Linux系统过程中,通常使用的是普通用户,但是在操作过程中常常遇到权限原因必须使用root用户来执行一些命令,这时就需要临时切换成root用户,操作完成后再切换回普通用户。

3.1 su 切换用户

su 命令默认表示切换到root用户,然后输入root账户的密码就切换成功。完成操作后,使用 exit 命令就退出了root用户,并切换回原先的用户了。

1
2
3
4
5
6
7
8
9
[whai@localhost ~]$ su
密码:
[root@localhost whai]#

... 使用root用户进行操作 ...

[root@localhost whai]# exit
exit
[whai@localhost ~]$

su 命令后可跟用户名,即切换到指定的用户,同样需要输入用户对应的密码。
root用户可以使用su命令切换成任意用户而不需要输入密码

su 命令后还可跟上 - 参数,切换成用户后便会自动切换到该用户的用户环境(就是用户的home目录、使用的Shell,以及个性化设置等)。

1
2
3
4
[whai@localhost ~]$ su -
密码:
上一次登录:五 4月 27 14:29:31 CST 2018pts/0 上
[root@localhost ~]#

3.2 sudo 使用其他用户身份执行命令

当我们使用普通用户时,希望以root用户执行某个命令,比如需要创建一个用户 user1。我们不需要切换到root用户,而使用 sudo 命令后直接跟上需要执行的命令,按照提示输入用户自己的密码:

1
2
[whai@localhost ~]$ sudo useradd user1
[sudo] password for whai:

前提是我们必须赋予某个用户执行sudo的权限,否则会遇到如下错误提示:

1
whai 不在 sudoers 文件中。此事将被报告。

我们需要修改 /etc/sudoers 配置文件来授予用户对sudo的执行权限。可以直接使用 visudo 命令来编辑配置文件,通过这种方式在编辑后保存时会自动检查语法设置,防止配置错误而造成无法使用sudo命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost ~]# visudo

## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
## of related commands, which can then be delegated out to particular
## users or groups.
##
## This file must be edited with the 'visudo' command.

...

## Allow root to run any commands anywhere
whai ALL=(ALL) NOPASSWD:ALL

上面添加的这一行如下所示:

1
2
3
whai    ALL=(ALL)       NOPASSWD:ALL
```
表示

用户whai 可以在任何地方登录 =(执行任何人) 的任何命令,并不需要输入密码

1
2

最后一个参数设置为ALL是很不安全的,意味着该用户实际上拥有了全部的系统权限,在实际工作中可以根据用户的具体工作内容定义具体的命令列表。比如用户只需要执行重启和关机命令:

whai ALL=(ALL) NOPASSWD:/sbin/shutdown, /usr/bin/reboot
`

本文作者 : 王海
原文链接 : https://blog.whai.me/2018/04/27/centos-3-users/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
留下足迹