CentOS 7 权限管理实战指南:用户管理相关命令详解

前言

掌握 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 命令用于创建新的用户账户。

语法:

bash 复制代码
useradd [选项] 用户名

可选参数:

  • -c, --comment COMMENT:设置用户的注释/描述信息。
  • -d, --home HOME_DIR:指定用户的主目录路径。
  • -g, --gid GROUP:指定用户所属的初始用户组。
  • -G, --groups GROUPS:指定用户附加的附属用户组。
  • -s, --shell SHELL:指定用户登录后使用的默认Shell。
  • -u, --uid UID:指定用户的用户ID。

使用示例:

  • 创建一个名为 ayi 的用户,并将它添加到 root 用户组:
bash 复制代码
useradd -g root ayi
  • 创建一个名为 ayi 的用户,指定其主目录为 /home/ayi,并指定它登录后使用的默认Shell为 /bin/bash:
bash 复制代码
useradd -d /home/ayi -s /bin/bash ayi
  • 创建一个名为 myuser 的用户,并设置它的注释信息为 "My Test User":
bash 复制代码
useradd -c "My Test User" fanfu

请注意,在使用 useradd 命令创建用户时,需要以 root 权限或具有适当的权限进行操作。

passwd

passwd 命令用于更改用户的密码。

语法:

bash 复制代码
passwd [选项] 用户名

可选参数:

  • -n, --mindays MIN_DAYS:设置用户必须等待更改密码的最小天数。
  • -x, --maxdays MAX_DAYS:设置密码有效期的最大天数。
  • -w, --warndays WARN_DAYS:设置在密码过期之前发出警告的天数。
  • -i, --inactive INACTIVE:设置账户非活动期间的天数,超出此期限后,账户将被禁用。
  • -l, --lock:锁定指定用户的密码。
  • -u, --unlock:解锁指定用户的密码。

使用示例:

  • 更改当前用户的密码:
bash 复制代码
passwd
  • 更改用户 fanfu 的密码:
bash 复制代码
passwd fanfu
  • 将用户 fanfu 的密码锁定:
bash 复制代码
passwd -l fanfu
  • 将用户 fanfu 的密码解锁:
bash 复制代码
passwd -u fanfu
  • 设置用户 fanfu 的密码最小天数为 7 天:
bash 复制代码
passwd -n 7 fanfu
  • 设置用户 fanfu 的密码最长有效期为 90 天:
bash 复制代码
passwd -x 90 fanfu

请注意,为了更好地保护用户账户的安全性,建议定期更改密码,并设置合适的密码策略。同时,需要确保只有授权用户才能更改密码。

userdel

userdel 命令用于删除用户账户。在 CentOS 7 中,可以使用以下语法、可选参数和使用示例:

语法:

bash 复制代码
userdel [选项] 用户名

可选参数:

  • -r, --remove:删除用户账户及其相关文件。
  • -f, --force:强制删除用户账户,即使用户当前登录或拥有进程。

使用示例:

  • 删除一个名为 fanfu 的用户账户:
bash 复制代码
userdel fanfu
  • 删除用户账户 fanfu 及其相关文件(主目录等):
bash 复制代码
userdel -r fanfu
  • 强制删除一个当前已登录或拥有进程的用户账户 fanfu:
bash 复制代码
userdel -f fanfu

请注意,在删除用户账户时,需要以 root 权限或具有适当的权限进行操作。确保在删除用户账户之前,已经备份了相关的数据。

usermod

usermod 命令用于修改用户账户的属性。

语法:

bash 复制代码
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:
bash 复制代码
usermod -d /home/fanfu001 fanfu
  • 将用户 fanfu 的默认Shell更改为 /bin/bash:
bash 复制代码
usermod -s /bin/bash fanfu
  • 将用户 fanfu 添加到用户组 guest 中:
bash 复制代码
usermod -a -G guest fanfu
  • 更改用户 fanfu 的用户名为 fanfu1024:
bash 复制代码
usermod -l fanfu1024 fanfu
  • 锁定用户 fanfu 的密码:
bash 复制代码
usermod -L fanfu

请注意,在修改用户账户属性时,需要以 root 权限或具有适当的权限进行操作。确保在修改用户账户之前,已经备份了相关的数据。

su

su 命令用于切换用户身份。

语法:

bash 复制代码
su [选项] [用户名]

可选参数:

  • -l, --login:以登录shell的方式切换到新用户。
  • -c, --command COMMAND:执行完命令后返回原用户。
  • -s, --shell SHELL:指定使用的shell。

使用示例:

  • 使用 root 用户身份切换到另一个用户 fanfu:
bash 复制代码
su fanfu
  • 使用 root 用户身份切换到另一个用户 fanfu,并使用其默认shell:
bash 复制代码
su - fanfu
  • 使用 root 用户身份切换到另一个用户 fanfu,并以 /bin/bash 作为新shell:
bash 复制代码
su -s /bin/bash fanfu
  • 普通用户 fanfu 切换到 root 用户身份,并执行命令 ls -l:
bash 复制代码
su -c 'ls -l' root

