《Linux从小白到高手》理论篇(四):Linux用户和组相关的命令

  1. List item
    本篇介绍Linux用户和组相关的命令,看完本文,有关Linux用户和组相关的常用命令你就掌握了99%了。Linux用户和组相关的命令可以分为以下六类:

一.用户和用户组相关查询操作命令:

Id

id命令用于显示用户的身份标识。常见用法:
1、基本用法
显示当前用户的信息:

id
   uid=1000(user1) gid=1000(group1) groups=1000(group1),4(adm),24(cdrom),27(sudo),46(plugdev),116(lpadmin),126(sambashare)

//显示了当前用户的用户 ID(uid)、所属主组 ID(gid)以及所属的其他(groups)。
显示特定用户的信息:

 id username

例如:id user2,将显示用户 “user2” 的身份标识信息。
2、选项用法
-u:只显示用户 ID。

id -u username

例如:id -u user3,仅显示用户 “user3” 的用户 ID。
-g:只显示用户所属主组的组 ID。

id -g username

-G:显示用户所属的所有组的组 ID。

id -G username

-n:结合上述选项使用,以名称而不是数字显示用户 ID、组 ID 等信息。

id -un username

这将以名称形式显示用户的用户名,而不是用户 ID。

 id -gn username

显示用户所属主组的组名。

id -Gn username

显示用户所属的所有组的组名。假设系统中有用户 “testuser”,其属于 “testgroup” 组以及 “othergroup” 组,则:
id testuser:输出完整的用户身份标识信息,包括用户 ID、主组 ID 和所属的所有组。
id -u testuser:只显示用户 ID。
id -g testuser:显示主组 ID。
id -G testuser:显示所有组 ID。
id -un testuser:以名称形式显示用户名。
id -gn testuser:以名称形式显示主组名。
id -Gn testuser:以名称形式显示所有组名。

finger

finger命令用于显示系统中用户的信息。常见用法:
1、基本用法
显示特定用户的信息:

 finger username

例如,finger user1将显示用户 “user1” 的详细信息,包括用户名、主目录、登录 shell、登录时间等。
2、选项用法
-s:以简短格式显示用户信息,只包括用户名、登录名、真实姓名、终端类型、空闲时间、登录时间、办公地点和办公电话等信息。

finger -s username

-l:以长格式显示用户信息,提供更详细的信息,包括用户名、主目录、登录 shell、邮箱、计划文件、项目文件等。

finger -l username

-p:禁止显示用户的计划文件和项目文件信息。

finger -p username

例如:
finger -s user2:以简短格式显示用户 “user2” 的信息。
finger -l user3:以长格式显示用户 “user3” 的信息。
finger -p user4:显示用户 “user4” 的信息,但不包括计划文件和项目文件信息。
注:在一些 Linux 发行版中,可能需要安装额外的软件包才能使用finger命令;出于安全考虑,一些系统可能会禁用finger服务或限制其使用。

pwck

pwck命令用于验证用户账号信息的完整性。常见用法:
1、基本用法
直接运行pwck命令,它会检查/etc/passwd和/etc/shadow文件中用户账号信息的一致性和正确性,如果/etc/passwd中的数据字段错误会提示。
它会检查以下内容:
–用户账号是否在两个文件中都存在且信息一致。
–用户主目录是否存在。
–用户的登录 shell 是否合法等。
2、选项用法
-r:以只读模式运行,只报告错误而不进行任何修改。

pwck -r

-s:以安静模式运行,只显示严重错误信息。

pwck -s

注意事项:
在运行pwck命令之前,最好备份/etc/passwd和/etc/shadow文件,以防意外情况发生。如果发现错误,根据错误提示谨慎进行修复,避免因错误操作导致系统用户管理出现问题。

grpck

和pwck功能相近,这是检查用户组的。grpck命令用于检查 /etc/group 和 /etc/gshadow 文件中组账号信息的完整性。常见用法:
1、基本用法
直接运行 grpck 命令,它会检查组账号信息的一致性和正确性。它主要检查以下内容:
–组账号是否在两个文件中都存在且信息一致。
–组中成员列表是否正确等。
2、选项用法
-r:以只读模式运行,只报告错误而不进行任何修改。

 grpck -r

-s:以安静模式运行,只显示严重错误信息。

grpck -s

注意事项:
在运行 grpck 命令之前,最好备份 /etc/group 和 /etc/gshadow 文件,以防意外情况发生。如果发现错误,应根据错误提示谨慎进行修复,避免因错误操作导致系统组管理出现问题。

