Linux系列 目录和文件管理

Posted 网络豆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系列 目录和文件管理相关的知识,希望对你有一定的参考价值。

  • 作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 

  •  座右铭:低头赶路,敬事如仪

  • 个人主页:网络豆的主页​​​​​​

目录

 

前言

简介

本章重点

一.检查文本内容

​编辑

1.cat命令——显示并连接(Concatenate)文件的内容

2.more和less命令——分页查看文件内容

3.head和tail命令——查看文件开头或末尾的部分内容

 二.统计和检索文件内容

1.wc命令—统计文件内容中的单词数量(Word Count)行数等信息

2.grep命令——检索、过滤文件内容


前言

本章将会讲解Linux中的目录和文件管理


简介

在之前的文章中,学习了Linux命令的格式,以及目录和文件管理的基本命令操作,本章将进一步学习管理目录和文件的高级操作,主要包括查看和检索文件内容,备份和恢复文档,以及使用vi文本编辑器创建或修改文本文件。


本章重点

  1. 文件内容的查看及检索
  2. 压缩归档文件的制作与释放

一.检查文本内容

对于一个文本格式的配置文件,可以利用不同的查看方式来获知文件内容,如直接显示整个文件内容,分页查看文件内容,或者只查看文件开头或末尾的部分内容,在Linux操作系统中,分别由不同的命令来实现这些操作。

1.cat命令——显示并连接(Concatenate)文件的内容

cat命令本来用于连接(Concatenate)多个文件的内容,但在实际使用中更多地用于查看文件内容.cat命令是应用最为广泛的文件内容查看命令,使用该命令时,只需要把要查看的文件路径作为参数即可 。

例如:以下操作就可以查看/etc/sysconfig/network-scripts/ifcfg-ens33 配置文件中的内容,并了解第一块以太网卡的配置信息。

[root@localhost -]# cat /etc/sysconfig/network-scripts/ifcfg-ana33

如果需要同时查看多个文件的内容,可以添加多个文件路径作为查看对象。例如,以下操作将依次显示/eto/redhat-release,/proc/version文件的内容,前者记录了 CnetOS系统的发行版本信息。后者记录了系统内核及开发环境,时间等信息。

[root@localhost -]# cat /etc/redhat-release /proc/veraion


2.more和less命令——分页查看文件内容

使用cat 命令可以非常简单地直接显示整个文件的内容,但是当文件中的内容较多时,很可能只能看到最后一部分信息,文件前面的大部分内容都来不及看到。而more和less命令通过采用全屏的方式分页显示文件,便于我们从头到尾仔细地阅读文件内容。

 more 命令是较早出现的分页显示命令,表示文件内容还有更多(more)的意思,less命令是较晚出现的分页显示命令,提供了比早期more命令更多的一些扩展功能。两个命令的用法基本相同。

使用more命令查看超过一屏的文件内容时,将进行分屏显示,并在左下角显示当前内容在整个文件中的百分比。在阅读界面中,可以按Enter键向下逐行滚动查看,按Space键可以向下翻一屏按b键向上翻一屏,按q键退出并返回原来的命令环境。

[root@localhoat -]# more /etc/httpd/conf/httpd.conf

more命令除了可以分屏查看文件内容以外,还可以结合管道符号|分屏查看执行命令时的输出息这在命令输出内容较多的情况下特别有用。例如,以下操作可以分页查看/etc/目录下扩展名为“conf”的配置文件。

[root@localhost -]# ls -lh /atc/*.conf | more

 less命令使用方法与more命令基本类似,但是比more更好的是,less命令结合管道符号“|”分屏查看执行命令时输出的信息时,既可以向下翻页,也可以向上翻页,而more命令只能向下翻页,不能向上翻页。


3.head和tail命令——查看文件开头或末尾的部分内容

head和tail是一对作用相反的命令,前者用于显示文件开头的一部分内容,后者用于显示文件末尾的一部分内容。可以使用“-n”选项(n为具体的行数)指定需要显示多少行的内容,若不指定行数默认只显示十行。

执行“head一4/etc/passwd命令,可以查看用户账号文件/etc/passwd开头第一行至第四行的部分内容。

[root@localhost ~]# head -4 /etc/passwd

 tail命令则正好相反,用于查看文件末尾的内容,tail命令通常用于查看系统日志(因为较新的日志记录总是添加到文件最后),以便观察网络访问,服务调试等相关信息,配合“-f”选项使用时,还可以跟踪文件尾部内容的动态更新,便于实时监控文件内容的变化。

例如,以下操作可以查看系统公共日志文件/var/log/messages的最后十行内容,并在末尾跟踪显示该文件中新记录的内容

(按Cul+C组合键终止)。

[root@localhost -]# tail -f /var/log/messages


 二.统计和检索文件内容

