Linux用户和组管理

本文详细介绍了Linux系统中的用户和用户组管理,包括用户分类(管理员、普通用户、系统用户),如何创建、修改和删除用户,设置用户密码,切换用户以及使用sudo命令。同时,文章还涵盖了用户组的创建、修改和删除,以及用户与用户组之间的关系和配置文件的作用。
摘要由CSDN通过智能技术生成

用户管理

用户分类

1.管理员,root用户,权限非常高,用户的编号为:0,只有进行系统维护(例如:建立用户等)或其他必要
情形下才用超级用户登录,以避免系统出现安全问题。
2.普通用户,权限较低,用户的编号为:1000-65535。是为了让使用者能够使用Linux系统资源而建立的,我们的大多数用户属于此类。
3.系统用户,不能登录系统,主要是运行程序的,权限较低,用户的编号:1-999。是Linux系统正常工作所必需的用户。主要是为了满足相应的系统进程对
文件属主的要求而建立的,例如:bin、daemon、adm、lp等用户。系统用户不能用来登录。

创建用户

注:/etc/passwd存储的是用户信息

#创建名为xiaoming的普通用户
[root@loaclhost ~]# useradd xiaoming
#查看xiaoming用户的个人信息:用户名,用户编号,用户组名,用户组编号
[root@loaclhost ~]# id xiaoming
用户id=1001(xiaoming) 组id=1001(xiaoming)(基本组)=1001(xiaoming)(所有组)

#查看有多少的用户
[root@loaclhost ~]# wc -l /etc/passwd
41 /etc/passwd