请注意,在切换用户身份时,需要输入目标用户的密码。同时,需要确保已经授权使用 su 命令的用户具有必要的权限。

cat /etc/passwd

在CentOS系统上,你可以使用以下命令来查询系统中的所有用户:

bash 复制代码
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

如果你只想显示用户名,你可以使用以下命令:

bash 复制代码
awk -F':' '{print $1}' /etc/passwd

这会仅显示每行中的用户名部分。请注意,查询系统用户的命令可能需要以管理员权限执行,你可以使用 sudo 命令来获取足够的权限。

id

id 命令可以查看当前用户或指定用户的 UID(用户 ID)和 GID(组 ID)。它的语法如下:

bash 复制代码
id [选项] [用户名]

如果没有指定用户名,id 命令将显示当前用户的 UID 和 GID。常用的选项包括:

  • -G, --groups:显示用户所属的所有组。
  • -g, --group:显示用户所属的主要组。
  • -u, --user:显示用户的 UID。

下面是 id 命令的一些常见使用方法示例:

  • 显示当前用户的 UID 和 GID:
bash 复制代码
id
  • 显示用户 fanfu 的 UID 和 GID:
bash 复制代码
id fanfu
  • 显示用户 fanfu 所属的所有组:
bash 复制代码
id -G fanfu
  • 显示用户 fanfu 所属的主要组:
bash 复制代码
id -g fanfu

who

who 命令用于显示当前登录系统的用户信息。它可以列出登录到系统的用户,并提供有关每个用户的详细信息,如用户名、终端设备、登录时间和来源 IP 地址等。

语法:

bash 复制代码
who [选项] [文件]

可选参数:

  • -a, --all:显示所有用户的登录信息,包括系统进程。
  • -b, --boot:显示系统启动时间。
  • -d, --dead:显示已注销的用户信息。
  • -H, --heading:在输出中显示表头。
  • -l, --login:显示用户名和登录时间。
  • -p, --process:显示与终端相关的进程状态。
  • -q, --count:只显示当前登录用户数量。
  • -s, --short:使用短格式输出。
  • -t, --time:显示最后一次活动时间。
  • -u, --users:显示用户名。

使用示例:

  • 显示当前登录系统的用户信息:
bash 复制代码
who
  • 显示系统启动时间:
bash 复制代码
who -b
  • 显示当前登录用户的数量:
bash 复制代码
who -q
  • 显示最后一次活动时间:
bash 复制代码
who -t
  • 显示所有用户的登录信息:
bash 复制代码
who -a

请注意,who 命令通常不需要指定文件参数,它会默认使用 /var/run/utmp 文件来获取用户登录信息。

chown

在 CentOS 7 中,chown 命令用于修改文件或目录的所有者。以下是 chown 命令的使用方式和示例:

使用方式:

bash 复制代码
chown [选项] 新所有者 文件/目录

常用选项:

  • -R:递归地修改文件夹及其子文件夹的所有者。
  • -v:显示每个修改后的文件/目录的所有者。

新所有者:

可以使用用户名或用户 ID(UID)来指定新的所有者。

示例:

  • 将文件 file.txt 的所有者修改为 fanfu:
bash 复制代码
chown fanfu file.txt
  • 将目录 dir 及其子目录的所有者修改为 fanfu,同时显示修改过程:
bash 复制代码
chown -Rv fanfu dir
  • 将文件 file.txt 的所有者和所属组修改为 fanfu 和 yzxa:
bash 复制代码
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 系统管理技能提供了帮助,不妨点个赞支持一下!当然也建议反这篇文章收藏起来,以备日后查阅。这样,你就能随时回顾和复习文章中的重要知识点,确保你的技术水平始终保持在最高水平。

相关推荐
我是唐青枫1 分钟前
Linux firewalld 命令详解
linux·运维·网络
贺椿椿10 分钟前
ensp静态路由实验
linux·网络·智能路由器
小鸡食米19 分钟前
RHCSA
linux·运维·服务器
hummhumm19 分钟前
第 36 章 - Go语言 服务网格
java·运维·前端·后端·python·golang·java-ee
凡人的AI工具箱22 分钟前
40分钟学 Go 语言高并发:Pipeline模式(一)
开发语言·后端·缓存·架构·golang
橘子真甜~33 分钟前
Linux操作系统2-进程控制3(进程替换,exec相关函数和系统调用)
linux·运维·服务器·进程控制·进程等待
xiaoerbuyu12331 小时前
ubuntu 连不上网 桌面 右上角没有网络图标 Ubuntu复制后虚拟网络失效问题
linux·运维·ubuntu
南鸳6101 小时前
Scala:根据身份证号码,输出这个人的籍贯
开发语言·后端·scala
胖胖不胖、1 小时前
解决:Openstack创建实例进入控制台报错Something went wrong, connection is closed
linux·服务器·openstack
小扳1 小时前
微服务篇-深入了解使用 RestTemplate 远程调用、Nacos 注册中心基本原理与使用、OpenFeign 的基本使用
java·运维·分布式·后端·spring·微服务·架构