二.用户和用户组增删修改相关命令:

groups

groups命令用于显示指定用户所属的组。常见用法:
1、基本用法
显示当前用户所属的组:

groups

显示指定用户所属的组:

 groups username

例如,groups user1将显示用户 “user1” 所属的组。

user1 : group1 group2 group3

表示用户 “user1” 属于 “group1”、“group2” 和 “group3” 这三个组。

newgrp

newgrp命令用于切换用户的有效组。常见用法:
1、基本用法
切换到指定的组:

newgrp groupname

例如,newgrp users将用户的有效组切换为 “users” 组。执行这个命令后,用户在新的 shell 环境中,有效组将变为指定的组。新启动的进程将继承这个新的有效组。
2、注意事项
权限要求:
用户必须是指定组的成员才能成功切换到该组。
如果用户不是指定组的成员,执行newgrp命令会失败,并显示错误信息。
临时切换:
newgrp命令只在当前 shell 环境及其子进程中有效。一旦退出当前 shell,用户的有效组将恢复为原来的默认组。
密码验证(如果组设置了密码):
某些组可能设置了密码以限制成员加入。在这种情况下,执行newgrp命令时,系统可能会提示用户输入组密码。例如,假设用户 “user1” 同时属于 “group1” 和 “group2”,如果 “group2” 设置了密码,执行以下命令:

newgrp group2

系统可能会提示用户输入 “group2” 的密码。只有输入正确的密码,用户才能成功切换到 “group2” 组。
newgrp命令提供了一种方便的方式来临时切换用户的有效组,但在使用时需要注意权限和密码验证等问题。

useradd

useradd命令用于创建新用户。常见用法:
1、基本用法
创建一个新用户:

 useradd username

例如,useradd user1将创建一个名为 “user1” 的用户。
2、常用选项
-u UID:指定用户的用户 ID。

 useradd -u 1001 user2

创建用户 “user2” 并指定用户 ID 为 1001。
-g GROUP:指定用户所属的主组。

 useradd -g group1 user3

创建用户 “user3” 并将其加入到 “group1” 组作为主组。
-G GROUPS:指定用户所属的附加组,可以指定多个组,用逗号分隔。

useradd -G group2,group3 user4

创建用户 “user4” 并将其加入到 “group2” 和 “group3” 作为附加组。
-d HOME_DIR:指定用户的主目录。

  useradd -d /home/newuser user5

创建用户 “user5” 并指定主目录为 “/home/newuser”。
-s SHELL:指定用户的登录 shell。

useradd -s /bin/bash user6

创建用户 “user6” 并指定登录 shell 为/bin/bash。
-m:如果指定的主目录不存在,自动创建主目录。

 useradd -m user7

创建用户 “user7” 并自动创建主目录。
-c COMMENT:添加用户的注释信息。

useradd -c "This is a test user" user8

创建用户 “user8” 并添加注释信息。

usermod

usermod命令用于修改用户账号的属性。常见用法:
1、基本用法
修改用户的登录名:

 usermod -l new_username old_username

例如,usermod -l newuser olduser将用户 “olduser” 的登录名修改为 “newuser”。
修改用户的主目录:

usermod -d new_home_dir username

例如,usermod -d /home/newdir user1将用户 “user1” 的主目录修改为 “/home/newdir”。
修改用户的登录 shell:

usermod -s new_shell username

例如,usermod -s /bin/zsh user2将用户 “user2” 的登录 shell 修改为/bin/zsh。
修改用户的用户 ID:

usermod -u new_uid username

例如,usermod -u 1002 user3将用户 “user3” 的用户 ID 修改为 1002。
修改用户所属的主组:

usermod -g new_group username

例如,usermod -g group2 user4将用户 “user4” 的主组修改为 “group2”。
修改用户所属的附加组:

usermod -G new_groups username

例如,usermod -G group3,group4 user5将用户 “user5” 的附加组修改为 “group3” 和 “group4”。
2、常用选项组合
同时修改多个属性:

 usermod -l new_username -d new_home_dir -s new_shell username

例如,usermod -l newuser -d /home/newdir -s /bin/bash olduser将用户 “olduser” 的登录名、主目录和登录 shell 同时进行修改。
锁定用户账号:

usermod -L username

例如,usermod -L user6将用户 “user6” 的账号锁定,使其无法登录。
解锁用户账号:

usermod -U username

