文章目录
- 一、组的管理
- 1.组的创建
- 格式:
- 参数:
- 2.组的删除
- 格式:
- 参数:
- 3.组的属性修改
- 格式:
- 参数:
- 4.查看组的信息
- ①cat /etc/group 命令
- ②getent group 命令
- ③仅显示系统中所有组名
- 二、用户的管理
- ①超级用户(Superuser):
- ②普通用户(Regular User):
- ③服务用户(Service User):
- ④系统用户(System User):
- ⑤匿名用户(Anonymous User):
- 1. 创建用户
- 格式:
- 参数说明:
- 2.删除用户
- 格式:
- 参数说明:
- 3.查看用户
- ①id命令
- 格式:
- ②whoami 命令
- ③cat /etc/passwd 命令
- ④getent passwd 命令
- ⑤仅显示系统中所有用户名
- ⑥ w命令:
- 4.修改用户属性
- 格式:
- 选项:
- 5.切换用户
- 格式:
- 选项:
- 6.设置用户密码:
- 格式:
- 选项
- 7.将用户添加到用户组:
- 8.从用户组中移除用户:
- 语法格式:
- 选项:
Linux下组和用户的管理都必须是root用户下进行:
一、组的管理
1.组的创建
格式:
groupadd 组名
参数:
-g
:指定用户组的组ID(GID),如果不提供则由系统自动分配。
【案例】创建一个名为 oldgroup
的新组
groupadd newgroup
系统将自动分配一个唯一的组ID(GID)给这个用户组。
2.组的删除
格式:
groupdel 组名
参数:
-f
:强制删除用户组,即使用户组还有关联的用户。
【案例】 删除名为 oldgroup
的组
groupdel oldgroup
3.组的属性修改
格式:
groupmod [选项] 组名
参数:
-n
:更改组名
-g
:修改用户组的组ID(GID)。
-o
:允许使用非唯一的组ID(GID)。
groupmod命令还有其他一些选项和参数,可以使用man groupmod命令在终端中查看groupmod的完整文档和使用说明。
【案例一】将名为"oldgroup"的用户组的组名更改为"newgroup",可以执行以下命令:
groupadd oldgroup
groupmod -n newgroup oldgroup
【案例二】修改名为 “newgroup” 的用户组的组ID(GID)为 1234,可以执行以下命令
groupmod -g 1234 newgroup
4.查看组的信息
①cat /etc/group 命令
②getent group 命令
与 cat /etc/group 不同的是,getent group 命令可以从不仅限于 /etc/group 文件中,还包括其他用户组数据库(如 NIS、LDAP 等)中获取用户组信息。
③仅显示系统中所有组名
cut -d: -f1 /etc/group
二、用户的管理
①超级用户(Superuser):
超级用户,也称为root用户,是系统中最高权限的用户。
root用户拥有对整个系统的完全控制权,可以执行任何操作,包括修改系统配置、安装软件、管理其他用户等。
超级用户(root)的UID为0。
②普通用户(Regular User):
普通用户是指一般使用计算机的用户。
普通用户只能访问和修改自己的文件及部分系统资源,无法对整个系统做出重要的变更。
普通用户可以通过sudo命令获取临时超级用户权限,执行需要特权的操作。
普通用户的UID从500开始递增。这些用户是系统中的一般用户,具有交互式登录权限,并且可以根据需要创建、管理和使用文件。
③服务用户(Service User):
服务用户是专门用于运行系统服务和守护进程的用户。
服务用户通常没有登录权限,它们的作用是限制服务进程的权限,以增加系统的安全性。
每个服务用户都与一个或多个特定的服务相关联,这些服务可以在后台运行并提供特定的功能。
④系统用户(System User):
系统用户是用于执行系统任务和特定应用程序的用户。
系统用户通常没有登录权限,它们被用来运行需要特定环境的任务和脚本。
与服务用户类似,系统用户的目的是限制其操作范围,提高系统的安全性和稳定性。
系统用户的UID范围为1到499。这些用户账户用于运行系统服务和进程,通常没有交互式登录权限。
⑤匿名用户(Anonymous User):
匿名用户是不需要身份验证即可访问某些服务或资源的用户。
常见的例子是FTP服务器上的匿名用户,允许用户通过匿名方式下载或上传文件。
1. 创建用户
格式:
useradd 选项 用户名
参数说明:
-d
目录 指定用户目录,如果此目录不存在,则同时使用-m选项,可以创建主目录-g
用户组 指定用户所属的用户组-G
用户组 指定用户所属的附加组-s
Shell文件 指定用户的登录Shell-u
用户号 指定用户的用户号,如果同时有 -o选项,则可以重复使用其他用户的标识号-c
:为用户添加注释,通常是用户的全名或描述。
【案例一】创建一个名为"username"的用户,可以执行以下命令:
useradd username
【案例二】创建一个名为johndoe的用户,添加了一个注释为"John Doe",指定了/home/johndoe为家目录,并将默认shell设置为/bin/bash,可以执行以下命令:
useradd -c "John Doe" -d /home/johndoe -s /bin/bash johndoe
【案例三】分别创建三个新用户账号:aa、bb 和 cc,并将它们的用户ID(UID)设置为 555、556 和 557,这些用户将/a 作为家目录, 可以执行以下命令:
useradd -u 555 aa -d /a
useradd -u 556 bb -d /a
useradd -u 557 cc -d /a
注意
:
①执行useradd命令需要root或具有管理员权限的用户。
②使用 useradd 命令只会创建用户账户,但不会设置密码。通常需要使用 passwd 命令为新用户设置密码。
2.删除用户
格式:
userdel 选项 用户名
参数说明:
-r
:删除用户的HOME主目录及其内容。不指定-r,删除用户时,HOME目录保留-f
:强制删除用户账户,即使用户正在登录或有其他进程。
【案例一】要删除"username"用户及其主目录,可以执行以下命令:
userdel -r usrname
【案例二】分别删除用户账户 aa、bb 和 cc,并且同时删除与这些账户关联的家目录,可以执行以下命令:
userdel -r aa
userdel -r bb
userdel -r cc
3.查看用户
①id命令
显示当前用户的身份信息,包括用户ID(UID)、组ID(GID)以及所属的组。
格式:
id 用户名
②whoami 命令
查看当前登录用户的用户名:
whoami
③cat /etc/passwd 命令
查看系统中所有用户的详细信息 :
该命令会读取并显示 /etc/passwd 文件的内容,其中包含了用户账户的相关信息。每行的格式为:
username:password:UID:GID:gecos:directory:shell
注释:
username
: 用户名password
: 加密后的密码(通常是 “x” 或 “*” 表示已在 /etc/shadow 文件中存储)UID
: 用户ID(唯一标识符)GID
: 主要组ID(与 /etc/group 中的组ID对应)gecos
: 用户的全名或注释字段directory
: 用户的主目录路径shell
: 用户默认的登录Shell
通过运行 cat /etc/passwd 命令,可以查看和分析系统中所有用户的信息。
④getent passwd 命令
列出系统中所有用户的信息:
getent passwd
-
getent passwd 命令用于从系统的用户数据库中获取所有用户的信息。它会返回与 /etc/passwd 文件相同格式的输出,包含了系统中所有用户的详细信息。
-
与 cat /etc/passwd 不同的是,getent passwd 命令可以从不仅限于 /etc/passwd 文件中,还包括其他用户数据库(如 NIS、LDAP 等)中获取用户信息。
⑤仅显示系统中所有用户名
cut -d: -f1 /etc/passwd
⑥ w命令:
显示当前登录系统的用户信息,包括用户名、终端、登录时间、运行的命令等。
4.修改用户属性
格式:
usermod [选项] 用户名
选项:
- -c
, --comment:修改用户的注释。
-d
, --home:修改用户的家目录路径。- -
g
, --gid:修改用户的主组ID。 -G
, --groups:修改用户所属的附加组ID列表。-s
, --shell:修改用户的默认shell。-L
, --lock:锁定用户账号,禁止用户登录。-U
, --unlock:解锁用户账号,允许用户登录。-e
, --expiredate:修改用户的过期日期。
【案例一】要将"username"用户所属的主组更改为"newgroup",可以执行以下命令:
usermod -g newgroup username
【案例二】将修改名为johndoe的用户的注释为"John Smith",家目录为/home/johnsmith,并将默认shell更改为/bin/bash。 可以执行以下命令:
usermod -c "John Smith" -d /home/johnsmith -s /bin/bash johndoe
【案例三】分别修改账号 aa、bb 和 cc 的家目录路径和登录shell:
对于账号 aa,将家目录路径修改为 /newhome1,登录shell修改为 /bin/bash。
对于账号 bb,将家目录路径修改为 /newhome2,登录shell修改为 /bin/sh。
对于账号 cc,将家目录路径修改为 /newhome3,登录shell修改为 /usr/bin/zsh。
usermod -d /newhome1 -s /bin/bash aa
usermod -d /newhome2 -s /bin/sh bb
usermod -d /newhome3 -s /usr/bin/zsh cc
【案例四】分别修改用户 aa 的家目录路径为 /newhome,修改用户 bb 的登录shell为 /bin/bash,以及修改用户 cc 的登录名为 newname ,可以执行以下命令:
usermod -d /newhome aa
usermod -s /bin/bash bb
usermod -l newname cc
5.切换用户
格式:
su [选项] [用户名]
选项:
-c
, --command:执行指定的命令,而不是打开新的shell。-l
, --login:模拟登录为目标用户,加载用户的环境变量和配置文件。-s
, --shell:使用指定的shell,而不是目标用户的默认shell。- 【案例一】要切换到"username"用户,可以执行以下命令:
su username
【案例二】切换到超级用户(root)身份,可以执行以下命令:
su
【案例三】切换到johndoe用户,并执行ls -l命令,可以执行以下命令:
su -c "ls -l" -l johndoe
6.设置用户密码:
使用passwd命令为用户设置密码。passwd命令是在Linux系统中用于更改用户密码的命令。它允许用户修改自己的密码或管理员修改其他用户的密码。
格式:
passwd [选项] [用户名]
选项
-l
, --lock:锁定用户账户,禁止用户使用该账户登录。-u
, --unlock:解锁被锁定的用户账户。-d
, --delete:删除用户密码,使用户无法通过密码登录,但仍可使用其他身份验证方法登录。-e
, --expire:将用户的密码设置为过期状态,在下次登录时需要强制更改密码。- -
x
, --maxdays:设置用户密码的最大有效天数。 - -
n
, --mindays:设置用户必须保持密码不变的最短天数。 - -
w
, --warndays:在密码过期之前提前多少天向用户发出警告。
①更改当前用户密码
passwd
②更改特定用户的密码:
passwd 用户名
③锁定用户账户:
passwd -l 用户名
7.将用户添加到用户组:
使用usermod命令可以将用户添加到一个或多个用户组
【案例一】要将名为"username"的用户添加到"mygroup"用户组,可以执行以下命令:
usermod -aG mygroup username
8.从用户组中移除用户:
使用gpasswd命令可以从用户组中移除用户。gpasswd 命令用于管理用户组的密码和成员。它允许管理员设置用户组的密码、添加或删除用户组的成员。
语法格式:
gpasswd [选项] 组名
选项:
-a
, --add 用户名:将指定的用户添加到目标用户组。
-d
, --delete 用户名:从目标用户组中删除指定的用户。
-r,
--remove-password:从目标用户组中移除密码,使用户组无需密码即可加入。
-R
, --restrict:限制只有用户组的所有者和超级用户(root)可以添加或删除成员。
-M
, --members 用户列表:设置用户组的成员列表,替换原有成员列表。
管理用户组的示例:
①添加用户到用户组:
gpasswd -a 用户名 组名
②从用户组中删除用户:
gpasswd -d 用户名 组名
③设置用户组的密码:
gpasswd 组名
④移除用户组的密码:
gpasswd -r 组名
例如,要将名为"username"的用户从"mygroup"用户组中移除,可以执行以下命令:
gpasswd -d username mygroup
注意:
执行gpasswd命令需要root或具有管理员权限的用户。