主要内容:
1.文件和目录的权限
2.文件和目录的默认权限和umask
3.Linux查找及压缩
1.文件和目录的权限
权限对于文件:
r(read):可以获取文件的内容
w(write):可以编辑、新增或修改文件的内容(不包括删除该文件)
x(excute):该文件具有被系统执行的权限。
权限对于目录:
r(read contents in directory):表示具有读取目录结构列表的权限,即可使用ls命令将该目录的内容列表显示出来
w(modify contents of directory):
也就是在当前目录下,可以有如下权限:
新建新的文件或目录;
删除已有目录或文件;
将已有目录或文件重命名;
转移该目录内的文件或目录的位置;
x(access directory):目录的可执行权限代表用户是否能够进入该目录,也就是cd进入该目录的权限。
总结一下:
x cd
rx cd ls
wx cd touch rm vi mv
2.文件和目录的默认权限和umask
[root@qin-1 ~]# umask //root用户的umask值uma
0022 //与一般权限有关的是后边3个数字
[dmtsai@qin-1 ~]$ umask //dmtsai用户的umask值
0002
解释:
若用户创建“文件”则默认没有可执行(x)权限,即只有r、w这两个权限,也就是说最大为666,默认权限为如:-rw-rw-rw-
若用户创建“目录”,则由于x与是否进入此目录有关,因此默认为权限均开放,极为777,默认权限为:drwxrwxrwxuma
umask的分数是指“默认值需要减掉的权限”。因为r,w,x分别是4,2,1,也就是说,当要拿掉写的权限,就是输入2,而如果拿掉读的权限,也就是4,那么拿掉读写的权限,也就是6,而要拿掉执行和写入的权限,也就是3。
新建文件时(假设umask为022):
(-rw-rw-rw-)-(-----w--w-)===>-rw-r--r—
新建文件夹时(假设umask为022):
(drwxrwxrwx)-(d----w--w-)===>drwxr-xr-x
[root@qin-1 teach]# umask
0022
[root@qin-1 teach]# touch file
[root@qin-1 teach]# mkdir dir
[root@qin-1 teach]# ll
total 0
drwxr-xr-x 2 root root 6 Nov 8 15:24 dir //(d rwx rwx rwx)-(d --- -w- -w-)===>d rwx r-x r-x
-rw-r--r-- 1 root root 0 Nov 8 15:24 file //(- rw- rw- rw-)-(- --- -w- -w-)===>- rw- r-- r--
3.Linux查找及压缩
(1)which
(2)whereis
(3)locate
(4)find
(5)grep
(6)gzip
(7)bzip2
(8)tar
(1)which [命令名] 查询可执行文件的位置,但是只能查找环境变量下的命令
#只搜索PATH环境变量里规定的目录,查询可执行文件
如:which ls
如:which ifconfig
如:which X
/usr/bin/which: no X in (/usr/lib/jvm/jdk1.8.0_141/bin:/usr/lib/jvm/jdk1.8.0_141/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/var/local/apache-maven-3.2.2/bin:/root/hadoop-2.7.6/bin:/root/hadoop-2.7.6/sbin:/root/bin)
(2)whereis [选项] [命令名]
#搜索命令所在路径及帮助文档所在的位置
选项:
-b:只查找可执行文件
-m:只查找帮助文件
如:whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz //man目录下的都是帮助文档
(3)locate [选项] [文件名]
#查找文件所在位置
选项:
-i:忽略大小写差异
-r:后边可以接正则表达式
locate命令查找文件是由已创建的数据库/var/lib/mlocate里面的数据查找到的,不用直接去硬盘中访问数据,所以查找速度很快。
centos7中默认没有locate命令,所以需要自行安装:
wget epel url下载 修改yum的repos
yum search locate
yum -y install mlocate
updatedb 更新数据库以后才能查找出来。 只有root用户才可以执行该操作
[root@qin-1 ~]# locate jdk-8u141-linux-x64.tar.gz
/root/jdk-8u141-linux-x64.tar.gz
[root@qin-1 ~]# touch qlf //新建一个文件,名为qlf
[root@qin-1 ~]# locate qlf //新建的文件,找不到
[root@qin-1 ~]# updatedb //需要更新数据库,使用updatedb命令
[root@qin-1 ~]# locate qlf //更新数据库后能找到文件qlf的位置
/root/qlf
(4)find [搜索范围] [搜索条件]
#find的命令搜索速度较慢,因为它是搜索整个硬盘
如:find / -name original-ks.cfg
●find命令与时间有关的参数:
如:find /var/log/ -mtime +10 //查找10天前修改的文件
-atime 文件访问时间 access
-ctime 改变文件属性 change
-mtime 修改文件内容 modify
-10 10天内修改文件
10 10天当天修改的文件
+10 10天前修改的文件
●find命令与用户及用户组的参数:
-user name
-group name等
如:find -user root //查找所有者为root的文件
●find命令其它可进行的操作。
对查找出来的文件可以进行一些特定的操作:
如:find / -name "*.tar.gz" -exec ls -l {} \;
在/下查找文件名字为.tar.gz的文件 并给这些文件执行命令 ls -l
-rw-r--r-- 1 root root 185516505 Nov 6 10:11 /root/jdk-8u141-linux-x64.tar.gz
-rw-r--r-- 1 root root 216745683 Apr 18 2018 /root/hadoop-2.7.6.tar.gz
-rw-r--r-- 1 20415 101 391853 Apr 18 2018 /root/hadoop-2.7.6/share/hadoop/kms/tomcat/bin/tomcat-native.tar.gz
●find命令与文件权限及文件名有关的参数
如:find /root –name “install.log*”
如:find /root –name “ab[cd]” //搜索文件名叫abc或者叫abd的文件
Linux的通配符:
- 匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符
如:
find . -size 25k //查找文件大小是25KB的文件
-25k 小于25KB的文件
25k 等于25KB的文件
+25k 大于25KB的文件
如:find /etc -size +20k -a -size -50k //查找/etc目录下,大于20KB并且小于50KB的文件
-a and 逻辑与,两个条件都满足
-o or 逻辑或,两个条件满足一个即可
(5)grep命令
grep [选项] 字符串 文件名
#在文件中匹配符合条件的字符串 仅仅在文件里面的查找
选项:
-i 忽略大小写
-v 排除制定字符串
如:grep "yes" original-ks.cfg //在文件中搜索包含yes字符串的行
(6)gzip [选项] 文件名
#只能用来压缩文件,不能用来压缩目录 压缩以后源文件消失。强行压缩目录时,只是将目录下面的所有文件压缩,不会对目录进行压缩。
后缀名为gz
选项:
-c:将压缩的数据输出到屏幕上,保留原始文件
-d:解压
-v:显示原文件/压缩文件的压缩比例等信息
-r:将目录下的每个文件都分别压缩
如:gzip -v testfile //压缩testfile文件
如:gzip -d testfile.gz //解压testfile.gz
如:gzip -c words > words.gz //压缩words文件后,保留原文件
如:gzip -r teach //该目录下的所有文件将会被分别压缩,该目录下的子目录不会被压缩
如:gzip -dr teach //该目录下的所有文件将会被解压。
(7)bzip2命令和gzip命令用法几乎相同,bzip2的压缩比更佳。请同学们自行学习。后缀名为bz2
(8)tar
#打包命令
-c:新建打包文件
-v:在解压/解压缩的处理的过程中,将正在处理的文件名显示出来
-f filename:-f后边要跟一个被处理的文件名
-x:解打包或解压缩的功能,可与-C(大写)在特定目录中解开
-z:通过对gzip的支持进行压缩/解压缩,此时文件名为最好为*.tar.gz
如:tar -cvf data.tar ./data/ //在当前目录下新建一个包名为data.tar,将data目录进行打包
如:tar -xvf data.tar -C ./teach/ //将data.tar解压到./teach目录中去
如:tar -zcvf data.tar.gz data //将data目录打包并压缩成.tar.gz文件
如:tar -zxvf data.tar.gz
小提示:
cvf xvf 常作为组合使用。若再压缩为gz包,则再分别加上z参数。
(9)zip入门
如:zip a.zip /etc/passwd /etc/shadow //将/etc/passwd和/etc/shadow文件添加到a.zip压缩包中
如:unzip a.zip
练习:
练习1:使用root用户在/tmp目录下新建目录testing和文件testing/file,给testing目录赋权限为744(chmod 744 testing),给testing/file文件赋权限为600(chmod 600 testing/file)。编辑file内容为:content,保存退出,新建一个用户为shrek,查看shrek用户是否能够打开testing目录。若不能,让shrek用户拥有testing目录(chown shrek /tmp/testing),再次查看shrek用户是否能够进入目录且编辑、删除文件file。
cd /tmp
mkdir testing
chmod 744 testing
touch testing/file
vi file
chmod 600 testing/file
ls -ald testing testing/file
练习2:假设你的umask为003,请问该umask情况下,新建的文件和文件夹权限是什么?
练习3:练习使用gzip对文件进行压缩、解压缩。
练习4:练习使用tar命令对目录进行打包并压缩和解包、解压缩。
参考答案:
练习1:
[root@qin-1 tmp]# mkdir testing
[root@qin-1 tmp]# chmod 744 testing
[root@qin-1 tmp]# touch testing/file
[root@qin-1 tmp]# ls -ald testing testing/file
drwxr--r-- 2 root root 18 Nov 8 16:00 testing
-rw-r--r-- 1 root root 0 Nov 8 16:00 testing/file
[root@qin-1 tmp]# cd testing/
[root@qin-1 testing]# vi file
[root@qin-1 testing]# cd ..
[root@qin-1 tmp]# su - shrek //切换用户
[shrek]@qin-1 tmp]$ cd testing/
-bash: cd: testing/: Permission denied //不能打开,因为shrek不在root组内,且shrek只有r权限,没有x权限,所以不能打开
[shrek@qin-1 tmp]$ exit
logout
[root@qin-1 tmp]# chown dmtsai testing/ //shrek为文件的拥有者后对testing文件夹的权限是rwx
[root@qin-1 tmp]# su - shrek
Last login: Thu Nov 8 14:18:12 CST 2018 on pts/1
[shrek@qin-1 ~]$ cd /tmp
[shrek@qin-1 tmp]$ cd testing/
[shrek@qin-1 testing]$ ls
file
[shrek@qin-1 testing]$ rm -rf file
练习2:
umask为003,所以去掉的权限为(- --- --- -wx)
文件:(- rw- rw- rw-)-(- --- --- -wx)===>- rw- rw- r--
目录:(d rwx rwx rwx)-(- --- --- -wx)===>d rwx rwx r--