前言
掌握 CentOS 7 用户管理命令,轻松管理系统用户!本文详细介绍了在 CentOS 7 系统中常用的用户管理命令,从创建和删除用户、修改用户属性,到密码管理和用户权限设置,一应俱全。无论你是 Linux 新手还是经验丰富的管理员,这篇文章都将为你提供清晰而实用的用户管理技巧以及示例,希望可以帮到你。
Linux权限控制的基本工作原理
Linux系统的权限管理基本原理是基于用户和用户组的访问控制。每个文件和目录都有一个所有者和一个所属用户组,以及对应的读、写、执行权限。那什么是所有者和所属组呢?又是如何控制权限呢?
- 所有者(Owner)是指创建该文件或目录的用户。所有者具有最高权限,可以对文件或目录进行读、写和执行操作,也可以修改权限和更改所有者。
- 所属用户组(Group)是指将文件或目录分配给某个特定用户组。所属用户组的成员具有与所有者相同的权限,但不能更改文件或目录的所有者。通常情况下,文件或目录的所属用户组与创建它的用户的默认用户组相同。
- Linux系统有三种权限,分别是可读、可写、可执行,用数字4、2、1分别表示可读、可写、可执行。文件和目录的权限可以分为三部分,分别是所有者权限、所属用户组权限和其他用户权限,其中每一部分又分别包括读、写、执行权限。例如,一个文件的权限为-rw-r--r--,其中第一位表示这是一个普通文件;后面的三组r、w、x分别表示所有者、所属用户组、其他用户的读、写、执行权限。具体来说,这个文件的所有者具有读和写的权限,所属用户组和其他用户则只有读的权限。请注意,数字0代表没有权限,数字1代表执行权限,数字2代表写权限,数字4代表读权限。这些数字权限可以通过相加来表示不同权限的组合,例如,读和写权限为6(4+2),读、写和执行权限为7(4+2+1)。
通过设置文件和目录的权限,Linux系统可以实现对不同用户的权限控制,从而保证文件和目录的安全性和机密性。同时,Linux系统还提供了一些特殊权限,如SUID、SGID和Sticky Bit,以更精细地控制用户和进程对文件和目录的访问。
用户管理相关命令
useradd
在 CentOS 7 系统中,useradd 命令用于创建新的用户账户。
语法:
useradd [选项] 用户名
可选参数:
- -c, --comment COMMENT:设置用户的注释/描述信息。
- -d, --home HOME_DIR:指定用户的主目录路径。
- -g, --gid GROUP:指定用户所属的初始用户组。
- -G, --groups GROUPS:指定用户附加的附属用户组。
- -s, --shell SHELL:指定用户登录后使用的默认Shell。
- -u, --uid UID:指定用户的用户ID。
使用示例:
- 创建一个名为 ayi 的用户,并将它添加到 root 用户组:
useradd -g root ayi
- 创建一个名为 ayi 的用户,指定其主目录为 /home/ayi,并指定它登录后使用的默认Shell为 /bin/bash:
useradd -d /home/ayi -s /bin/bash ayi
- 创建一个名为 myuser 的用户,并设置它的注释信息为 "My Test User":
useradd -c "My Test User" fanfu
请注意,在使用 useradd 命令创建用户时,需要以 root 权限或具有适当的权限进行操作。
passwd
passwd 命令用于更改用户的密码。
语法:
passwd [选项] 用户名
可选参数:
- -n, --mindays MIN_DAYS:设置用户必须等待更改密码的最小天数。
- -x, --maxdays MAX_DAYS:设置密码有效期的最大天数。
- -w, --warndays WARN_DAYS:设置在密码过期之前发出警告的天数。
- -i, --inactive INACTIVE:设置账户非活动期间的天数,超出此期限后,账户将被禁用。
- -l, --lock:锁定指定用户的密码。
- -u, --unlock:解锁指定用户的密码。
使用示例:
- 更改当前用户的密码:
passwd
- 更改用户 fanfu 的密码:
passwd fanfu
- 将用户 fanfu 的密码锁定:
passwd -l fanfu
- 将用户 fanfu 的密码解锁:
passwd -u fanfu
- 设置用户 fanfu 的密码最小天数为 7 天:
passwd -n 7 fanfu
- 设置用户 fanfu 的密码最长有效期为 90 天:
passwd -x 90 fanfu
请注意,为了更好地保护用户账户的安全性,建议定期更改密码,并设置合适的密码策略。同时,需要确保只有授权用户才能更改密码。
userdel
userdel 命令用于删除用户账户。在 CentOS 7 中,可以使用以下语法、可选参数和使用示例:
语法:
userdel [选项] 用户名
可选参数:
- -r, --remove:删除用户账户及其相关文件。
- -f, --force:强制删除用户账户,即使用户当前登录或拥有进程。
使用示例:
- 删除一个名为 fanfu 的用户账户:
userdel fanfu
- 删除用户账户 fanfu 及其相关文件(主目录等):
userdel -r fanfu
- 强制删除一个当前已登录或拥有进程的用户账户 fanfu:
userdel -f fanfu
请注意,在删除用户账户时,需要以 root 权限或具有适当的权限进行操作。确保在删除用户账户之前,已经备份了相关的数据。
usermod
usermod 命令用于修改用户账户的属性。
语法:
usermod [选项] 用户名
可选参数:
- -c, --comment COMMENT:为用户添加注释/描述信息。
- -d, --home HOME_DIR:修改用户的主目录路径。
- -s, --shell SHELL:修改用户登录后使用的默认Shell。
- -g, --gid GROUP:修改用户所属的初始用户组。
- -a, --append:将用户附加到附属用户组列表中,而不是替换它们。
- -G, --groups GROUPS:设置用户的附属用户组列表。
- -l, --login NEW_LOGIN:修改用户的用户名。
- -L, --lock:锁定用户的密码。
- -U, --unlock:解锁用户的密码。
使用示例:
- 修改用户 fanfu 的主目录为 /home/fanfu001:
usermod -d /home/fanfu001 fanfu
- 将用户 fanfu 的默认Shell更改为 /bin/bash:
usermod -s /bin/bash fanfu
- 将用户 fanfu 添加到用户组 guest 中:
usermod -a -G guest fanfu
- 更改用户 fanfu 的用户名为 fanfu1024:
usermod -l fanfu1024 fanfu
- 锁定用户 fanfu 的密码:
usermod -L fanfu
请注意,在修改用户账户属性时,需要以 root 权限或具有适当的权限进行操作。确保在修改用户账户之前,已经备份了相关的数据。
su
su 命令用于切换用户身份。
语法:
su [选项] [用户名]
可选参数:
- -l, --login:以登录shell的方式切换到新用户。
- -c, --command COMMAND:执行完命令后返回原用户。
- -s, --shell SHELL:指定使用的shell。
使用示例:
- 使用 root 用户身份切换到另一个用户 fanfu:
su fanfu
- 使用 root 用户身份切换到另一个用户 fanfu,并使用其默认shell:
su - fanfu
- 使用 root 用户身份切换到另一个用户 fanfu,并以 /bin/bash 作为新shell:
su -s /bin/bash fanfu
- 普通用户 fanfu 切换到 root 用户身份,并执行命令 ls -l:
su -c 'ls -l' root
请注意,在切换用户身份时,需要输入目标用户的密码。同时,需要确保已经授权使用 su 命令的用户具有必要的权限。
cat /etc/passwd
在CentOS系统上,你可以使用以下命令来查询系统中的所有用户:
cat /etc/passwd
这个命令会显示系统中所有用户的信息,每个用户信息一行。每行的格式通常是这样的:
username:password:UID:GID:comment:home_directory:shell
具体解释如下:
- username: 用户名
- password: 密码字段,通常是 "x" 表示密码存储在 /etc/shadow 文件中
- UID: 用户ID
- GID: 组ID
- comment: 注释,一般是用户的全名或其他描述
- home_directory: 用户的主目录
- shell: 用户登录时使用的shell
如果你只想显示用户名,你可以使用以下命令:
awk -F':' '{print $1}' /etc/passwd
这会仅显示每行中的用户名部分。请注意,查询系统用户的命令可能需要以管理员权限执行,你可以使用 sudo 命令来获取足够的权限。
id
id 命令可以查看当前用户或指定用户的 UID(用户 ID)和 GID(组 ID)。它的语法如下:
id [选项] [用户名]
如果没有指定用户名,id 命令将显示当前用户的 UID 和 GID。常用的选项包括:
- -G, --groups:显示用户所属的所有组。
- -g, --group:显示用户所属的主要组。
- -u, --user:显示用户的 UID。
下面是 id 命令的一些常见使用方法示例:
- 显示当前用户的 UID 和 GID:
id
- 显示用户 fanfu 的 UID 和 GID:
id fanfu
- 显示用户 fanfu 所属的所有组:
id -G fanfu
- 显示用户 fanfu 所属的主要组:
id -g fanfu
who
who 命令用于显示当前登录系统的用户信息。它可以列出登录到系统的用户,并提供有关每个用户的详细信息,如用户名、终端设备、登录时间和来源 IP 地址等。
语法:
who [选项] [文件]
可选参数:
- -a, --all:显示所有用户的登录信息,包括系统进程。
- -b, --boot:显示系统启动时间。
- -d, --dead:显示已注销的用户信息。
- -H, --heading:在输出中显示表头。
- -l, --login:显示用户名和登录时间。
- -p, --process:显示与终端相关的进程状态。
- -q, --count:只显示当前登录用户数量。
- -s, --short:使用短格式输出。
- -t, --time:显示最后一次活动时间。
- -u, --users:显示用户名。
使用示例:
- 显示当前登录系统的用户信息:
who
- 显示系统启动时间:
who -b
- 显示当前登录用户的数量:
who -q
- 显示最后一次活动时间:
who -t
- 显示所有用户的登录信息:
who -a
请注意,who 命令通常不需要指定文件参数,它会默认使用 /var/run/utmp 文件来获取用户登录信息。
chown
在 CentOS 7 中,chown 命令用于修改文件或目录的所有者。以下是 chown 命令的使用方式和示例:
使用方式:
chown [选项] 新所有者 文件/目录
常用选项:
- -R:递归地修改文件夹及其子文件夹的所有者。
- -v:显示每个修改后的文件/目录的所有者。
新所有者:
可以使用用户名或用户 ID(UID)来指定新的所有者。
示例:
- 将文件 file.txt 的所有者修改为 fanfu:
chown fanfu file.txt
- 将目录 dir 及其子目录的所有者修改为 fanfu,同时显示修改过程:
chown -Rv fanfu dir
- 将文件 file.txt 的所有者和所属组修改为 fanfu 和 yzxa:
chown fanfu:yzxa file.txt
chmod和chown的区别
chmod 和 chown 是两个在 CentOS(以及其他 Linux 发行版)中常用的命令,用于修改文件或目录的权限和所有者。它们的区别如下:
chmod 命令:
- 作用:chmod 命令用于修改文件或目录的权限。
- 使用方式:chmod 命令后面跟着权限模式和要修改权限的文件或目录路径。
- 权限模式:可以使用数字(例如 755)或符号(例如 u+rwx)来指定权限模式。
- 数字模式:数字模式使用三位数,每一位表示一个权限组(所有者、所属组、其他用户),其中每一位的值为 4(读权限)、2(写权限)和 1(执行权限)的组合。例如,755 表示所有者具有读、写和执行权限,所属组和其他用户具有读和执行权限。
- 符号模式:符号模式使用类似于 u+rwx、g+rw、o-x 的格式来指定权限。u 代表所有者,g 代表所属组,o 代表其他用户,+ 表示添加权限,- 表示移除权限,r 表示读权限,w 表示写权限,x 表示执行权限。
chown 命令:
- 作用:chown 命令用于修改文件或目录的所有者。
- 使用方式:chown 命令后面跟着新的所有者和要修改所有者的文件或目录路径。
- 所有者:可以使用用户名或用户 ID(UID)来指定新的所有者。
综上所述,chmod 用于修改文件或目录的权限,而 chown 用于修改文件或目录的所有者。它们是不同的命令,用途和参数也不同。在实际应用中,我们可以根据需要选择使用 chmod 或 chown 来对文件或目录进行相应的权限和所有者的修改操作。
写在最后
喜欢我为你精心准备的 CentOS 7 用户管理命令文章吗?如果你觉得这篇指南对你的 Linux 系统管理技能提供了帮助,不妨点个赞支持一下!当然也建议反这篇文章收藏起来,以备日后查阅。这样,你就能随时回顾和复习文章中的重要知识点,确保你的技术水平始终保持在最高水平。