[ Content contribution] Linux 入门教程(六):文件权限、链接和输入输出重定向
Tofloor
poster avatar
玄圭SwenGway
deepin
2025-01-03 12:48
Author

Linux 入门教程(六):文件权限、链接和输入输出重定向

在 Linux 系统中,文件和目录的权限管理是一个非常重要的概念。它决定了谁可以读取、写入和执行文件。今天,我们将深入探讨文件和文件夹的权限管理、常用权限命令(如 chownchmodchgrp)的使用方法,八进制权限表示方式,如何查看文件类型,以及如何使用 ln 创建链接。最后,我们还会介绍输入输出重定向和管道,帮助你更高效地操作 Linux 系统。


文件和文件夹的权限

在 Linux 中,文件和目录的权限由三部分组成:所有者所属组其他用户。每个部分都有三种权限类型:(r)、(w)和执行(x)。

  1. 读权限(r):允许查看文件内容或列出目录中的文件。
  2. 写权限(w):允许修改文件内容或在目录中创建、删除文件。
  3. 执行权限(x):允许执行文件,或者进入目录并执行其中的操作。

文件权限总共由 9 个字符表示,分为三组:

rwxr-xr--
  • 第1-3个字符表示文件所有者的权限。
  • 第4-6个字符表示文件所属组的权限。
  • 第7-9个字符表示其他用户的权限。

例如,rwxr-xr-- 表示:

  • 所有者有读、写、执行权限;
  • 所属组有读和执行权限;
  • 其他用户只有读权限。

如何设置和管理文件权限

chown:更改文件或目录的所有者

chown(change owner)用于更改文件或目录的所有者(user)和所属组(group)。

基本用法

chown 用户名:组名 文件/目录
  • 更改文件所有者:

    chown user1 file.txt
    

    这将把 file.txt 的所有者改为 user1,而组不变。

  • 更改文件的所属组:

    chown :group1 file.txt
    

    这将把 file.txt 的所属组改为 group1,而所有者不变。

  • 更改文件的所有者和所属组:

    chown user1:group1 file.txt
    

    这将同时更改 file.txt 的所有者和所属组。

chgrp:更改文件或目录的所属组

chgrp(change group)用于更改文件或目录的所属组。

基本用法

chgrp 组名 文件/目录

例子:将 file.txt 的所属组更改为 group1

chgrp group1 file.txt
chmod:更改文件或目录的权限

chmod(change mode)用于修改文件或目录的权限。

基本用法

chmod 权限 文件/目录

权限的表示方法

  • 符号表示法(r、w、x):
    • r 代表读权限(4)
    • w 代表写权限(2)
    • x 代表执行权限(1)
  • 八进制表示法:权限由三个数字表示,每个数字代表文件所有者、所属组和其他用户的权限。
符号表示法

你可以用符号组合来修改文件的权限,例如:

  • chmod u+x file.txt:为所有者(user)增加执行权限。
  • chmod g-w file.txt:移除所属组(group)的写权限。
  • chmod o+r file.txt:为其他用户(others)添加读权限。
  • chmod u+rwx,g+r,o+r file.txt:为所有者增加读写执行权限,为所属组和其他用户增加读权限。
八进制表示法

八进制表示法是将权限转换为数字的方式。每个权限对应一个数字:

  • r = 4
  • w = 2
  • x = 1

例子

  • chmod 755 file.txt:表示所有者(u)有读、写、执行权限(4+2+1=7),组用户(g)和其他用户(o)有读和执行权限(4+1=5)。
  • chmod 644 file.txt:所有者(u)有读写权限(4+2=6),组用户和其他用户(g,o)只有读权限(4)。

八进制权限常用于脚本和系统配置中,它更加简洁和易于理解。


查看文件和文件夹的属性

你可以使用 ls -l 命令查看文件和文件夹的详细属性,包括权限、所有者、所属组、文件大小等。

基本用法

ls -l 文件名

