【linux基础15】用户管理

一. 用户和组

1. 用户和组介绍

用户分类

Linux系统中的用户分为3类,即普通用户、根用户、系统用户。

  • 普通用户是指所有使用Linux系统的真实用户,这类用户可以使用用户名及密码登录系统。一般来说普通用户只能在其家目录、系统临时目录或其他经过授权的目录中操作。
  • 根用户也就是root用户,它的ID是0,也被称为超级用户,root账户拥有对系统的完全控制权:可以修改、删除任何文件,运行任何命令。
  • 系统用户是指系统运行时必须有的用户,但并不是指真实的使用者。
    比如在RedHat或CentOS下运行网站服务时,需要使用系统用户apache来运行httpd进程,而运行MySQL数据库服务时,需要使用系统用户mysql来运行mysqld进程。在RedHat或CentOS下,系统用户的ID范围是1~499。

UID

用来区分不同用户的数字被称为User ID,简称UID。系统会自动记录“用户名”和UID的对应关系。

GID

不同的用户组同样也是用数字来区分的,这种用于区分不同用户组的ID被称为Group ID,也就是GID。

UID和GID又有什么联系呢?事实上,在Linux下每个用户都至少属于一个组。

如何查看自己的UID和GID呢?要确认自己的UID,可以使用以下id命令来获得:

[root@localhost ~]# id
uid=0(root)gid=0(root)groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

确认自己所属的用户组,可以使用以下groups命令来获得:

[root@localhost ~]# groups
root bin daemon sys adm disk wheel

如果要查询当前在线用户,可在用户登录以后,使用命令who看到目前登录在系统中的所有用户。

[root@localhost ~]# who
root     tty1         2012-10-22 00:13
root     pts/0        2012-10-22 21:20 (192.168.179.1)
john     pts/1        2012-10-22 22:35 (192.168.179.1)

2. /etc/passwd和/etc/shadow

在登录Linux时必须要输入用户名和密码。系统用来记录用户名、密码最重要的两个文件就是/etc/passwd和/etc/shadow。
 

用户信息文件:

以下是/etc/passwd中的几行内容:

