CentOS 7中常用的命令详解
在 CentOS 7 的日常管理中,有几个命令是管理员和开发者经常使用的。这些命令涵盖了改变文件或目录的所有者、修改权限和创建符号链接等常见任务。下面我们将详细讨论这些命令的用法和注意事项。
改所有者
在CentOS系统中,chown -R命令用于递归地改变文件和目录的所有者。这个命令非常有用,特别是当你需要修改一个目录及其包含的所有文件和子目录的所有权时。下面是对该命令的简单说明:
命令语法:
|
|
-R 或 --recursive
:此选项表示递归处理,即会将指定目录下的所有文件和子目录也一并更改所有权。用户名
:指定新的文件所有者的用户名。组名
:指定新的文件所属组的名称。这个部分是可选的,如果不提供,则只改变所有者不改变所属组。- 目录或文件路径:需要更改所有权的目录或文件的完整路径。
示例
- 更改单个目录及其内容的所有权:
假设你要将 /var/www/html 目录及其所有内容的所有权更改为用户 www-data 和组 www-data,可以执行:
|
|
- 仅更改目录的所有权而不包括子内容:
如果不使用 -R 选项,那么只有指定的目录本身的所有权会被改变,而不是其下的内容。例如:
请注意,使用 chown 命令通常需要 root 权限,因此命令前面通常会加上 sudo。
注意事项
确保你了解操作的后果,因为错误地更改文件或目录的所有权可能导致系统服务或应用程序无法正常运行。
在执行此类操作之前,最好先备份相关数据以防万一。
更改权限
在CentOS系统中,chmod 755命令用于改变文件或目录的权限设置。权限设置决定了文件或目录对于所有者、所属组成员以及其他人可执行的操作类型(读、写、执行)。数字模式(如755)是一种快速设置权限的方式。下面是关于chmod 755的具体说明:
权限数字含义
- 7 对应权限集合 rwx,即读(read, 4)、写(write, 2)和执行(execute, 1)
- 权限的总和(4+2+1=7),这意味着完全权限。
- 5 对应权限集合 r-x,即读(4)和执行(1)权限,没有写权限(2)。
因此,chmod 755 设置的权限如下: - 所有者:具有读、写、执行权限(7)。
- 所属组:具有读和执行权限(5)。
- 其他人:同样具有读和执行权限(5)。
应用场景
- 脚本或程序文件:通常给予所有者全部权限以允许执行和修改,而给组和其他用户读和执行权限,这样他们可以运行但不能修改文件。
- 目录:给予所有者全部权限,以便管理目录内容;组和其他用户可以浏览目录(读权限)和进入目录(执行权限),但不能修改目录内容。
示例
|
|
. 例如,要给 /var/www/html/index.html 文件设置上述权限,可以执行:
|
|
. 如果是要设置一个目录的权限,比如 /var/www/html,同样的命令适用:
|
|
注意事项
使用 chmod 命令时,特别是使用提升权限(如给予执行权限给所有人)时,应确保不会无意中暴露敏感信息或提供不必要的执行权限,以免增加安全风险。
类似于 chown,使用 chmod 通常也需要 root 权限,因此通常会在命令前加上 sudo。
软链接
在CentOS系统中,ln -s 命令用于创建符号链接(也称为软链接)。符号链接类似于Windows系统中的快捷方式,它是一个特殊的文件,指向另一个文件或目录。当访问符号链接时,系统会将其解析为目标文件或目录的实际位置。这对于保持文件系统的组织性、节省磁盘空间或创建别名非常有用。
|
|
- -s:此选项告诉 ln 命令创建一个符号链接而非硬链接。
- 源文件或目录:你希望创建链接指向的原始文件或目录的路径。
- 目标链接名:你想要创建的符号链接的名称(包括路径,如果链接不在当前目录)。
示例
- 创建一个指向文本文件的符号链接:
假设有一个文件 /home/user/documents/original.txt,你想在桌面创建一个指向它的链接,可以执行:
|
|
- 创建一个指向目录的符号链接:
如果你想为 /var/log 目录创建一个链接到 /home/user/logs 的符号链接,可以执行:
|
|
注意事项
- 符号链接可以跨文件系统创建,而硬链接则不能。
- 删除原文件或目录会导致符号链接失效,因为它只是一个指向原位置的“指针”。
- 符号链接可以链接到不存在的文件或目录,这种情况下,链接是“断裂”的,直到目标重新出现。
- 使用 ls -l 命令可以查看文件是否为符号链接,符号链接会以 l 开头,并显示链接的目标路径。
清空防火墙规则
在CentOS系统中,iptables -F 命令用于清空指定链(默认是所有链)中的所有规则。iptables 是Linux系统中用于配置和管理网络防火墙规则的命令行工具。这个命令对于清除防火墙规则、恢复默认设置或解决因防火墙规则导致的网络问题非常有用。以下是关于该命令的详细说明:
命令语法
|
|
- -t 表:指定要操作的表,默认是 filter 表,其他可能的表包括 nat(网络地址转换)和 mangle(数据包修改)等。
- -F:清空(Flush)指定链中的所有规则。如果没有指定链,则清空所有链(INPUT、OUTPUT、FORWARD 等)的规则
示例
- 清空默认表(filter)的所有链:
|
|
- 清空 nat 表中的 PREROUTING 链:
|
|
注意事项
- 执行 iptables -F 将会删除现有的所有防火墙规则,这可能会影响系统的安全性或网络连接。在执行此操作之前,确保你了解其影响,并已经做好相应的备份或有恢复策略。
- 清空规则后,如果没有其他规则立即生效,可能会导致预期之外的网络访问情况,比如原本被阻止的流量可能变为允许。
- 为了持久化 iptables 规则,通常需要使用 iptables-save 命令将规则保存到配置文件,并通过 iptables-restore 在系统启动时应用这些规则,或者使用如 firewalld 这样的服务来管理防火墙规则,尤其是在现代的Linux发行版中。
- 使用 iptables -F 命令应当谨慎,特别是在生产环境中,以避免意外中断服务或暴露系统于安全风险之中。
软件更新
在CentOS系统中,rpm -Uvh 命令用于升级软件包,并在安装过程中显示详细的信息(verbose)及处理进度条(hash)。rpm 是 Red Hat Package Manager 的缩写,是 CentOS 和其他基于 RPM 的 Linux 发行版中用于安装、升级、查询和删除软件包的主要工具。以下是该命令的详细说明:
命令语法
|
|
- -U 或 –upgrade:此选项指示 rpm 命令升级软件包。如果软件包已安装,则更新到新版本;如果未安装,则进行安装。
- -v 或 –verbose:使输出更详细,显示安装过程中的更多信息。
- -h 或 –hash:在升级过程中显示进度条,以 # 字符构成,帮助用户直观地看到安装进度。
示例
假设你有一个名为 example-package-1.2.3-4.el7.x86_64.rpm 的软件包,想要升级或安装它,可以执行:
|
|
注意事项
- 使用 rpm -Uvh 前,确保你拥有足够的权限,通常需要使用 sudo 或以 root 身份执行该命令。
升级软件包前,检查软件包的依赖关系是非常重要的。有时候,升级一个包可能会因为依赖问题而失败。在基于RPM的系统中,可以使用 yum 或 dnf(较新的系统)来自动处理依赖关系。 - 如果软件包来自不可信的源,务必验证其完整性,可以通过校验软件包的 GPG 签名或 MD5/SHA 散列值来完成。
在生产环境中执行升级操作前,建议先在测试环境中进行测试,以避免可能的服务中断或兼容性问题。
总的来说,rpm -Uvh 是一个强大的命令,用于管理和维护系统上的软件包,但使用时应细心操作,确保系统的稳定性和安全性。
- 原文作者:Ethan
- 原文链接:https://zhangxingong.fun/post/linux-diary-cmd/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。