Linux-(10)Linux中的用户和组


和Windows一样,当我们使用Linux时,也需要以一个用户的身份登录,一个进程也需要以一个用户的身份运行,用户限制使用者或进程可以使用,不可以使用哪些资源。

在我们使用Linux时,都是用一个用户名来进入系统的,而实际上在Linux中,每一个用户都拥有一个UserID,操作系统实际使用的是用户的ID来区分用户,而不是我们登录系统用的用户名。

在Linux中,每个用户都属于一个主组,属于一个或多个附属组。主组默认是和用户名相同的,也就是说创建用户的时候会默认创建一个同名的组。

同用户一样,每个组也有一个GroupID。

在Linux中,每个进程都是以一个用户的身份运行,并且该进程的访问权限受该用户的权限的限制。

Linux系统中的文件都有一个所属用户及所属组

用户ID:

Linux中的用户ID为32位,从0开始。

用户ID分为三种,分别是:

root用户: ID为0的用户

系统用户: ID为1-499

普通用户: ID为500以上

为了和老式的系统兼容,用户ID通常被限制在60000以下

保存用户和组相关的文件:

/etc/passwd 这个文件保存用户信息

/etc/shadow 这个文件保存用户密码(当然是加密过的)

/etc/group 这个文件保存组信息

/etc/passwd文件结构:

/etc/passwd文件为纯文本文件,一行保存一个用户信息,各信息用“:”分隔。

第一个参数: 用户名

第二个参数: 通常为x,意思是密码保存在/etc/shadow中

第三个参数: 用户ID

第四个参数: 组ID

第五个参数: 用户描述信息,这个没有什么规定,可以任意输入文本

第六个参数: 用户的家目录

第七个参数: 用户登录shell,普通用户通常为/bin/bash

/etc/shadow文件结构:

这个文件的结构和/etc/passwd是相同的,只是有一点,两个感叹号“!!”表示此用户没有创建密码

/etc/group文件结构:

组名:组密码:组ID:用户

创建用户:

useradd <用户名>

参数:

-d 家目录

-g 主族

-s 登录shell

-G 附属组(最多31个,用“,”分割)

-u userId

当执行useradd这个命令时,实际上系统会进行以下这些操作(在CentOS,RedHat是这样的,Ubuntu好像稍有差别)

1. 在/etc/passwd中添加用户信息

2. 如果使用passwd命令创建密码,则将密码保存在/etc/shadow中

3. 为用户在/home下建立一个新的家目录,目录名为用户名

4. 将/etc/skel目录中的文件复制到用户目录中。这里面有Documents,Download以及桌面等

5. 建立一个与用户名相同的组,即新建用户的主组

修改用户:

usermod <参数> <用户名>

参数:

-l 新用户名

-u 新userId

-d 新的家目录位置

-g 修改用户附属组

-L 锁定用户使其无法登录

-U 解除锁定

删除用户:

userdel <用户名> 只删除用户,保留用户的家目录

userdel -r <用户名> 删除用户的同时删除用户的家目录

创建组:

groupadd <组名>

修改组:

groupmod -n <新组名> <旧组名> 修改组名

groupmod -g <新组ID> <旧组ID> 修改组ID

删除组:

groupdel <组名>

与用户相关的一些命令:

id 显示当前用户的信息

passwd <用户> 修改用户的密码,如果不加用户就是修改当前用户自己的密码

whoami 显示当前用户

who 显示有哪些用户已经登录了系统

w 显示有哪些用户已经登录并且在干什么

相关内容