我是靠谱客的博主 踏实橘子,最近开发中收集的这篇文章主要介绍【Linux学习】Linux的基本指令(四)1、file指令2、使用sudo分配权限3、目录的权限4、默认权限5、黏滞位,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、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:
在这里插入图片描述

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):

在这里插入图片描述

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

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

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

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

在这里插入图片描述

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

4、默认权限

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

在这里插入图片描述

之所以出现在中情况,是由权限掩码造成的,本文环境下的权限掩码为022(八进制):
在这里插入图片描述

而普通文件起始权限666,目录文件起始权限777,详见下图:
在这里插入图片描述

因而,实现本节开始的创建新文件目录的默认权限计算具体如下图所示,将普通文件和目录的起始权限分别转换为二进制值110 110 110111 111 111,并将他们分别与权限掩码(转换成二进制数000 010 010)的反码作&运算,其得到值转换八进制后就是上图的结果。
在这里插入图片描述

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

5、黏滞位

粘滞位,为了解决共享文件中,各个用户误删其他人的文件。例如下图中,创建公共目录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)。

最后

以上就是踏实橘子为你收集整理的【Linux学习】Linux的基本指令(四)1、file指令2、使用sudo分配权限3、目录的权限4、默认权限5、黏滞位的全部内容,希望文章能够帮你解决【Linux学习】Linux的基本指令(四)1、file指令2、使用sudo分配权限3、目录的权限4、默认权限5、黏滞位所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部