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 系统管理技能提供了帮助,不妨点个赞支持一下!当然也建议反这篇文章收藏起来,以备日后查阅。这样,你就能随时回顾和复习文章中的重要知识点,确保你的技术水平始终保持在最高水平。

相关推荐
wuk99815 分钟前
CentOS7环境搭建L2TP服务器
运维·服务器
恒创科技HK16 分钟前
香港1核2G云服务器当网站服务器够用不?
运维·服务器
汤姆yu27 分钟前
基于SpringBoot的动漫周边商场系统的设计与开发
java·spring boot·后端
IT 小阿姨(数据库)37 分钟前
PostgreSQL 之上的开源时序数据库 TimescaleDB 详解
运维·数据库·sql·postgresql·开源·centos·时序数据库
灰小猿42 分钟前
Spring前后端分离项目时间格式转换问题全局配置解决
java·前端·后端·spring·spring cloud
颜大哦1 小时前
linux安装mysql
linux·运维·mysql·adb
学习3人组1 小时前
Node.js 网站服务器开发
运维·服务器·node.js
来知晓1 小时前
Linux:WSL内存空间管理之清完内存C盘可用空间不增问题解决
linux·运维·服务器
大聪明-PLUS2 小时前
嵌入式 Linux 初学者指南 – 第 2 部分
linux·嵌入式·arm·smarc
RedJACK~2 小时前
Go Ebiten小游戏开发:扫雷
开发语言·后端·golang