#查看有关用户的信息
[root@loaclhost ~]# grep xiaoming /etc/passwd
xiaoming:x:1001:1001::/home/xiaoming:/bin/bash
用户名:密码占位符:用户编号:基本组编号:用户备注:用户家目录:命令解释器
[root@loaclhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash

#创建用户时指定基本组
[root@loaclhost ~]# useradd laozhu -g redhat
[root@loaclhost ~]# id laozhu
用户id=1002(laozhu) 组id=1000(redhat)=1000(redhat)

#创建用户时指定附加组
[root@loaclhost ~]# useradd laozhu -G redhat
[root@loaclhost ~]# id laozhu
用户id=1002(laozhu) 组id=1003(laozhu)=1003(laozhu),1000(redhat)
常用选项:
-c 注释信息——设定与用户相关的说明信息(如,真实姓名、邮箱地址等)。
-d 目录——设定用户的家目录(默认为/home/用户名)。
-e YYYY-MM-DD——设置用户的失效日期,此日期后将不能使用该账号。
-f 天数——指定密码到期后多少天账号被禁用,若指定为0,则表示账号到期后被立即禁用;若指定
为-1,则表示账号过期后不被禁用(即密码永不过期)。
-g 组名或GID号——为用户指定所属的基本组,该组在指定时必须已存在。
-G 组名或GID号列表——为用户指定所属的附加组,各组在指定时已存在,附加组可以有多个,组 之间
用“,”分隔。
-M——不创建用户家目录。
-N——不创建与用户名同名的基本组。
-p 密码——指定用户的登录密码。
-s shell名——指定用户登录后使用的Shell,默认是bash。
-u 用户号——设置账号的UID,默认是已有用户的最大UID加1。如果同时有-o选项,则可以重复使用其他
用户的标识号。

修改用户信息

[root@loaclhost ~]# usermod --help
用法:usermod [选项] 登录名

选项:
  -b, --badnames                allow bad names
  -c, --comment COMMENT         GECOS 字段的新值
  -d, --home HOME_DIR           用户的新主目录
  -e, --expiredate EXPIRE_DATE  设定帐户过期的日期为 EXPIRE_DATE
  -f, --inactive INACTIVE       过期 INACTIVE 天数后,设定密码为失效状态
  -g, --gid GROUP               强制使用 GROUP 为新主组
  -G, --groups GROUPS           新的附加组列表 GROUPS
  -a, --append GROUP            将用户追加至上边 -G 中提到的附加组中,
                                并不从其它组中删除此用户
  -h, --help                    显示此帮助信息并退出
  -l, --login NEW_LOGIN         新的登录名称
  -L, --lock                    锁定用户帐号
  -m, --move-home               将家目录内容移至新位置 (仅于 -d 一起使用)
  -o, --non-unique              允许使用重复的(非唯一的) UID
  -p, --password PASSWORD       将加密过的密码 (PASSWORD) 设为新密码
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -s, --shell SHELL             该用户帐号的新登录 shell
  -u, --uid UID                 用户帐号的新 UID
  -U, --unlock                  解锁用户帐号
  -v, --add-subuids FIRST-LAST  添加子 UID 范围
  -V, --del-subuids FIRST-LAST  移除子 UID 范围
  -w, --add-subgids FIRST-LAST  添加子 GID 范围
  -W, --del-subgids FIRST-LAST  移除子 GID 范围
  -Z, --selinux-user SEUSER     用户的新的 SELinux 用户映射

删除用户

#删除用户,但是保留用户的家目录和信箱
[root@loaclhost ~]# userdel laozhu

#删除用户并删除家目录和信箱(彻底删除)
[root@loaclhost ~]# userdel -r laozhu

设置用户密码

注:/etc/shadow为存储密码的文件

#普通用户只能给自己修改密码,root用户可以给普通用户修改密码
[root@loaclhost ~]# passwd xiaoming
更改用户 xiaoming 的密码 。
新的密码:
无效的密码: 密码少于 8 个字符
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。

#使用非交互式的方式修改用户的密码
[root@loaclhost ~]# echo 123 | passwd --stdin xiaoming
更改用户 xiaoming 的密码 。
passwd:所有的身份验证令牌已经成功更新。

在这里插入图片描述

#密码信息存储的文件
[root@loaclhost ~]# grep root /etc/shadow
root:$y$j9T$qRD31mox.yfznutz2yrLx.$sTrzkpzJZOD84w1oB7hMI46R5Kz5tXAzs9kwSZfUbBB:19567:0:99999:7:::
用户名:加密后的密码:最后一次修改密码距离1970-01-01的天数:密码的最短使用期限:密码的最长使用期限:密码的过期警告时间:密码的过期宽限时间:账号的失效时间:保留字段(无任何意义)

切换用户与sudo命名

/etc/sudoers是sudo命名的配置文件
在这里插入图片描述

[redhat@loaclhost ~]$ su -l xiaoming

查看用户的登录情况

[root@loaclhost ~]# w
 22:48:42 up 16:26,  1 user,  load average: 0.06, 0.14, 0.20
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     13:30    0.00s  2.53s  0.02s w
#USER用户名,TTY用户从哪个终端登录上来,LOGIN登录的时间,idle是空闲时间,耗费CPU时间,what表示当前执行的指令

[root@loaclhost ~]# who
root     pts/0        2023-07-30 13:30 (192.168.105.1)(客户端的ip地址)

#用户登录系统的具体信息
[root@loaclhost ~]# last
root     pts/0        192.168.105.1    Sun Jul 30 13:30   still logged in
root     pts/0        192.168.105.1    Sun Jul 30 12:18 - 13:30  (01:12)
root     pts/0        192.168.105.1    Sat Jul 29 21:28 - 11:35  (14:07)
reboot   system boot  5.14.0-162.6.1.e Sat Jul 29 21:27   still running
root     pts/0        192.168.105.1    Sat Jul 29 21:26 - 21:27  (00:01)
reboot   system boot  5.14.0-162.6.1.e Sat Jul 29 21:25 - 21:27  (00:02)
root     pts/0        192.168.105.1    Sat Jul 29 18:25 - 21:25  (02:59)
reboot   system boot  5.14.0-162.6.1.e Sat Jul 29 18:24 - 21:25  (03:00)
root     pts/0        192.168.105.1    Sat Jul 29 18:21 - 18:24  (00:02)
reboot   system boot  5.14.0-162.6.1.e Sat Jul 29 18:18 - 18:24  (00:05)
root     pts/0        192.168.105.1    Sat Jul 29 18:16 - 18:17  (00:01)
reboot   system boot  5.14.0-162.6.1.e Sat Jul 29 18:15 - 18:17  (00:02)

[root@loaclhost ~]# lastlog
Username         Port     From                                       Latest
root             pts/0                                              日 730 22:38:06 +0800 2023
bin                                                                 **从未登录过**
daemon                                                              **从未登录过**
adm                                                                 **从未登录过**
lp                                                                  **从未登录过**
sync                                                                **从未登录过**
shutdown                                                            **从未登录过**
halt                                                                **从未登录过**
mail                                                                **从未登录过**
operator                                                            **从未登录过**
games                                                               **从未登录过**
ftp                                                                 **从未登录过**
nobody                                                              **从未登录过**
systemd-coredump                                                    **从未登录过**
dbus                                                                **从未登录过**
polkitd                                                             **从未登录过**
avahi                                                               **从未登录过**
tss                                                                 **从未登录过**
colord                                                              **从未登录过**
clevis                                                              **从未登录过**
rtkit                                                               **从未登录过**
sssd                                                                **从未登录过**
geoclue                                                             **从未登录过**
libstoragemgmt                                                      **从未登录过**
setroubleshoot                                                      **从未登录过**
pipewire                                                            **从未登录过**
flatpak                                                             **从未登录过**
gdm              tty1                                               六 729 21:27:54 +0800 2023
cockpit-ws                                                          **从未登录过**
cockpit-wsinstance                                                    **从未登录过**
gnome-initial-setup                                                    **从未登录过**
sshd                                                                **从未登录过**
chrony                                                              **从未登录过**
dnsmasq                                                             **从未登录过**
tcpdump                                                             **从未登录过**
systemd-oom                                                         **从未登录过**
redhat           pts/0                                              日 730 22:33:33 +0800 2023
apache                                                              **从未登录过**
mysql                                                               **从未登录过**
nginx                                                               **从未登录过**
xiaoming         pts/0                                              日 730 22:33:39 +0800 2023

用户组管理

注:/etc/group为用户组信息文件

组分类

1.基本组(私有组):建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这
个组就是基本组。
2.附加组(公有组):可以容纳多个用户,组中的用户都具有组所拥有的权利。

创建用户组

#添加组
[root@loaclhost ~]# groupadd xiyouji

#在组信息文件中查看对应组信息
[root@loaclhost ~]# grep xiyouji /etc/group
xiyouji:x:1002:
组名:组密码占位符:组编号:组员(附加组成员列表)

修改用户组

#修改xiyouji组名为xiyoujihouzhuan,只改名字
[root@loaclhost ~]# groupmod -n 新名字 原名字
[root@loaclhost ~]# groupmod -n xiyoujihouzhuan xiyouji
[root@loaclhost ~]# grep xiyoujihouzhuan /etc/group
xiyoujihouzhuan:x:1002:

指定组为谁的主组或附加组

#修改xiyouji为xiaoming的主组
[root@loaclhost ~]# usermod -g xiyouji xiaoming
[root@loaclhost ~]# id xiaoming
用户id=1001(xiaoming) 组id=1002(xiyouji)=1002(xiyouji)


#修改xiyouji为xiaoming的附加组
[root@loaclhost ~]# usermod -G xiyouji xiaoming
[root@loaclhost ~]# id xiaoming
用户id=1001(xiaoming) 组id=1001(xiaoming)=1001(xiaoming),1002(xiyouji)

删除用户组

[root@loaclhost ~]# groupdel xiyouji
[root@loaclhost ~]# grep xiyouji /etc/group
[root@loaclhost ~]# id xiaoming
用户id=1001(xiaoming) 组id=1001(xiaoming)=1001(xiaoming)
[root@loaclhost ~]# usermod -g xiyouji xiaoming
usermod:“xiyouji”组不存在

添加用户到用户组

[root@loaclhost ~]# id xiaoming
用户id=1001(xiaoming) 组id=1001(xiaoming)=1001(xiaoming)
#将xiaoming用户添加到xiyouji组
[root@loaclhost ~]# gpasswd -a xiaoming xiyouji
正在将用户“xiaoming”加入到“xiyouji”组中
[root@loaclhost ~]# id xiaoming
用户id=1001(xiaoming) 组id=1001(xiaoming)=1001(xiaoming),1004(xiyouji)

将用户从组中删除

[root@loaclhost ~]# gpasswd -d xiaoming xiyouji
正在将用户“xiaoming”从“xiyouji”组中删除
[root@loaclhost ~]# gpasswd -a xiaoming xiyouji
正在将用户“xiaoming”加入到“xiyouji”组中
[root@loaclhost ~]# gpasswd -d xiaoming xiyouji
正在将用户“xiaoming”从“xiyouji”组中删除

Linux中用户和用户组的配置文件

文件功能文件名称
用户账号文件/etc/passwd
用户密码文件/etc/shadow
用户组账号文件/etc/group
用户组密码文件/etc/gshadow

useradd

useradd 命令是 Linux 系统中用于创建新用户账户的工具。它是 shadow-utils 或类似软件包的一部分,用于管理 /etc/passwd/etc/shadow/etc/group 等系统文件,这些文件存储了用户账户和组的信息。

基本用法

useradd [options] USERNAME
  • USERNAME 是你想要创建的新用户的用户名
  • [options] 是可以指定的选项,用于控制用户账户的创建过程,比如设置用户的主目录、用户组、shell 等。

常用选项

  • -c "COMMENT":添加用户的备注信息
  • -d /HOME_DIR:指定用户的主目录。如果不指定,则默认为 /home/USERNAME
  • -e EXPIRE_DATE:指定账户过期日期。格式为 YYYY-MM-DD
  • -g GROUP:指定用户登录时的初始登录组。组必须已经存在。
  • -G GROUP1[,GROUP2,...]:指定用户的附加组。这些组也必须已经存在。
  • -m创建用户的主目录。如果不使用该选项,则系统不会自动创建用户的主目录。
  • -M不创建用户的主目录
  • -s SHELL:指定用户的登录 shell。如果不指定,则默认为 /bin/bash
  • -u UID:指定用户的用户ID(UID)UID必须是唯一的,除非指定了 -o 选项。
  • -o:允许创建UID与其他用户重复的账户。通常不推荐使用

示例

  1. 创建一个名为 john 的新用户,使用默认设置(包括主目录 /home/john 和默认的 shell /bin/bash):

    useradd john
    
  2. 创建一个名为 jane 的新用户,指定其主目录为 /home/jane_doe,并设置其登录 shell 为 /bin/zsh

    useradd -d /home/jane_doe -s /bin/zsh jane
    
  3. 创建一个名为 bob 的新用户,并将其添加到 developers 组(假设 developers 组已经存在):

    useradd -g developers bob
    
  4. 创建一个名为 alice 的新用户,并将其添加到 developers 组和 writers 组(假设这两个组都已存在):

    useradd -g developers -G writers alice
    
  • 当创建一个程序运行的系统用户时,不创建用户的主目录不让系统用户登录系统,并指定在某一目录下运行
[root@server ~]# useradd -s /sbin/nologin -M -d /mnt user1

注意

  • 在创建用户后,通常还需要设置用户的密码。这可以通过 passwd 命令来完成:passwd USERNAME
  • useradd 命令的具体选项可能会因 Linux 发行版的不同而有所差异。因此,最好查阅您所使用的 Linux 发行版的 useradd 命令手册页(通过 man useradd 命令)以获取最准确的信息。

userdel

userdel 命令在 Linux 系统中用于删除用户账户。它是 shadow-utils 或类似软件包的一部分,用于管理 /etc/passwd/etc/shadow/etc/group 等系统文件,这些文件存储了用户账户和组的信息

基本用法

userdel [options] USERNAME
  • USERNAME 是你想要删除的用户账户的用户名
  • [options] 是可以指定的选项,用于控制用户账户的删除过程。

常用选项

  • -r:在删除用户的同时,删除用户的主目录和邮件池目录。注意,这个选项可能会删除大量数据,因此在使用时需要格外小心。
  • --force-f强制删除用户账户,即使用户当前正在登录。不过,这个选项在大多数 userdel 实现中并不直接支持,而是依赖于系统配置或 userdel 的具体版本。

示例

  1. 删除名为 john 的用户账户,但不删除其主目录和邮件池目录:

    userdel john
    
  2. 删除名为 jane 的用户账户,并同时删除其主目录和邮件池目录(如果它们存在的话):

    userdel -r jane
    

注意

  • 在删除用户之前,请确保该用户不再需要访问系统,并且其所有重要数据都已备份。
  • 使用 -r 选项时要特别小心,因为它会删除用户的主目录及其内容,这可能会导致数据丢失。
  • 如果用户正在登录,通常无法直接删除其账户。但是,某些系统配置或 userdel 的版本可能允许使用 --force-f 选项来强制删除用户,但这通常不是推荐的做法。
  • 在某些情况下,你可能还需要手动编辑 /etc/group 文件,以从用户所属的组中删除用户条目(尽管这通常不是必需的,因为大多数现代 Linux 系统在删除用户时会自动处理这个问题)。
  • 请记住,userdel 命令只删除用户账户本身,而不会删除用户可能创建或拥有的任何文件或目录(除非使用了 -r 选项)。如果你想要删除用户拥有的特定文件或目录,你需要手动执行这些操作。

echo 123 | passwd --stdin xiaoming

  • Linux 系统中,直接使用 echo 命令配合 passwd --stdin 的方式来更改用户密码通常是不被支持的,因为出于安全考虑,passwd 命令通常不接受来自标准输入(stdin)的密码。这种设计是为了防止密码在命令行历史记录、进程列表或其他可能的地方被泄露。

w

在Linux系统中,w命令是一个非常有用的工具,用于显示当前登录到系统的所有用户的信息,以及他们正在做什么。这个命令提供了一个实时的快照,展示了哪些用户正在使用系统,他们登录了多长时间,从哪个IP地址登录的(如果适用),以及他们当前正在执行的命令。

当你运行w命令时,它会显示一个包含多列的表格,这些列通常包括:

  • USER:显示登录系统的用户名。
  • TTY:显示用户登录的终端类型。这可以是物理终端(如tty1、tty2等)伪终端(如pts/0、pts/1等,常用于SSH或图形终端会话),或者其他类型的终端。
  • FROM:显示用户登录的远程主机名或IP地址(如果适用)。如果用户在本地登录,则此列可能为空或显示用户的登录终端。
  • LOGIN@:显示用户登录系统的时间
  • IDLE:显示用户空闲了多长时间。如果用户当前正在活动,则此列可能显示.或空白。
  • JCPU:显示自登录以来,所有由该用户启动的进程占用的CPU时间总和
  • PCPU:显示当前终端(或伪终端)上运行的进程占用的CPU时间
  • WHAT:显示用户当前正在执行的命令或程序的名称。如果用户没有执行任何命令(例如,他们只是登录了系统但还没有启动任何程序),则此列可能显示用户登录的shell名称。

需要注意的是,w命令的输出可能受到系统配置和权限的限制。例如,普通用户可能只能看到自己和其他用户的一些有限信息,而系统管理员则可以看到所有用户的信息。

who

Linux系统中,who命令是一个常用的系统命令,用于显示当前已经登录到系统的用户信息。它可以提供登录用户的用户名、登录时间、登录来源(如IP地址或主机名)以及登录时使用的终端等信息。这对于系统管理员来说非常有用,可以帮助他们追踪和管理系统上的用户活动。

基本语法

who命令的基本语法如下:

who [选项] [文件]
  • 选项:用于指定who命令的输出格式或行为。常见的选项包括-a-b-d-H-m-q-r-s-t-u等。
  • 文件:可选参数,用于指定who命令要读取的登录信息文件。如果不指定文件,who命令默认读取/var/run/utmp文件(或类似位置,具体取决于Linux发行版)。

常用选项

  • -a--all:显示所有登录用户的信息,包括系统用户。
  • -b--boot:显示系统最后一次启动的时间。
  • -d--dead:显示已经注销的用户信息(在某些系统中可能不可用)。
  • -H--heading:在输出信息中包含列标题。
  • -m:仅显示当前终端的用户信息,等同于who am iwho am I命令。
  • -q--count:仅显示登录系统的用户数量。
  • -r--runlevel:显示当前系统的运行级别。
  • -s--short:仅显示用户的登录名称和终端设备号。
  • -u:以用户友好的格式显示登录用户的信息,类似于-a选项但可能更简洁。

示例输出

当没有指定任何选项时,who命令的输出可能类似于以下格式:

username1 pts/0        2024-07-18 10:00 (192.168.1.100)
username2 pts/1        2024-07-18 10:05 (192.168.1.101)

这里,username1username2是登录用户的用户名,pts/0pts/1是他们登录时使用的伪终端,2024-07-18 10:002024-07-18 10:05是登录时间,(192.168.1.100)(192.168.1.101)是登录来源的IP地址。

注意事项

  • who命令的输出可能因Linux发行版和系统配置的不同而有所差异。
  • 在某些情况下,如果系统中有大量的用户登录,who命令的输出可能会很长。此时,可以使用lessmore命令来分页查看输出。
  • who命令通过读取系统中的登录信息文件(如/var/run/utmp)来获取当前登录用户的信息。因此,如果该文件被修改或损坏,who命令的输出可能会受到影响。

总结

who命令是Linux系统中用于显示当前登录用户信息的重要工具。通过合理使用不同的选项,系统管理员可以灵活地获取所需的用户信息,以便更好地管理和监控系统。

groupadd

Linux系统中,groupadd命令用于创建一个新的用户组。用户组是Linux中用于管理多个用户权限和资源的机制之一。通过将用户添加到特定的组中,系统管理员可以方便地控制这些用户访问系统资源(如文件、目录、设备等)的权限。

基本用法

groupadd [选项] 组名
  • 组名:是你想要创建的组的名称。在Linux中,组名通常是唯一的,并且遵循一定的命名规则(如,通常不包含空格,只能使用小写字母、数字、下划线等)。

常用选项

  • -g GID:为新组指定一个特定的组ID(GID)。如果不指定,系统会从可用的GID中自动选择一个。
  • -r:创建一个系统组。系统组主要用于系统程序和服务,其GID通常小于1000(但这取决于你的Linux发行版)。
  • -K:覆盖/etc/login.defs文件中的默认设置。这允许你为组指定额外的设置或选项,但具体可用的选项取决于你的系统和login.defs文件的配置。

示例

  1. 创建一个简单的用户组

    groupadd developers
    

    这将创建一个名为developers的新用户组。

  2. 创建一个具有特定GID的用户组

    groupadd -g 1001 webadmins
    

    这将创建一个名为webadmins的新用户组,并指定其GID为1001。

  3. 创建一个系统组

    groupadd -r nginx
    

    这将创建一个名为nginx的系统组。注意,由于使用了-r选项,该组通常用于系统程序或服务,其GID可能会小于1000(取决于你的Linux发行版)。

groupadd --help

groupadd 命令的 --help 选项提供了关于如何使用该命令以及它支持的选项的详细信息。这个命令用于在Linux系统中创建新的用户组。下面是对你提供的选项的简要说明:

  • -f, --force:如果尝试创建的组已经存在,groupadd 通常会报错并退出。使用此选项时,如果组已经存在,groupadd 将不会报错并成功退出。此外,如果指定的GID(组ID)已被其他组使用,并且没有使用-g选项,则此选项会取消-g选项的效果。

  • -g, --gid GID:允许你为新组指定一个特定的GID(组标识符)。如果不指定,系统会从可用的GID中自动选择一个。

  • -h, --help:显示groupadd命令的帮助信息并退出。你已经使用了这个选项来查看帮助信息。

  • -K, --key KEY=VALUE:这个选项允许你覆盖/etc/login.defs文件中的默认值。你可以通过指定KEY=VALUE对来设置特定的组属性,但可用的键值对取决于你的系统和/etc/login.defs文件的配置。

  • -o, --non-unique:允许你创建一个具有与其他组相同GID的组。通常,GID在系统中是唯一的,但使用这个选项可以违反这个规则。

  • -p, --password PASSWORD:允许你为新组设置一个加密过的密码。然而,大多数现代Linux系统并不使用组密码来控制对资源的访问,因此这个选项可能不太常用。

  • -r, --system:创建一个系统账户组。系统组通常用于系统服务或程序,并且它们的GID通常小于某个值(如1000,但这个值可能因发行版而异)。

  • -R, --root CHROOT_DIR:这个选项允许groupadd命令在指定的chroot环境中运行,这对于在受限环境中创建组很有用。

  • -P, --prefix PREFIX_DI:注意这里似乎有一个拼写错误,通常应该是--prefix PREFIX_DIR,它允许你指定一个目录前缀,该前缀将被添加到所有通常用于groupadd命令的文件路径中。然而,标准groupadd命令可能不支持这个选项,它可能是某个特定Linux发行版或自定义版本的特有选项。

  • -U, --users USERS:这个选项在标准的groupadd命令中通常不可用。它可能是某个特定版本或第三方工具的扩展,用于在创建组时同时指定组的成员用户列表。

注意事项

  • 创建组时,你需要具有足够的权限(通常是root权限)。
  • 创建组后,你可能还需要将用户添加到该组中,以便他们可以获得该组所拥有的权限。这可以通过usermod命令的-aG选项(添加用户到附加组)或gpasswd命令(对于支持gpasswd的系统)来完成。
  • 不同的Linux发行版在/etc/login.defs文件中可能有不同的默认设置,这可能会影响groupadd命令的行为。例如,系统组和非系统组的GID范围可能有所不同。

groupdel

Linux系统中,groupdel命令用于删除一个已经存在的用户组。这个命令需要root权限来执行,因为它涉及到修改系统级别的用户组信息。

基本用法

groupdel 组名
  • 组名:是你想要删除的组的名称。

注意事项

  • 在尝试删除一个组之前,请确保该组没有被任何用户作为主组或附加组使用。如果组是某个用户的主组,那么你需要先将该用户的主组更改为其他组,或者删除该用户(如果不再需要)。
  • 如果组是某个用户的附加组,并且你想要删除这个组,那么你需要从该用户的附加组中移除这个组。这可以通过gpasswd命令(如果可用)或编辑/etc/group文件并删除相应的行来实现,但直接编辑/etc/group文件需要谨慎,因为错误的编辑可能会导致系统问题。
  • 在某些情况下,即使组没有被任何用户直接使用,系统服务或程序也可能依赖于该组的存在。在删除组之前,请确保这不会破坏系统的稳定性或功能。

group --help

groupdel 命令的 --help 选项提供了关于如何使用该命令以及它支持的选项的详细信息。在你提供的输出中,groupdel 命令有几个选项,但其中一些(如 --prefix)可能不是所有Linux发行版标准groupdel命令的一部分,它们可能是特定于某个发行版或定制环境的。不过,我们可以根据通常的Linux实践来解释这些选项。

选项解释

  • -h, --help:显示groupdel命令的帮助信息并退出。你已经使用了这个选项来查看帮助信息。

  • -R, --root CHROOT_DIR:这个选项允许groupdel命令在指定的chroot环境中运行。Chroot是Linux系统中的一个安全特性,它可以改变程序运行时看到的根目录结构,使得程序只能访问到指定目录及其子目录中的文件。这对于在受限环境中运行程序很有用。

  • -P, --prefix PREFIX_DIR:这个选项允许你指定一个目录前缀,该前缀将被添加到所有通常用于groupdel命令的文件路径中。在标准的Linux发行版中,groupdel命令通常会直接操作/etc/group/etc/gshadow(如果存在)等文件,以删除组信息。然而,如果你的系统配置或特定环境要求将这些文件存储在非标准位置,那么你可以使用-P--prefix选项来指定这些文件的前缀目录。

  • -f, --force:这个选项允许groupdel命令在即使该组是某个用户的主组时也继续删除该组。通常,如果尝试删除一个用户的主组,groupdel会报错并阻止删除,因为将用户的主组更改为不存在的组可能会导致问题。然而,如果你确实需要删除这个组(可能是因为你已经以某种方式更改了用户的主组,或者你确定这个组不再需要),那么你可以使用-f--force选项来强制删除。

usermod

usermod 命令在 Linux 系统中用于修改用户账户的各种设置。这个命令非常强大,允许系统管理员更改用户的登录名、家目录、shell 类型、组成员身份、密码过期信息等。使用 usermod 时需要小心,因为错误的命令可能会导致用户无法登录或其他系统问题。

基本语法

usermod [options] USERNAME

其中 options 是你想要对用户账户进行的修改选项,USERNAME 是你想要修改的用户名。

常用选项

  • -c--comment:修改用户的注释信息,通常是用户的全名或描述。
  • -d--home:修改用户的家目录。通常与 -m 一起使用,以移动旧的家目录到新位置。
  • -e--expiredate:设置用户账号的过期日期。格式为 YYYY-MM-DD。
  • -g--gid:修改用户的初始登录组(GID)。
  • -G--groups:将用户添加到指定的附加组中。这些组名将替换用户当前的附加组列表。
  • -l--login:更改用户的登录名。
  • -L:锁定用户账户,使用户无法登录。
  • -m:与 -d 一起使用时,移动用户旧的家目录到新位置。
  • -s--shell:修改用户的登录 shell。
  • -U:解锁用户账户,允许用户登录。

示例

  1. 更改用户的家目录

    sudo usermod -d /new/home/dir -m username
    

    这里 -d 设置了新的家目录路径,-m 表示将旧的家目录内容移动到新位置。

  2. 更改用户的登录 shell

    sudo usermod -s /bin/bash username
    

    这将用户的登录 shell 改为 bash。

  3. 更改用户的登录名

    sudo usermod -l newusername oldusername
    

    这会将 oldusername 的登录名更改为 newusername。注意,这也会自动更新 /etc/passwd/etc/shadow/etc/group 和用户的家目录中的文件(如果使用了 -d-m 选项)。

  4. 锁定和解锁用户账户

    sudo usermod -L username  # 锁定用户
    sudo usermod -U username  # 解锁用户
    

注意事项

  • 修改用户账户时,请确保你了解每个选项的含义和后果。
  • 在执行 usermod 命令之前,最好备份相关的配置文件和用户数据。
  • 在修改用户登录名时,请确保没有正在使用该用户的进程,否则可能会导致问题。
  • 锁定和解锁用户账户时,请确保你了解这将对用户访问系统资源的影响。

案例

在Linux中,usermod命令用于修改用户账户的各种属性。以下是根据不同来源整理的一些usermod命令的常用选项及其案例:

1. 更改用户登录名

选项-l

案例:将用户oldname的登录名更改为newname

sudo usermod -l newname oldname

2. 更改用户的主目录

选项-d(与-m结合使用时,移动主目录内容)

案例:将用户username的主目录更改为/new/home/dir,并移动原目录内容。

sudo usermod -d /new/home/dir -m username

3. 更改用户的登录Shell

选项-s

案例:将用户username的登录Shell更改为/bin/tcsh

sudo usermod -s /bin/tcsh username

4. 更改用户的主要组

选项-g

案例:将用户username的主要组更改为newgroup

sudo usermod -g newgroup username

5. 更改用户的附加组

选项-G(结合-a使用以添加新组而不移除旧组)

案例:将用户username添加到group1group2附加组中。

sudo usermod -a -G group1,group2 username

6. 锁定用户账户

选项-L

案例:锁定用户username的账户,使其无法登录。

sudo usermod -L username

7. 解锁用户账户

选项-U

案例:解锁用户username的账户,使其可以登录。

sudo usermod -U username

8. 更改用户的UID

选项-u

案例:将用户username的UID更改为1001

sudo usermod -u 1001 username

9. 更改用户的备注信息

选项-c

案例:将用户username的备注信息更改为"This is a test user"。

sudo usermod -c "This is a test user" username

10. 设置用户账户到期日期

选项-e

案例:设置用户username的账户到期日期为2024-07-31

sudo usermod -e 2024-07-31 username

groupmod

Linux中的groupmod是一个用于修改用户组信息的命令,它允许系统管理员更改群组的识别码(GID)或名称。以下是关于groupmod命令的详细解析:

基本语法

groupmod [选项] 组名

其中,[选项]表示可以使用的命令选项,组名是你要修改的现有用户组的名称。

常用选项

  • -g, --gid GID:修改用户组的GID。例如,groupmod -g 1000 testgroup会将testgroup的GID更改为1000。
  • -n, --new-name 新组名:修改用户组的名称。例如,groupmod -n newgroupname oldgroupname会将oldgroupname修改为newgroupname
  • -h, --help:显示帮助信息并退出。
  • -o, --non-unique:允许使用重复的GID。这个选项在极少数需要的情况下使用,因为通常GID应该是唯一的。
  • -p, --password PASSWORD:将密码更改为(加密过的)PASSWORD。不过,通常不推荐直接通过groupmod命令来设置组密码,因为这可能涉及到安全风险。组密码通常用于限制组成员身份的改变,但在大多数现代Linux系统中,这一功能并不常用。

注意事项

  1. 谨慎使用:更改用户组的名称或GID可能会影响到依赖于这些信息的系统和应用程序。因此,在进行此类更改之前,请确保你完全了解可能的后果。
  2. GID的唯一性:默认情况下,GID应该是唯一的。如果你尝试将一个组的GID更改为另一个已经存在的GID,并且没有使用-o选项,groupmod命令将会失败。
  3. 用户组成员身份:更改用户组的名称或GID不会自动更改属于该组的用户的组成员身份。你需要使用usermod命令来更新这些用户的组成员信息。
  4. 文件权限:更改用户组的GID后,可能需要手动更改由该组拥有的文件的组所有权,以确保文件权限与新的GID相匹配。
  5. 备份:在进行重要更改之前,最好备份相关的配置文件(如/etc/group)和用户数据。

示例

  • 更改组名:

    sudo groupmod -n newgroupname oldgroupname
    
  • 更改组GID:

    sudo groupmod -g 1000 testgroup
    
  • 显示帮助信息:

    groupmod --help
    

gpasswd

Linux中的gpasswd命令是一个用于管理/etc/group/etc/gshadow文件的工具,这些文件存储了用户组的信息和组密码(如果已设置)。gpasswd允许系统管理员执行各种群组管理任务,如设置组密码、添加或删除组成员、以及更改组管理员等。以下是对gpasswd命令的详细解析:

基本语法

gpasswd [选项] 组名

常用选项

  • -a, --add 用户名:将指定的用户添加到组中。
  • -d, --delete 用户名:从组中删除指定的用户。注意,这与-r选项(删除组密码)不同。
  • -M, --members 用户名列表:设置组的成员列表,用逗号分隔用户名。这将替换组中的现有成员列表。
  • -A, --administrators 管理员用户名列表:设置组的管理员列表,用逗号分隔用户名。只有组管理员才能执行某些操作,如更改组成员列表。
  • -r, --remove-password:删除组的密码。
  • -R, --restrict:限制组的成员列表,只能包含指定的用户。这个选项的具体行为可能因Linux发行版而异,有时可能不直接由gpasswd支持,而是需要其他命令或配置。
  • -S, --status:显示组的密码信息和其他相关属性。如果未设置密码,则可能不显示密码信息。
  • --help:显示帮助信息。

使用示例

  1. 设置组密码

    sudo gpasswd 组名
    

    这将提示您输入并确认新密码。

  2. 将用户添加到组

    sudo gpasswd -a 用户名 组名
    
  3. 从组中删除用户

    sudo gpasswd -d 用户名 组名
    
  4. 设置组的成员列表

    sudo gpasswd -M 用户名1,用户名2,用户名3 组名
    

    这将替换组中的现有成员列表。

  5. 删除组密码

    sudo gpasswd -r 组名
    
  6. 显示组的密码信息

    sudo gpasswd -S 组名
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

^~^前行者~~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值