例如,usermod -U user7将用户 “user7” 的账号解锁。
三、注意事项
修改用户属性时要谨慎,确保不会影响系统的正常运行和用户的数据安全。
修改用户的主目录时,确保新的主目录存在且用户具有适当的权限。
修改用户的登录 shell 时,确保新的 shell 是系统中可用的且符合用户的需求。
修改用户的用户 ID 时,确保新的用户 ID 没有被其他用户占用。
修改用户所属的组时,确保用户在新的组中有适当的权限。
usermod不仅能改用户的SHELL类型,所归属的用户组,也能改用户密码的有效期,还能改登录名。
usermod还可用于户帐号大转移;比如把用户A改为新用户B;

userdel

userdel命令用于删除用户账号。常用用法:
1、基本用法
删除用户账号:

 userdel username

例如,userdel user1将删除用户 “user1”。
此命令会删除用户的主目录和邮件池(如果存在),但不会删除用户的文件(如果用户在系统的其他位置有文件)。
2、常用选项
-r:删除用户的主目录和邮件池,并同时删除用户在系统中的所有文件。

 userdel -r username

例如,userdel -r user2将删除用户 “user2” 及其主目录和邮件池,并删除用户在系统中的所有文件。
-f:强制删除用户,即使用户当前已登录。

 userdel -f username

这个选项应该谨慎使用,因为强制删除正在登录的用户可能会导致数据丢失或系统不稳定。
3、注意事项
在删除用户之前,确保你了解该用户在系统中的作用和影响,以免误删重要用户导致系统出现问题。如果用户拥有重要的数据或文件,在删除用户之前最好备份这些数据。
删除用户后,可能需要检查系统中的权限设置和文件所有权,以确保没有残留的权限问题。

groupadd

groupadd命令用于创建新的用户组。常用用法:
1、基本用法
创建一个新的用户组:

groupadd groupname

例如,groupadd mygroup将创建一个名为 “mygroup” 的用户组。
2、常用选项
-g GID:指定用户组的组 ID。

groupadd -g 1001 newgroup

创建一个名为 “newgroup” 的用户组,并指定组 ID 为 1001。
-r:创建一个系统用户组。系统用户组的组 ID 通常小于 1000,并且通常用于系统服务和进程。

groupadd -r sysgroup

创建一个名为 “sysgroup” 的系统用户组。
3、注意事项
如果不指定组 ID,系统会自动分配一个唯一的组 ID。创建用户组后,可以使用usermod命令将用户添加到该组中。在创建用户组时,要确保组名的唯一性,避免与系统中已有的组名冲突。

groupmod

groupmod命令用于修改用户组的属性。常用用法:
1、基本用法
修改组名:

groupmod -n new_group_name old_group_name

例如,groupmod -n newgroup oldgroup将用户组 “oldgroup” 的名称修改为 “newgroup”。
修改组 ID:

groupmod -g new_gid group_name

例如,groupmod -g 1002 mygroup将用户组 “mygroup” 的组 ID 修改为 1002。
2、注意事项
修改组名时,确保新的组名没有被其他组使用,并且不会与系统中的其他资源产生冲突。修改组 ID 时,确保新的组 ID 没有被其他组占用,并且不会影响系统中已有的用户和文件的权限设置。在修改用户组属性之前,最好备份重要的数据和配置文件,以防出现意外情况。修改组 ID 可能会影响到系统中已有的文件和目录的所有权和权限,因此需要谨慎操作。

groupdel

groupdel命令用于删除用户组。常用用法:
1、基本用法
删除一个用户组:

groupdel groupname

例如,groupdel testgroup将删除名为 “testgroup” 的用户组。
2、注意事项
–只有当用户组中没有任何成员用户时,才能成功删除该用户组。如果用户组中有成员用户,需要先将这些用户从该组中移除,或者使用-f选项强制删除,但这可能会导致一些不可预测的后果,因此不建议使用强制删除选项。
–在删除用户组之前,确保该用户组不是系统关键组或者没有被其他重要的系统组件所依赖。否则,删除该用户组可能会导致系统出现问题。
–删除用户组后,该组的所有相关权限和配置也会被删除,所以在执行此操作之前,最好确认是否真的需要删除该用户组。

三.密码相关的命令:

passwd

passwd命令用于设置或更改用户密码。常用用法:
1、基本用法
为当前用户设置密码:

passwd

执行该命令后,系统会提示你输入当前用户的旧密码(如果有),然后输入新密码两次以确认。
为其他用户设置密码:

passwd username

例如,passwd user1将为用户 “user1” 设置密码。只有具有管理员权限的用户才能为其他用户设置密码。
2、常用选项
-l:锁定用户密码。这将使用户无法登录,直到密码被解锁。