在维护Linux操作系统的过程中,除了查看文件内容以外,有时还需要对文件内容进行统计,或者查找符合条件的文本内容。下面将学习统计和检索文件内容的两个命令工具。


1.wc命令—统计文件内容中的单词数量(Word Count)行数等信息

wc命令用于统计文件内容中包含的行数,单词数量,字节数等信息,使用文件名作为参数,可以同时统计多个文件,较常用的选项如下所述.

  • -c:统计文件内容中的字节数.
  • -1:统计文件内容中的行数.
  • -w:统计文件内容中的单词个数《以空格或制表位作为分隔).

当文件的行数,单词数或字节数具有特定的意义时,使用 wc命令可以巧妙地获得一些特殊信息

例如:Linux操作系统中的用户账号数据保存在/etc/passwd文件中,其中每一行记录对应一个用户则以下操作可以统计出当前Linx操作系统中拥有的用户账号数量,具体操作如下:

[root@localhost -]# wo -1 /eto/passwd

若将wc命令与管道符号一起使用,还可以对命令输出结果进行统计,例如,若要统计/etc/目录下共包含多少个扩展名为”.conf”的文件,可以先通过“find/etc-name“*.conf*”命令找出符合条件的文件位置,由于fird命令的输出结果也是每行一个文件记录,因此只需结合管道符号执行“wc-I”操作即可得出符合条件的文件数量,具体操作如下。

[root@]ocalhont -]# find /etc name "*.conf" | wo -l

使用不带任何选项的wc命令时,默认将统计指定文件的字节数、行数、单词个数(相当于同时使用“-c”“-1”“-w”三个选项),例如,以下操作统计出/etc/hosts文件中共包含2行,10个单词、158字节的内容,然后通过‘cat/etc/hosts”命令列出文件内容,可核对统计结果是否正确。

[root@localhost -]# wo /etc/hosts

2.grep命令——检索、过滤文件内容

grep命令用于在文件中查找并显示包含指定字符串的行,可以直接指定关键字符串作为查找条件,也可以使用复杂的条件表达式(例如.““word”表示以word开头.“words”表示以word结尾,“s”表示空行),使用grep命令的基本格式如下:

grep [选项]...查找条件 目标文件

grep命令较常用到的几个选项如下。

  • -i:查找内容时忽略大小写(lgnore Case)
  • -v:反转查找(hnvert),即输出与查找条件不相符的行

例如:执行“grep“tp”/etc/passwd”命令,可以在账号文件/etc/passwd中查找包含“ftp”字符串的行,实际上输出了名为ftp的用户账号的信息,具体操作如下:

[root@localhost -]# grop "ftp" /etc/pasavd

在维护Linux操作系统的过程中,经常会遇到包含大量内容的配置文件,而其中往往包含了许多空行和以“#”开头的注释文字,当只需要分析其中的有效配置信息时,这些空行和注释文字的存在不利于快速浏览,使用grep命令可以过滤掉这些无关信息,例如.以下操作可以显示/etc/yum.conf文件中以“#”开头的行和空行以外的内容。


 创作不易,求关注,点赞,收藏,谢谢~  

Linux系列教程(十六)——Linux权限管理之ACL权限

  通过前面的两篇博客我们介绍了Linux系统的用户管理,Linux用户和用户组管理之相关配置文件 讲解了用户管理的相关配置文件,包括用户信息文件/etc/passwd,用户密码文件/etc/shadow;然后介绍了用户组信息文件/etc/group,用户组密码文件/etc/gshadow。用户的家目录,以及用户的模板目录;Linux用户和用户组管理之用户管理命令 讲解了管理用户和用户组的命令,包括新建、修改、查看等等以及用的比较多的切换用户命令 su。那么用户管理结束之后,我们将进入linux的权限管理介绍,本篇博客介绍的是Linux权限管理的ACL权限。

1、什么是 ACL 权限?

  比如有如下场景:

  某大牛在QQ群内直播讲解Linux系统的权限管理,讲解完之后,他在一个公有的Linux系统中创建了一个 /project 目录,里面存放的是课后参考资料。那么 /project 目录对于大牛而言是所有者,拥有读写可执行(rwx)权限,对于QQ群内的所有用户他们都分配的一个所属组里面,也都拥有读写可执行(rwx)权限,而对于 QQ 群外的其他人,那么我们不给他访问/project 目录的任何权限,那么 /project 目录的所有者和所属组权限都是(rwx),其他人权限无。

  问题来了,这时候直播有旁听的人参与(不属于QQ群内),听完之后,我们允许他访问/project目录查看参考资料,但是不能进行修改,也就是拥有(r-x)的权限,这时候我们该怎么办呢?我们知道一个文件只能有一个所属组,我们将他分配到QQ群所在的所属组内,那么他拥有了写的权限,这是不被允许的;如果将这个旁听的人视为目录/project 的其他人,并且将/project目录的其他人权限改为(r-x),那么不是旁听的人也能访问我们/project目录了,这显然也是不被允许的。怎么解决呢?

  

  我们想想windows系统里面给某个文件分配权限的办法:

  

  如上图,我们想要让某个用户不具备某个权限,直接不给他分配这个目录的相应权限就行了。那么对应到Linux系统也是这样,我们给指定的用户指定目录分配指定的权限,也就是 ACL 权限分配。

  

