【Linux学习】Linux的基本指令(四)

1、file指令

功能说明:辨识文件类型

语法:file [常用选项] 文件或目录

常用选项:

-c  //详细显示指令执行的过程,便于排错或分析程序执行的情形
-z  //尝试解读压缩文件的内容

为了更好地展示file指令,创建空目录lesson05,并在目录lesson05中分别创建目录子dir和文本文件normal.txt,下图所示:

【Linux学习】Linux的基本指令(四)_第1张图片

此时,通过file指令来识别创建的文件或目录,file得出dir是目录,而normal.txt是空文本:

【Linux学习】Linux的基本指令(四)_第2张图片

将字符串重定向到空文本normal.txt中,通过file识别出normal.txt中存储了文本:

在这里插入图片描述

为了进一步检验file指令的辨别能力,在lesson05下创建了test.c文件,file依然能够识别出test.c是C语言源文件:

【Linux学习】Linux的基本指令(四)_第3张图片

通过gcc编译生成可执行程序a.out,file可执行程序a.out:
【Linux学习】Linux的基本指令(四)_第4张图片

那么file能否辨别压缩文件?如下图所示:压缩目录lesson05后,file来识别压缩文件lesson05.tgz:
【Linux学习】Linux的基本指令(四)_第5张图片

2、使用sudo分配权限

修改/etc/sudoers文件分配文件

# chmod 740 /etc/sudoers
# vim /etc/sudoer

格式:接受权限的用户登录主机=(执行命令的用户)命令

使用sudo调用授权的命令

$ sudo -u 用户名 命令

例如:

$ sudo -u root /usr/sbin/useradd u2

3、目录的权限

Linux中,文件或目录的权限(下图蓝、红及绿框)分别为:可读权限(-r)、可写权限(-w)及可执行权限(-x):

【Linux学习】Linux的基本指令(四)_第6张图片

可读权限:如果目录没有可读权限,则无法使用ls等命令查看目录中的文件内容;

可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件;

可执行权限:如果目录没有可执行权限,则无法cd到目录中。

在下图例子中,用户ju无法进入名为dir文件或目录,通过查询ls查询文件详细信息可知,dir是一个目录,对于其他人只赋予了读的权限,没有赋予写和可执行的权限,导致其他人(用户ju)无法进入:

【Linux学习】Linux的基本指令(四)_第7张图片

切换成root用户后更改其他用户权限(仅有可执行权限)后,切换成普通用户ju,此时ju能够访问目录dir:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传【Linux学习】Linux的基本指令(四)_第8张图片

4、默认权限

由于不同的操作系统,默认的权限是不一样的,本文环境为centOS7。通过新建文件hello.txt和目录new_dir可以看出其默认权限为下图框处:

【Linux学习】Linux的基本指令(四)_第9张图片

之所以出现在中情况,是由权限掩码造成的,本文环境下的权限掩码为022(八进制):
【Linux学习】Linux的基本指令(四)_第10张图片

而普通文件起始权限666,目录文件起始权限777,详见下图:
【Linux学习】Linux的基本指令(四)_第11张图片

因而,实现本节开始的创建新文件目录的默认权限计算具体如下图所示,将普通文件和目录的起始权限分别转换为二进制值110 110 110111 111 111,并将他们分别与权限掩码(转换成二进制数000 010 010)的反码作&运算,其得到值转换八进制后就是上图的结果。
【Linux学习】Linux的基本指令(四)_第12张图片

权限掩码在起始权限中,去掉在umask中出现的权限,不能影响其他默认权限。

5、黏滞位

粘滞位,为了解决共享文件中,各个用户误删其他人的文件。例如下图中,创建公共目录public,并将public对所有用户开放所有权限:

【Linux学习】Linux的基本指令(四)_第13张图片

此时,用户ju、yy及root用户分别创建三个普通文件:

【Linux学习】Linux的基本指令(四)_第14张图片

这时,用户ju不小心误删了用户yy创建的文件mmp3:

【Linux学习】Linux的基本指令(四)_第15张图片

为了避免上述情况出现在共享文件夹中,这时引入了粘滞位的概念,主要通过命令chmod +t 目录名来创建粘滞位:

【Linux学习】Linux的基本指令(四)_第16张图片

你能够发现目录public的其他用户的可执行权限处变更成了t,这就说明粘滞位创建成功。此后用户yy就无法误删用户ju的文件,用户ju也无法删除用户yy的文件:

【Linux学习】Linux的基本指令(四)_第17张图片

通过执行下图命令可知,当一个目录被设置为”粘滞位“,则该目录下的文件只能由超级管理员该目录的所有者该文件的所有者删除。

【Linux学习】Linux的基本指令(四)_第18张图片

总结

  • 目录的可执行权限是表示操作者能否在目录下执行命令;
  • 如果目录没有可执行权限(-x),则无法对目录执行任何命令,甚至无法通过cd指令进入目录,即使目录拥有可读权限(-r)
  • 如果目录具有可执行权限(-x),但没有可读权限(-r),则用户可以执行命令,可以通过cd进入目录,但由于没有目录的读权限,所以在目录下,即使能够执行ls命令,但仍然没有权限读出目录下的文档

注意:shell是Linux上的外壳程序(命令行程序),类似于Windows上的图形化界面,centOS的外壳程序是bash(统称shell)。

你可能感兴趣的:(Linux操作系统,linux,学习,vim)