passwd -l username

例如,passwd -l user2将锁定用户 “user2” 的密码。
-u:解锁用户密码。

passwd -u username

例如,passwd -u user3将解锁用户 “user3” 的密码。
-d:删除用户密码。这将使用户无需密码即可登录,但这通常是不安全的,并且只应在特定情况下使用。

passwd -d username

例如,passwd -d user4将删除用户 “user4” 的密码。
-e:立即过期用户密码,迫使用户在下次登录时更改密码。

 passwd -e username

例如,passwd -e user5将使用户 “user5” 的密码立即过期。
3、注意事项
–锁定或解锁用户密码时,应该谨慎操作,确保不会影响系统的正常运行和用户的工作。
–删除用户密码可能会导致安全风险,因此应该仅在特殊情况下使用,并尽快为用户设置新密码。

chage

chage命令用于修改用户密码的过期信息等。常用用法:
1、基本用法
查看用户密码过期信息:

chage -l username

例如,chage -l user1将显示用户 “user1” 的密码过期信息,包括上次密码更改时间、密码过期时间、密码失效时间等。
设置密码过期时间:

chage -M days username

其中 “days” 是密码有效的最大天数。例如,chage -M 180 user2将设置用户 “user2” 的密码在180 天后过期。
2、其他常用选项
-d:设置上次密码更改时间。

chage -d date username

“date” 可以是具体的日期格式,如 “YYYY-MM-DD”,也可以是相对时间,如 “0” 表示从 1970 年 1 月 1 日到现在的天数。例如,chage -d 0 user3将设置用户 “user3” 的上次密码更改时间为当前时间。
-E:设置密码失效时间。

chage -E date username

例如,chage -E “2028-01-01” user4将设置用户 “user4” 的密码在 2028 年 1 月 1 日失效。
-I:设置密码过期后的宽限天数。

chage -I days username

例如,chage -I 7 user5将设置用户 “user5” 的密码过期后有 7 天的宽限时间,在此期间用户可以登录并更改密码。
-W:设置密码过期前的警告天数。

 chage -W days username

例如,chage -W 3 user6将设置用户 “user6” 的密码在过期前 3 天开始发出警告。
3、注意事项
–使用chage命令需要谨慎,尤其是在设置密码过期时间和失效时间时,确保不会影响用户的正常工作。
–如果设置了密码过期时间,用户在密码过期后需要及时更改密码,否则可能无法登录系统。

四、查询登录主机的用户及其log信息的工具命令:

w

w命令用于显示当前已登录系统的用户信息及他们正在执行的进程等情况。常用用法:
1、基本用法
直接在终端输入w命令:
在这里插入图片描述
输出内容说明:
第一行显示系统当前时间、运行时间、登录用户数和系统平均负载。
后续行显示每个已登录用户的信息,包括用户名(USER)、终端类型(TTY)、登录来源(FROM)、登录时间(LOGIN@)、空闲时间(IDLE)、已连接时间(JCPU)、进程占用的 CPU 时间(PCPU)以及正在执行的命令(WHAT)。
2、选项用法
-h:不显示标题信息。

w -h

-u:显示详细的用户信息,包括登录时间、空闲时间等,并以更易读的格式显示。

 w -u

-s:使用短格式显示信息,只显示用户名、终端类型、登录时间和正在执行的命令。

w -s

例如:
w -h将不显示第一行的标题信息,直接显示用户信息。
w -u会以更详细的格式显示用户信息,如空闲时间会显示为 “X 分 X 秒” 而不是类似 “1:42m” 这样的格式。
w -s以简洁的短格式显示用户信息,方便快速查看。

who

who命令用于显示当前已登录系统的用户信息。

users

users命令用于显示当前登录系统的所有用户名称。

Last

last命令用于显示系统中用户的最近登录记录及显示每个用户最后的登录时间。

Lastlog

lastlog命令用于显示系统中所有用户的最近一次登录时间。
1、基本用法
直接在终端输入lastlog命令:
在这里插入图片描述
输出内容说明:
每一行显示一个用户的信息,包括用户名(Username)、登录端口(Port)、登录来源(From)和最近一次登录时间(Latest)。
2、选项用法
-u username:显示指定用户的最近一次登录时间。

 lastlog -u user2

这将只显示用户 “user2” 的最近一次登录时间。
-t days:显示在指定天数内有登录记录的用户信息。

lastlog -t 7

