2020.06.18 云运维linux 文件管理基础知识
1.文件查看命令
**more(语法)(参数)**:基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作
-<数字>:指定每屏显示的行数;
-d:显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”;
-c:不进行滚屏操作。每次刷新这个屏幕;
-s:将多个空行压缩成一行显示;
-u:禁止下划线;
+<数字>:从指定数字的行开始显示。 快捷键:按Space键:显示文本的下一屏内容。 按Enier键:只显示文本的下一行内容。 按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
按H键:显示帮助屏,该屏上有相关的帮助信息。
按B键:显示上一屏内容。
按Q键:退出rnore命令
**less(选项)(参数):**与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。
-e:文件内容显示完毕后,自动退出;
-f:强制显示文件;
-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;
-l:搜索时忽略大小写的差异;
-N:每一行行首显示行号;
-s:将连续多个空行压缩成一行显示;
-S:在单行显示较长的内容,而不换行显示;
-x<数字>:将TAB字符显示为指定个数的空格字符。
**tail(选项)(参数)**:用于输入文件中的尾部内容。
--retry:即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用;
-c<N>或——bytes=<N>:输出文件尾部的N(N为整数)个字节内容;
-f<name/descriptor>或;--follow<nameldescript>:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效;
-F:与选项“-follow=name”和“--retry"连用时功能相同;
-n<N>或——line=<N>:输出文件的尾部N(N位数字)行内容。
--pid=<进程号>:与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令;
-q或——quiet或——silent:当有多个文件参数时,不输出各个文件名;
-s<秒数>或——sleep-interal=<秒数>:与“-f”选项连用,指定监视文件变化时间隔的秒数;
-v或——verbose:当有多个文件参数时,总是输出各个文件名;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。
**cat(选项)(参数)**:连接文件并打印到标准输出设备上,cat经常用来显示文件的内容
-n或-number:有1开始对所有输出的行数编号;
-b或--number-nonblank:和-n相似,只不过对于空白行不编号;
-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;
-A:显示不可打印字符,行尾显示“$”;
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;
**tac(选项)(参数):**用于将文件已行为单位的反序输出,即第一行最后显示,最后一行先显示。
-a或——append:将内容追加到文件的末尾;
-i或——ignore-interrupts:忽略中断信号。
**head(选项)(参数)**:用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。
-n<数字>:指定显示头部内容的行数;
-c<字符数>:指定显示头部内容的字符数;
-v:总是显示文件名的头信息;
-q:不显示文件名的头信息。
2.文件权限
**chmod(选项)(参数)**:用来变更文件或目录的权限。
c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quiet或——silent:不显示错误信息;
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose:显示指令执行过程;
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
<权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置;
<权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置;
<权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置;
权限表示有九位(数字为0时,无此权限):
u User,(前三位)即文件或目录的拥有者;
g Group(中间三位),即文件或目录的所属群组;
o Other(后三位),除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
a All,即全部的用户,包含拥有者,所属群组以及其他用户;
r 读取权限,数字代号为“4”;
w 写入权限,数字代号为“2”;
x 执行或切换权限,数字代号为“1”;
- 不具任何权限,数字代号为“0”;
s 特殊功能说明:变更文件或目录的权限。
3.更改所有者和所属组
**chown(选项)(参数):**改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quite或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
**-R或——recursive**:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
--dereference:效果和“-h”参数相同;
--help:在线帮助;
--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
--version:显示版本信息。
4.默认权限
**umask(选项)(参数):**用来设置限制新建文件权限的掩码
-p:输出的权限掩码可直接作为指令来执行;
-S:以符号方式输出权限掩码。
默认值022。027.077
目录默认权限:755(777-022)777(421/421/421)
文件默认权限:644(666-022)666(420/420/420)
5.隐藏权限
**chattr(选项):**用来改变文件属性
-R:递归处理,将指令目录下的所有文件及子目录一并处理;
-v<版本编号>:设置文件或目录版本;
-V:显示指令执行过程;
+<属性>:开启文件或目录的该项属性;
-<属性>:关闭文件或目录的该项属性;
=<属性>:指定文件或目录的该项属性。
a:让文件或目录仅供附加用途;
b:不更新文件或目录的最后存取时间;
c:将文件或目录压缩后存放;
d:将文件或目录排除在倾倒操作之外;
i:不得任意更动文件或目录;
s:保密性删除文件或目录;
S:即时更新文件或目录;
u:预防意外删除。
**lsattr(选项)(参数):**用于查看文件的第二扩展文件系统属性。
-E:可显示设备属性的当前值,但这个当前值是从用户设备数据库中获得的,而不是从设备直接获得的。
-D:显示属性的名称,属性的默认值,描述和用户是否可以修改属性值的标志。
-R:递归的操作方式;
-V:显示指令的版本信息;
-a:列出目录中的所有文件,包括隐藏文件。
6.特殊权限
set uid 保证普通用户临时获得所有者的身份
set gid 组
strick bit 对目录有读写权限,但不能删除
7.部分练习代码
[root@coco ~]# ls -l /tmp/test_mv/dirb/
total 0
drwxr-xr-x. 2 root root 6 Jun 17 13:03 dirc
-rw-r--r--. 1 root root 0 Jun 17 13:06 filee
[root@coco ~]# ls -l /etc/rc.local
lrwxrwxrwx. 1 root root 13 Apr 25 13:56 /etc/rc.local -> rc.d/rc.local
[root@coco ~]# groupadd testgroup
[root@coco ~]# mkdir /tmp/4_6
[root@coco ~]# cd /tmp/4_6
[root@coco 4_6]# touch test1
[root@coco 4_6]# ls -l test1
-rw-r--r--. 1 root root 0 Jun 18 17:52 test1
[root@coco 4_6]# ls -l test1
-rw-r--r--. 1 root root 0 Jun 18 17:52 test1
[root@coco 4_6]# mkdir dir2
[root@coco 4_6]# touch dir2/test2
[root@coco 4_6]# ls -ld dir2
drwxr-xr-x. 2 root root 18 Jun 18 17:58 dir2
[root@coco 4_6]# chgrp testgroup dir2
[root@coco 4_6]# ls -ld dir2
drwxr-xr-x. 2 root testgroup 18 Jun 18 17:58 dir2
[root@coco 4_6]# ls -l dir2
total 0
-rw-r--r--. 1 root root 0 Jun 18 17:58 test2
[root@coco 4_6]#
[root@coco 4_6]# chgrp -R testgroup dir2
[root@coco 4_6]# ls -l dir2
total 0
-rw-r--r--. 1 root testgroup 0 Jun 18 17:58 test2
[root@coco 4_6]# ll dir2
total 0
-rw-r--r--. 1 root testgroup 0 Jun 18 17:58 test2
[root@coco 4_6]# mkdir dir3
[root@coco 4_6]# useradd user1
[root@coco 4_6]# touch dir3/test3
[root@coco 4_6]# chown user1 dir3
[root@coco 4_6]# ls -ld dir3
drwxr-xr-x. 2 user1 root 18 Jun 18 18:02 dir3
[root@coco 4_6]# ls -l dir3
total 0
-rw-r--r--. 1 root root 0 Jun 18 18:02 test3
[root@coco 4_6]# chown -R use1:testgroup dir3
chown: invalid user: ‘use1:testgroup’
[root@coco 4_6]# chown -R user1:testgroup dir3
drwxr-xr-x. 2 user1 testgroup 18 Jun 18 18:02 dir3
[root@coco 4_6]# ls -l dir3
total 0
-rw-r--r--. 1 user1 testgroup 0 Jun 18 18:02 test3
[root@coco 4_6]# chmod 750 dir3
[root@coco 4_6]# ls -ld dir3
drwxr-x---. 2 user1 testgroup 18 Jun 18 18:02 dir3
[root@coco 4_6]# ls -l dir3/test3
-rw-r--r--. 1 user1 testgroup 0 Jun 18 18:02 dir3/test3
[root@coco 4_6]# chmod 700 dir3/test3
[root@coco 4_6]# ll dir3/test
ls: cannot access dir3/test: No such file or directory
[root@coco 4_6]# ll dir3/test3
-rwx------. 1 user1 testgroup 0 Jun 18 18:02 dir3/test3
[root@coco 4_6]# ls -ld dir3
drwxr-x---. 2 user1 testgroup 18 Jun 18 18:02 dir3
[root@coco 4_6]# ls -l dir3
total 0
-rwx------. 1 user1 testgroup 0 Jun 18 18:02 test3
[root@coco 4_6]# clear
[root@coco 4_6]# chmod u=rwx,og=rx dir3/test3
[root@coco 4_6]# ls -l dir3/test3
-rwxr-xr-x. 1 user1 testgroup 0 Jun 18 18:02 dir3/test3
[root@coco 4_6]# chmod u-x dir3/test3
[root@coco 4_6]# ls -l dir3
total 0
-rw-r-xr-x. 1 user1 testgroup 0 Jun 18 18:02 test3
[root@coco 4_6]# chmod a-x dir3/test3
[root@coco 4_6]# ll dir3/test3
-rw-r--r--. 1 user1 testgroup 0 Jun 18 18:02 dir3/test3
[root@coco 4_6]# chmod u+x dir3/test3
[root@coco 4_6]# ll dir3/test3
-rwxr--r--. 1 user1 testgroup 0 Jun 18 18:02 dir3/test3
[root@coco 4_6]#
[root@coco 4_6]# umask 002
[root@coco 4_6]# mkdir dir4
[root@coco 4_6]# ls -ld dir4
drwxrwxr-x. 2 root root 6 Jun 18 18:15 dir4
[root@coco 4_6]# touch test4
[root@coco 4_6]# ls -l test44
ls: cannot access test44: No such file or directory
[root@coco 4_6]# ls -l test4
-rw-rw-r--. 1 root root 0 Jun 18 18:16 test4
[root@coco 4_6]# umask 002
[root@coco 4_6]# umask 022
[root@coco 4_6]# touch test5
[root@coco 4_6]# ls -l test5
-rw-r--r--. 1 root root 0 Jun 18 18:17 test5
[root@coco 4_6]#
[root@coco 4_6]# umask 002
[root@coco 4_6]# mkdir dir4
[root@coco 4_6]# ls -ld dir4
drwxrwxr-x. 2 root root 6 Jun 18 18:15 dir4
[root@coco 4_6]# touch test4
[root@coco 4_6]# ls -l test44
ls: cannot access test44: No such file or directory
[root@coco 4_6]# ls -l test4
-rw-rw-r--. 1 root root 0 Jun 18 18:16 test4
[root@coco 4_6]# umask 002
[root@coco 4_6]# umask 022
[root@coco 4_6]# touch test5
[root@coco 4_6]# ls -l test5
-rw-r--r--. 1 root root 0 Jun 18 18:17 test5
[root@coco 4_6]#
[root@coco 4_6]# ls dir2
test2 test5
[root@coco 4_6]# touch test6
[root@coco 4_6]# chattr +a dir2
[root@coco 4_6]# rm -f dir2/test6
[root@coco 4_6]# touch dir2/test7
touch: cannot touch ‘dir2/test7’: Permission denied
[root@coco 4_6]# charttr -a dir2/test7
-bash: charttr: command not found
[root@coco 4_6]# touch dir2/test7
touch: cannot touch ‘dir2/test7’: Permission denied
[root@coco 4_6]# ll dir2
total 0
-rw-r--r--. 1 root testgroup 0 Jun 18 17:58 test2
-rw-r--r--. 1 root root 0 Jun 18 18:19 test5
[root@coco 4_6]# cd ..
[root@coco tmp]# ll tmp
ls: cannot access tmp: No such file or directory
[root@coco tmp]# ll /tmp
total 0
drwxr-xr-x. 5 root root 87 Jun 18 18:22 4_6
drwxr-xr-x. 2 root root 6 Jun 17 12:41 test
drwxr-xr-x. 3 root root 17 Jun 17 13:07 test_mv
[root@coco tmp]# su root
[root@coco tmp]# cd /4_6
bash: cd: /4_6: No such file or directory
[root@coco tmp]# cd 4_6
[root@coco 4_6]# cd dir2
[root@coco dir2]# touch test7
touch: cannot touch ‘test7’: Permission denied
[root@coco dir2]# chattr -i dir2
chattr: No such file or directory while trying to stat dir2
[root@coco dir2]# cd ..
[root@coco 4_6]# chattr -i dir2
[root@coco 4_6]# chattr +a dir2
[root@coco 4_6]# touch dir2/test7
[root@coco 4_6]# chattr +a dir2/test7
[root@coco 4_6]# echo '11111' > dir2/test7
bash: dir2/test7: Operation not permitted
[root@coco 4_6]# echo '11111' >> dir2/test7
[root@coco 4_6]# cat dir2/test7
11111
[root@coco 4_6]# chattr +i dir2/test6
chattr: No such file or directory while trying to stat dir2/test6
[root@coco 4_6]# ls
dir2 dir3 dir4 test1 test4 test5 test6
[root@coco 4_6]# touch dir2/test6
[root@coco 4_6]# chattr +i dir2/test6
[root@coco 4_6]# each '11111' > dir2/test6
bash: dir2/test6: Permission denied
[root@coco 4_6]#
[root@coco 4_6]# each '11111' >> dir2/test6
bash: dir2/test6: Permission denied
[root@coco 4_6]# rm -f dir2/test6
rm: cannot remove ‘d