前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux文件的默认权限与查找命令详解

Linux文件的默认权限与查找命令详解

作者头像
大闲人柴毛毛
发布2018-03-09 10:30:52
2.7K0
发布2018-03-09 10:30:52
举报
文章被收录于专栏:大闲人柴毛毛

今天被csdn坑了!昨晚写了一夜的博客,保存到线上草稿了!可是今天打开博客,草稿箱里也找不到,发布的文章中也找不到!作为一家专门研讨技术的网站,居然还会在技术上出现这种问题,这分明就是在打自己的脸啊! 抱怨的话不多说,现在只好重起炉灶、自认倒霉了。为就接着从文件权限管理开始说,等那天有精力了再把消失的那一段内容给补上。

文件/目录的默认权限和隐藏权限

在前面几篇博客中为也已经提过,文件/目录的基本权限有rwx,那么除了这三个基本权限,Linux使用的ext2/ext3文件系统还存在着文件/目录的隐藏权限。隐藏权限可以使用chattr来设置,用lsattr来查看。隐藏权限最重要的特性就是它可以设置让文件主都无法修改,这对于系统安全性来说是至关重要的。

文件的默认权限umask

我们都知道,文件在创建时如果不指定具体的权限,那么系统会给它分配一个默认的权限,这个默认权限就是umask。

代码语言:javascript
复制
//我们可以使用umask命令来查看默认权限
umask
0022

直接输入umask而不带任何参数,我们就会得到0022这四个数字。第一个数字我们先不要管,后面三个数字022就是文件系统的默认权限! 这里有个注意点,022表示文件/目录在默认权限的基础上被剥夺的权限,除此之外,文件和目录的默认权限是不同的,文件的默认权限是rw-rw-rw,目录的默认权限是rwxrwxrwx;因此,当我们创建一个文件,那么文件的默认权限就是:(rw-rw-rw)-(—-w–w-)=(rw-r–r–); 那么目录的默认权限就是:(rwxrwxrwx)-(—-w–w-)=(rwxr-xr-x)。

umask除了上述数字表现形式,还有字符表示形式:

代码语言:javascript
复制
//只要增加参数-S,即可以字符表示
umask -S
u=rwx,g=rx,o=rx
  • 修改umask
代码语言:javascript
复制
umask 002 //这样即可修改umask值

PS:不同的用户身份所对应的默认umask值是不一样的!root的默认umask是022,也就是root下的umask会拿掉较多的权限,这是出于安全性的考虑;普通用户身份默认的饿umask值是002,即保留用户对文件/目录的读/写权。 关于umask的设置可以查看etc/bashrc这个文件,但不要修改这里面的值。

文件的隐藏属性

  • 设置文件的隐藏属性chattr
代码语言:javascript
复制
chattr [+-=] [option] 文件/目录

以下这些参数都是指文件的隐藏属性:

A

设置了A后,当访问文件/目录后,它的atime不会被改变,这可以防止IO慢的机器频繁的访问磁盘,对于速度慢的计算机很有帮助

S

一般文件都是异步写入磁盘的,设置了S之后,文件是同步写入磁盘

a

只能增加数据,不能删除和修改数据,这个参数职能root设置

c

设置这个参数之后,文件会自动压缩,要读的时候自动解压

i

设置它之后,文件无法删除、改名字、设置连接、无法写入数据,对于文件的安全性很有帮助,但只有root才能使用它

s

设置它之后,如果一旦文件被删除,那么它将永久地从硬盘中删除

u

设置它之后,如果文件被删除,其实它还在磁盘中,可以找回该文件

Ps:a和i比较常见,他们都需要root权限。

例1:

代码语言:javascript
复制
//取消文件chai的隐藏属性i
chattr -i /chai

例2:

代码语言:javascript
复制
//给文件chai增加隐藏属性i
chattr +i /chai

PS:常见的隐藏属性是a、i,a只能增加数据,i是啥也不允许干。就像日志文件,它的隐藏属性是a,即只能增加数据,无法修改原有的数据,更不能删除、修改文件名。

  • 显示文件隐藏属性lsattr
代码语言:javascript
复制
lsattr [option] 文件/目录

a

设置它之后,能将隐藏文件的隐藏属性也显示出来

d

它后面必须接目录,表示只显示目录本身的隐藏属性,而不显示目录中文件和目录的隐藏属性

R

后面接目录,连同子目录的隐藏属性都显示出来

查看文件的类型:file

当我们要查看一个文件是由什么类型的数据组成的,例如这个文件是ASCII文件,还是data文件,还是二进制文件,可以使用file命令查看。

代码语言:javascript
复制
输入:file /chai
显示:Ascii、data……

命令与文件的查询

  • 脚本文件的查询 which [-a] 命令的名字 -a:将所有path路径下符合条件的命令都列出来,而不仅仅只列出找到的第一个命令。

例子:

代码语言:javascript
复制
which ipconfig

PS:由于不同用户身份的path是不一样的,所以which得到的结果也是不一样的。

  • 寻找指定文件whereis 一般,我们不使用find进行文件的查找,因为速度很慢,一般用locate和whereis来查找;因为locate和whereis是对数据库进行查询,并没有对硬盘进行查询,所以速度相对较快,而find则是对硬盘进行查询。
代码语言:javascript
复制
whereis [option] 文件/目录

-b:只找二进制文件
-m:只找在说明文件manual中出现的文件
-s:只找源文件source
-u:查找不在上述三个选项中的其他文件

PS:which的一般用户找不到ipconfig指令,因为which只在path中找,而whereis是在整个文件系统中找;虽然一般用户不具备ipconfig的使用权限,但这个文件确实存在于文件系统中,所以whereis能找到。 PS:Linux会将所有的文件记录在一张数据库表中,那么在使用whereis和locate查找文件时是在这张表中查找,有时候由于这张表更新的比较慢,所以可能会查找到已经删除的文件,也有可能找不到最新创建的文件。

  • locate
代码语言:javascript
复制
locate [option] 关键字
-i:忽略关键字大小写
-r:关键字可以用正则表达式代替

locate和whereis一样,都是去查找数据库,而这个数据库一般是一天只更新一次,所以我们找不到文件时使用updatedb命令来更新数据库,这个更新可能要等上几分钟。

  • find
代码语言:javascript
复制
find [PATH] [option] [action]
//PATH表示在哪个目录下寻找
//newer file中file是一个文件,表示寻找比这个文件更新的文件

option+action的第一种取值:
option=mtime/ctime/atime
action=n/+n/-n/newer file
//n是一个数字,若n为4表示:往前推第四到第五天的那一天;若n为+4表示:往前推第五天到很久以前;若n为-4表示往前推第四天到今天。

option与action的第二种取值:
gid/uid = 用户/用户组的id号
user/group 用户/用户组的名字
nouser:寻找在文件etc/passwd中不存在的用户
nogroup:寻找在etc/group中不存在的用户组
//PS:若一个文件从网上下载来,或者etc/passwd下把一个用户删了,这时候才会出现无主的文件,才可能使用到最后两个参数

option与action的第三种取值:
name 文件名:根据文件名查找
size [+-] SIZE:查找比SIZE大/小的文件
type TYPENAME:查找文件类型是TYPE的文件,文件类型有:f(普通文件)\b\c\s\d\l\p
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015年06月02日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文件/目录的默认权限和隐藏权限
  • 文件的默认权限umask
  • 文件的隐藏属性
  • 查看文件的类型:file
  • 命令与文件的查询
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档