显示最近 7 天内有登录记录的用户信息。
-b days:显示在指定天数之前的登录记录。

 lastlog -b 30

显示 30 天之前的登录记录。

五.ACL权限相关命令

ACL是Access Control List 的缩写,主要用于在提供传统的owner、group、others的read、write、execute权限之外进行细部权限设置。访问控制列表(ACL)提供了比传统的文件权限更精细的访问控制:
1、查看文件或目录的 ACL
使用getfacl命令:

 getfacl filename

例如,getfacl file.txt将显示文件 “file.txt” 的 ACL 信息。一般输出如下内容:
file: file.txt
owner: user1
group: group1
user::rw-
group::r–
other::r–
2、设置文件或目录的 ACL
使用setfacl命令:
为特定用户设置权限:

setfacl -m u:username:permissions filename

例如,setfacl -m u:user2:rw file.txt为用户 “user2” 设置对文件 “file.txt” 的读写权限。
为特定组设置权限:

  setfacl -m g:groupname:permissions filename

例如,setfacl -m g:group2:r file.txt为组 “group2” 设置对文件 “file.txt” 的读权限。
设置默认 ACL(对新创建的文件和目录生效):

setfacl -m d:u:username:permissions directoryname
 setfacl -m d:g:groupname:permissions directoryname

例如,setfacl -m d:u:user3:rw /home/directory设置在目录 “/home/directory” 下新创建的文件和目录对用户 “user3” 具有读写权限。
3、删除文件或目录的 ACL
删除特定用户的 ACL:

 setfacl -x u:username filename

例如,setfacl -x u:user2 file.txt删除用户 “user2” 对文件 “file.txt” 的 ACL。
删除特定组的 ACL:

setfacl -x g:groupname filename

例如,setfacl -x g:group2 file.txt删除组 “group2” 对文件 “file.txt” 的 ACL。
删除所有 ACL:

 setfacl -b filename

例如,setfacl -b file.txt删除文件 “file.txt” 的所有 ACL,恢复到传统的文件权限模式。
4、注意事项
–不是所有的文件系统都支持 ACL。常见的支持 ACL 的文件系统有 ext2、ext3、ext4、XFS 等。
–在设置 ACL 时,要确保权限的设置是合理的,以避免安全风险。
–如果系统中有大量的文件和目录需要设置 ACL,可能需要使用脚本或自动化工具来提高效率。

六.用户身份切换相关命令

su/su -

1、基本用法
切换到其他用户:

 su - username

例如,su - user2将切换到用户 “user2”。加上 “-” 选项会同时切换用户的环境变量,使其环境与目标用户登录时一致。如果不加 “-”,则部分环境变量可能会保留当前用户的设置。
2、常用选项
-c command:在切换用户后执行一条命令,然后恢复到原来的用户。

su - username -c "command"

例如,su - user2 -c "ls /home/user2"以用户 “user2” 的身份执行 “ls /home/user2” 命令,然后恢复到原来的用户。
-l(等同于 “-”):完全切换到目标用户的环境,包括环境变量、工作目录等。
3、注意事项
–切换到其他用户时,需要输入目标用户的密码(如果目标用户有密码设置且当前用户没有足够的权限直接切换)。
–以 root 用户身份切换到其他用户通常不需要密码,但从普通用户切换到 root 用户一般需要输入 root 用户的密码。
–使用su命令切换用户时要谨慎,确保你有足够的权限进行操作,并且在切换到高权限用户(如 root)后,避免进行不必要的操作以降低安全风险。

sudo

sudo命令允许授权用户以其他用户的身份(通常是超级用户 root)执行命令。
1、基本用法
以 root 身份执行单个命令:

 sudo command

例如,sudo apt update以 root 权限执行软件包更新命令。
2、常用选项
-u user:以指定的用户身份执行命令。

sudo -u username command

例如,sudo -u user2 ls /home/user2以用户 “user2” 的身份执行列出 “/home/user2” 目录内容的命令。
-k:清除缓存的密码(下次使用 sudo 时需要重新输入密码)。

 sudo -k

-v:验证当前用户的 sudo 权限,并延长密码的有效时间。

sudo -v

3、注意事项
–使用sudo时,系统会提示输入当前用户的密码(除非当前用户在短时间内已经输入过密码且密码缓存仍然有效)。
–谨慎授予用户sudo权限,确保只有必要的用户可以以高权限执行命令,以降低系统的安全风险。
–如果sudo出现错误,检查配置文件是否正确以及当前用户是否具有相应的权限。

码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值