2、查看分区 ACL 权限是否开启:dump2fs

  我们看某个文件(Linux系统中目录也是文件,一切皆是文件)是否支持 ACL 权限,首先要看文件所在的分区是否支持 ACL 权限。

  ①、查看当前系统有哪些分区:df -h

  

  ②、查看指定分区详细文件信息:dumpe2fs -h 分区路径

  下面是查看 根分区/ 的详细文件信息

  

3、开启分区 ACL 权限

  ①、临时开启分区 ACL 权限

mount -o remount,acl /

  重新挂载根分区,并挂载加入 acl 权限。注意这种命令开启方式,如果系统重启了,那么根分区权限会恢复到初始状态。

  ②、永久开启分区 ACL 权限

  一、修改配置文件 /etc/fstab

  

  上面是修改根分区拥有 acl 权限

UUID=490ed737-f8cf-46a6-ac4b-b7735b79fc63 /                       ext4    defaults,acl        1 1

  二、重新挂载文件系统或重启系统,使得修改生效

mount -o remount /

 

4、设定 ACL 权限:setfacl 选项 文件名

  

  ①、给用户设定 ACL 权限:setfacl -m u:用户名:权限 指定文件名

  ②、给用户组设定 ACL 权限:setfacl -m g:组名:权限 指定文件名

  注意:我们给用户或用户组设定 ACL 权限其实并不是真正我们设定的权限,是与 mask 的权限“相与”之后的权限才是用户的真正权限,一般默认mask权限都是rwx,与我们所设定的权限相与就是我们设定的权限。mask 权限下面我们会详细讲解

  范例:所有者root用户在根目录下创建一个文件目录/project,然后创建一个QQ群所属组,所属组里面创建两个用户zhangsan和lisi。所有者和所属组权限和其他人权限是770。

     然后创建一个旁听用户 pt,给他设定/project目录的 ACL 为 r-x。

   

  目录 /project 的所有者和所属组其他人权限设定为 770。接下来我们创建旁听用户 pt,并赋予 acl 权限 rx

  

  为了验证 pt 用户对于 /project 目录没有写权限,我们用 su 命令切换到 pt 用户,然后进入 /project 目录,在此目录下创建文件,看是否能成功:

  

  上面提示权限不够,说明 acl 权限赋予成功,注意如下所示,如果某个目录或文件下有 + 标志,说明其具有 acl 权限。

  

 

5、查看 ACL 权限:getfacl 文件名

  

 

6、最大有效权限 mask

  前面第4点我们讲过,我们给用户或用户组设定 ACL 权限其实并不是真正我们设定的权限,是与 mask 的权限“相与”之后的权限才是用户的真正权限,一般默认mask权限都是rwx,与我们所设定的权限相与就是我们设定的权限。

  我们通过 getfacl 文件名 也能查看 mask 的权限,那么我们怎么设置呢?

setfacl -m m:权限 文件名

  

 

7、删除 ACL 权限

  ①、删除指定用户的 ACL 权限

setfacl -x u:用户名 文件名

  ②、删除指定用户组的 ACL 权限

setfacl -x g:组名 文件名

  ③、删除文件的所有 ACL 权限

setfacl -b 文件名

 

8、递归 ACL 权限

  通过加上选项 -R 递归设定文件的 ACL 权限,所有的子目录和子文件也会拥有相同的 ACL 权限。

setfacl -m u:用户名:权限 -R 文件名

 

9、默认 ACL 权限

  如果给父目录设定了默认的 ACL 权限,那么父目录中所有新建的子文件会继承父目录的 ACL 权限。

setfacl -m d:u:用户名:权限 文件名

 

10、总结

  本篇博客我们介绍了权限管理的ACL权限,通过设定 ACL 权限,我们为某个用户指定某个文件的特定权限,在实际权限管理中还是用的比较多的。

  

以上是关于Linux系列 目录和文件管理的主要内容,如果未能解决你的问题,请参考以下文章

linux系列之常用运维命令整理笔录

LINUX运维——文件管理命令及用户和组管理

Linux运维13:文件和目录属性命令

linux运维基础文件管理

Linux运维14:文件目录操作

Linux 运维基础