输出示例:

-rwxr-xr-- 1 user1 group1 1024 Jan  1 12:34 file.txt

解释:

  • -rwxr-xr--:文件权限
  • 1:硬链接数
  • user1:文件所有者
  • group1:文件所属组
  • 1024:文件大小(字节)
  • Jan 1 12:34:文件最后修改时间
  • file.txt:文件名

查看文件类型

要查看文件类型,你可以使用 file 命令,它会告诉你文件是文本文件、可执行文件还是其他类型。

基本用法

file 文件名

例如:

file file.txt

输出:

file.txt: ASCII text

这说明 file.txt 是一个普通的 ASCII 文本文件。


建立链接:ln 命令

在 Linux 中,链接是指向文件或目录的指针。Linux 支持两种类型的链接:硬链接(hard link)和符号链接(symbolic link)。

硬链接(Hard Link)

硬链接是指向文件的实际数据块的指针。多个硬链接可以指向同一个数据块,因此它们是文件的不同“名字”。

创建硬链接

ln 原文件 链接文件

例子:

ln file.txt file_link.txt

这会创建一个硬链接 file_link.txt,指向与 file.txt 相同的数据。

注意

  • 删除原文件不会影响硬链接,因为硬链接与原文件指向相同的磁盘数据块。
  • 硬链接不能跨文件系统创建。
符号链接(Symbolic Link)(大致相当于Windows的快捷方式)

符号链接(或软链接)是一个特殊的文件,包含指向目标文件的路径。符号链接可以跨文件系统,也可以指向目录。

创建符号链接

ln -s 原文件 链接文件

例子:

ln -s file.txt symlink.txt

这会创建一个符号链接 symlink.txt,指向 file.txt

删除符号链接

rm symlink.txt

删除符号链接不会影响原文件。


输入输出重定向和管道 |

Linux 系统中的输入输出操作非常灵活,可以通过重定向和管道将命令的输入输出进行控制。

输入重定向

将文件作为命令的输入:

command < 文件

例子:

cat < file.txt

这会将 file.txt 作为输入传递给 cat 命令,效果与 cat file.txt 相同。

输出重定向

将命令的输出保存到文件中:

command > 文件

例子:

echo "Hello, Linux" > output.txt

这会将 Hello, Linux 写入 output.txt 文件中。如果文件已存在,会被覆盖。

如果你想追加输出到文件,可以使用 >>

echo "More data" >> output.txt
管道 |

管道 | 将一个命令的输出直接作为下一个命令的输入。它可以将多个命令连接在一起,完成更复杂的操作。

基本用法

command1 | command2

例子:将 ls 的输出传递给 grep 进行过滤:

ls -l | grep ".txt"

这会列出当前目录下所有 .txt 文件的信息。


实战练习

  1. 查看文件权限: 查看 file.txt 的详细信息:
    ls -l file.txt
    
  2. 修改文件权限: 将 `file

.txt 的所有者和所属组改为user1 group1`,并给所有者增加执行权限:

chown user1:group1 file.txt
chmod u+x file.txt
  1. 创建符号链接: 创建一个指向 file.txt 的符号链接:
    ln -s file.txt file_symlink.txt
    
  2. 使用管道过滤输出: 查看当前目录下的文件列表,过滤出所有 .txt 文件:
    ls -l | grep ".txt"
    

通过这些命令的操作,你就能熟练地管理文件权限和使用文件链接,还能利用管道将命令组合成更强大的功能!下一步,我们将继续深入学习 Linux 系统中的用户管理和高级操作。

Reply Favorite View the author
All Replies
玄圭SwenGway
deepin
2025-01-03 13:07
#1

码字累死我了,抢个沙发先

Reply View the author
nirvana25
deepin
2025-01-03 13:18
#2

like

Reply View the author
宁静致远
deepin
2025-01-03 15:54
#3

加油

Reply View the author
New Thread

Popular Events

More
国际排名
WHLUG