file
指令功能说明:辨识文件类型
语法:file [常用选项] 文件或目录
常用选项:
-c //详细显示指令执行的过程,便于排错或分析程序执行的情形
-z //尝试解读压缩文件的内容
为了更好地展示file
指令,创建空目录lesson05,并在目录lesson05中分别创建目录子dir和文本文件normal.txt,下图所示:
此时,通过file
指令来识别创建的文件或目录,file得出dir是目录,而normal.txt是空文本:
将字符串重定向到空文本normal.txt中,通过file
识别出normal.txt中存储了文本:
为了进一步检验file
指令的辨别能力,在lesson05下创建了test.c文件,file
依然能够识别出test.c是C语言源文件:
通过gcc编译生成可执行程序a.out,file
可执行程序a.out:
那么file
能否辨别压缩文件?如下图所示:压缩目录lesson05后,file
来识别压缩文件lesson05.tgz:
修改/etc/sudoers文件分配文件
# chmod 740 /etc/sudoers
# vim /etc/sudoer
格式:接受权限的用户登录主机=(执行命令的用户)命令
使用sudo调用授权的命令
$ sudo -u 用户名 命令
例如:
$ sudo -u root /usr/sbin/useradd u2
Linux中,文件或目录的权限(下图蓝、红及绿框)分别为:可读权限(-r)、可写权限(-w)及可执行权限(-x):
可读权限:如果目录没有可读权限,则无法使用ls等命令查看目录中的文件内容;
可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件;
可执行权限:如果目录没有可执行权限,则无法cd到目录中。
在下图例子中,用户ju无法进入名为dir文件或目录,通过查询ls查询文件详细信息可知,dir是一个目录,对于其他人只赋予了读的权限,没有赋予写和可执行的权限,导致其他人(用户ju)无法进入:
切换成root用户后更改其他用户权限(仅有可执行权限)后,切换成普通用户ju,此时ju能够访问目录dir:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
由于不同的操作系统,默认的权限是不一样的,本文环境为centOS7。通过新建文件hello.txt和目录new_dir可以看出其默认权限为下图框处:
之所以出现在中情况,是由权限掩码造成的,本文环境下的权限掩码为022(八进制):
而普通文件起始权限666,目录文件起始权限777,详见下图:
因而,实现本节开始的创建新文件目录的默认权限计算具体如下图所示,将普通文件和目录的起始权限分别转换为二进制值110 110 110
和111 111 111
,并将他们分别与权限掩码(转换成二进制数000 010 010)的反码作&运算,其得到值转换八进制后就是上图的结果。
权限掩码在起始权限中,去掉在umask中出现的权限,不能影响其他默认权限。
粘滞位,为了解决共享文件中,各个用户误删其他人的文件。例如下图中,创建公共目录public,并将public对所有用户开放所有权限:
此时,用户ju、yy及root用户分别创建三个普通文件:
这时,用户ju不小心误删了用户yy创建的文件mmp3:
为了避免上述情况出现在共享文件夹中,这时引入了粘滞位的概念,主要通过命令chmod +t 目录名
来创建粘滞位:
你能够发现目录public的其他用户的可执行权限处变更成了t
,这就说明粘滞位创建成功。此后用户yy就无法误删用户ju的文件,用户ju也无法删除用户yy的文件:
通过执行下图命令可知,当一个目录被设置为”粘滞位“,则该目录下的文件只能由超级管理员、该目录的所有者和该文件的所有者删除。
总结
- 目录的可执行权限是表示操作者能否在目录下执行命令;
- 如果目录没有可执行权限(-x),则无法对目录执行任何命令,甚至无法通过
cd
指令进入目录,即使目录拥有可读权限(-r)- 如果目录具有可执行权限(-x),但没有可读权限(-r),则用户可以执行命令,可以通过
cd
进入目录,但由于没有目录的读权限,所以在目录下,即使能够执行ls
命令,但仍然没有权限读出目录下的文档
注意:shell是Linux上的外壳程序(命令行程序),类似于Windows上的图形化界面,centOS的外壳程序是bash(统称shell)。