03_linux用户和用户组管理

用户和用户组管理

1 概述

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;

另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个唯一的用户名和各自的口令。

用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

实现用户账号的管理,要完成的工作主要有如下几个方面:

  • 用户账号的添加、删除与修改。
  • 用户口令的管理。
  • 用户组的管理

概念说明:

  • UID :每一个用户都会有一个对应的UID, 该UID在系统捏是唯一存在的
  • GID :每个用户在创建的时候都会默认为这个用户创建一个用户组(主组),每个用户组都对对应一个GID, 用户必须属于一个且只有一个主组。主组之外的组属于用户的附加组

特别说明: 一个用户只有一个主组,但可以属于0个或者多个附加组

配置文件:

/etc/passwd  # 存储用户关键信息的文件
/etc/shadow  # 存储用户密码信息的文件
/etc/group   # 存储用户组关键信息的文件

2 用户管理

用户账号的管理工作主要涉及到用户账号的添加、修改和删除。

添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。

2.1 创建用户(useradd)

# 语法
$ useradd 选项 用户名

参数项:

序号 参数 说明
1 -c comment 指定一段注释性描述
2 -d 指定一个目录成为用户的家目录(必须使用绝对路径), 默认会创建一个和用户名相同的家目录
如果此目录不存在,则同时使用-m选项,可以创建主目录
3 -g 用户组 指定用户所属的用户组,不指定用户组则会默认创建一个和用户名相同的用户组
4 -G 用户组,用户组 指定用户所属的附加组
5 -u 后面指定UID, 指定一个特定的UID给新建的账号
6 -M 强制不创建用户家目录
7 -s Shell文件 指定用户的登录Shell

示例:

# 创建用户
$ useradd -d /home/sam -m sam
# 查看用户家目录
$ ls /home/sam
examples.desktop

2.2 删除帐号(userdel)

如果一个用户的账号不再使用,可以从系统中删除。

删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。

删除一个已有的用户账号使用userdel命令,其格式如下:

userdel 选项 用户名

常用的选项是 -r,它的作用是把用户的主目录一起删除。

例如:

# 删除用户
$ userdel -r sam

# 查看删除的用户家目录
$ ls /home/sam
ls: 无法访问'/home/sam': 没有那个文件或目录  # 说明该用户已被删除

此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录

2.3 修改用户(usermod)

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。

修改已有用户的信息使用usermod命令,其格式如下:

$ usermod 选项 用户名

常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。

另外,有些系统可以使用选项:

  • -l 新用户名
  • -u 修改用户id
  • -g 修改用户的用户组id
  • -G 修改用户附组的组id

这个选项指定一个新的账号,即将原来的用户名改为新的用户名。

例如:

$ usermod -s /bin/ksh -d /home/z –g developer sam

此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer

2.4 设置密码(passwd)

linux系统不允许内有密码的账户登录系统,刚创建的用户会处于锁定状态,因此需要给用户设置一个密码,该用户才可以登录到系统中去。

语法格式:

$ passwd 选项 用户名

可使用的选项:

  • -l 锁定口令,即禁用账号。
  • -u 口令解锁。
  • -d 使账号无口令。
  • -f 强迫用户下次登录时修改口令。

锁定用户:

# 用户sam 不能登录系统
$ passwd -l sam

删除密码:

# 执行该指令, 用户密码将会被删除,用户将无法登录到系统
$ passwd -d sam

修改当前用户密码:

$ passwd
更改 gll 的密码。
(当前)UNIX 密码: 
输入新的 UNIX 密码: 
重新输入新的 UNIX 密码: 
passwd:已成功更新密码

修改指定用户的密码:

# 输入两次密码即可
$ passwd sam
输入新的 UNIX 密码: 
重新输入新的 UNIX 密码: 
passwd:已成功更新密码

文件/etc/shadow 与密码相关的文件:

$ cat /etc/shadow | grep "gll"
gll:$6$vAiekYK/$dh6LYp2b/t.37vG57CBZ.KOEBwTTf/ptZMk9.yktX4vUYyQ/wofkYQQHjTKdJSzqslsOymgMHCYtSoHC.Niz/.:19076:0:99999:7:::

3 组管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。

不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新

3.1 用户组添加(groupadd)

格式:

$ groupadd 选项 用户组

选项:

  • -g GID 指定新用户组的组标识号(GID)。
  • -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同

示例:

# 不指定组id, 系统会默认添加一个gid, 新组的组标识号是在当前已有的最大组标识号的基础上加1
$ groupadd group1

# 指定gid
$ groupadd -g 101 groupadd

3.2 用户组修改(groupmod)

格式:

groupmod 选项 用户组

常用的选项有:

  • -g GID 为用户组指定新的组标识号。
  • -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
  • -n 新用户组 将用户组的名字改为新名字

示例:

# 查看最后一行组信息
$ tail -1 /etc/group
sam:x:1001:

# 修改组id
$ groupmod -g 1002 sam

$ tail -1 /etc/group
sam:x:1002:

示例2:

# 查看最后一行组信息
$ tail -1 /etc/group
sam:x:1002:

# 修改组id为1003, 组名为nsam
$ groupmod -g 1003 -n nsam sam

$ tail -1 /etc/group
nsam:x:1003:

3.3 用户组删除(groupdel)

格式:

$ groupdel 用户组

示例:

# 此命令从系统中删除组group1
$ groupdel group1
posted @   三叶草body  阅读(89)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示