[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
......(略去内容)......

每行都是使用6个分隔号“:”隔开的7列字符串。
在这里插入图片描述
 

密码文件:

LINUX将密码相关的信息保存到/etc/shadow中,而且默认只有root用户才有读的权限,其他人完全没有读取这个文件的可能。这种密码保存方式被称为“影子密码”。

/etc/shadow也是由冒号“:”隔开的,不同的是这里是8个冒号隔开的9列。
在这里插入图片描述

二、linux账号管理

1. 用户操作

1.1. 新增用户

需要新建一个叫john的用户,直接输入命令useradd john即可

[root@localhost ~]# useradd john

创建用户的过程

  • 首先,系统需要将用户信息记录在/etc/passwd中,一般会在/etc/passwd和/etc/shadow末尾追加一条记录,同时会分配给该用户一个UID。
  • 接着,要为该用户自动创建家目录。家目录以创建的用户名为目录名,创建的路径在/home目录中。比如,在上述案例中,创建的目录将是/home/john。
  • 然后,复制/etc/skel下所有的文件至/home/john。
  • 最后,新建一个与该用户名一样的用户组,也就是说当创建用户john的时候,也同时创建了一个叫john的用户组,而用户john默认属于john用户组。

这里对/etc/skel目录做一些说明。

系统在添加用户时,需要预先为这个用户创建一些默认的“配置文件”,而默认配置的就是/etc/skel目录下的几个隐藏文件。可以说,/etc/skel实际上是创建用户时的“模板”。

1.2. 指定UID、添加所属组、执行家目录

[root@localhost skel]# useradd -u 555 user1

创建用户user2时,指定了该用户所属的Group是user1。

[root@localhost skel]# useradd -g user1 user2

d参数指定该用户的家目录,而不是使用系统默认创建的家目录

[root@localhost skel]# useradd -d /home/mydir3 user3

1.3. 设置密码:passwd

创建用户后,该用户实际上还没有登录系统的权限,因为在不设置密码的情况下,在/etc/shadow中该用户记录中以冒号分隔的第二列将显示为两个感叹号“!!”,这说明不允许该用户登录系统。

因此,需要同时设置用户的密码才行,设置命令是passwd后接用户名

//之后root用户才能执行
[root@localhost skel]# passwd john
Changing password for user john.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

1.4 修改用户家目录:usermod

# 添加用户设置密码
[root@localhost ~]# useradd alice
[root@localhost ~]# passwd alice
Changing password for user alice.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

# 修改家目录为/home/alice_new
[root@localhost ~]# usermod -d /home/alice_new -m alice
# m参数的作用是,如果指定用户的家目录存在, 就自动创建新目录/home/alice_new,并使用该目录作为alice的新家目录。

1.5. 用户冻结与解冻

[root@localhost ~]# cat /etc/shadow | grep alice
alice:$1$Doi70VUY$Gmjq6HijgNLsm7xnys4Lw/:15642:0:99999:7:::
# 冻结
[root@localhost ~]# usermod -L alice
[root@localhost ~]# cat /etc/shadow | grep alice
alice:!$1$Doi70VUY$Gmjq6HijgNLsm7xnys4Lw/:15642:0:99999:7:::

# 解冻
[root@localhost ~]# usermod -U alice
[root@localhost ~]# cat /etc/shadow | grep alice
alice:$1$Doi70VUY$Gmjq6HijgNLsm7xnys4Lw/:15642:0:99999:7:::

1.6. 删除用户

[root@localhost ~]# userdel alice

默认情况下,删除用户时并不会删除原来用户的家目录和邮件信息。可以使用-r参数同时删除用户家目录和该用户的邮件。

2. 用户组操作

2.1. 增加用户组:groupadd

在添加用户的时候系统默认会创建一个与用户名一样的用户组。
其实也可以直接创建用户组,新增用户组的命令是:

groupadd 用户组名称

 
在Linux中,使用/etc/group文件来记录用户组。如下:增加一个group1组:

[root@localhost ~]# groupadd group1
[root@localhost ~]# cat /etc/group
......(略去内容)......
group1:x:503:

在/etc/group文件中,每一行就代表一个用户组,其格式是使用3个分隔号“:”隔开的4列。

  • 第一列是用户组名
  • 第二列代表密码(但是并不使用)
  • 第三列代表用户组的数字ID
  • 第四列是组成员,这里为空说明还没有任何用户属于这个组

2.2. 删除用户组:groupdel

这里需要注意的是,如果已有用户属于这个试图删除的组,该操作会失败。
groupdel命令的使用方式如下:

[root@localhost ~]# groupdel group1

三. 检查用户信息

1.查看用户:users、who、w

Linux会把所有来自不同终端的活动定义为一个会话,从who命令的输出,可以看出lianggao用户是通过不同的终端登录到系统中的。

如下所示:

LiangdeMacBook-Pro:HDFS3 lianggao$ who
lianggao         console       5 28 11:04  
lianggao         ttys000       5 28 11:21  
lianggao         ttys001       5 29 15:49 

命令显示的结果有3列

  • 第一列是登录用户的用户名
  • 第二列是用户登录的终端
  • 第三列是用户登录的时间

 
w命令

LiangdeMacBook-Pro:HDFS3 lianggao$ w
17:47  up 1 day,  6:44, 3 users, load averages: 2.69 3.12 3.06
登录用户名 登录终端  从哪里登录         登录时间  空闲时间 
USER     TTY      FROM              LOGIN@  IDLE WHAT
lianggao console  -11   30:43 -
lianggao s000     -11   30:19 vim
lianggao s001     -                15:49       - w

第三列:如果用户从网络登录,则显示远程主机的主机名或IP地址。

w命令的第一行会显示当前时间、系统运行时间、已登录的用户数量和系统负载。

猜你喜欢

转载自blog.csdn.net/hiliang521/article/details/131143059