2.17 隐藏权限lsattr/chattr
2.18 特殊权限set_uid
2.19 特殊权限set_gid
2.20 特殊权限stick_bit
2.21 软链接文件
2.22 硬连接文件
2.23/2.24/2.25 find命令
2.26 文件名后缀
2.27linux和windows互传文件
2.1查看普通权限可以使用ll命令
chattr lsattr 这两个主要是针对文件的隐藏属性的更改或者操作查看:
chattr 增加或者减少隐藏的属性,lsattr查看是否有隐藏属性
这里着重查看属性i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容,i参数对于文件系统的安全设置有很大帮助。
例如我们给1.txt加上一个+i的权限
chattr +i 1.txt 加上权限,这时候则不能删除,修改,mv移动等操作
这时候ll也查不到是为什么的,我们用lsattr 1.txt查看文件发现这里有一个i 属性
那么去掉i属性之后则可以正常的写入或者删除操作
使用命令chattr –i 1.txt
应用场景实例:例如让web服务器只允许写入,不允许删除等用+a属性,这时候的日志则只能增加,不能删除
a 属性,则是只能追加属性,意为原来的数据保持,继续往里面追加文件,覆盖写入 ,例如这里我们给2增加a属性,看到可以继续写入2,但是无法对2.txx移动等操作。
常用案例:给linux日志记录加上a属性
chattr +a /var/log/messages
lsattr !$
其他参数比较好理解,这里不做举例:
[root@localhost ~]# chattr --help
Usage: chattr [-RVf] [-+=aAcCdDeijsStTu] [-v version] files...
参数或选项描述:
-R:递归处理,将指定目录下的所有文件及子目录一并处理。
-V:显示详细过程有版本编号。
-v:设定文件或目录版本(version)。
+ :在原有参数设定基础上,追加参数。
- :在原有参数设定基础上,移除参数。
= :更新为指定参数设定。
A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑
磁盘I/O错误的发生。
S:硬盘I/O同步选项,功能类似sync。
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志
文件安全,只有root才能设定这个属性。
c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
d:即no dump,设定文件不能成为dump程序的备份目标。
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件
j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback
挂载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数
为 data=journal,则该参数自动失效。
s:保密性地删除文件或目录,即硬盘空间被全部收回。
u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion.
各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设
定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE
处理能力(标识)的进程能够施加该选项。
lsattr [-RVadlv] [files...]
-R:递归列示目录及文件属性。
-V:显示程序版本号。
-a:显示所有文件属性,包括隐藏文件(.)、当时目录(./)及上层目录(../)。
-d:仅列示目录属性。
-l:(此参数目前没有任何作用)
2.18 特殊权限set_uid
创建s和t权限 是为了让一般客户执行某些程序,能够暂时具有该程序的所有者权限
注意这里s和t属性只针对二进制文件,也就是一般的可运行程序,对目录无效。
ls –al /usr/bin/passwd ,看到-rwsr 这里是s的属性
带有s的
这里加s权限 ,代表用户拥有root权限,或者暂时获取文件拥有者root的权限
Which ls找到ls目录
chmod u +s /usr/bin/ls 程序执行者能拥有root用户下 ls 的s权限
例如进入到其他账户zhao下,使用ls /root/会提示权限不够
我们给root下的ls给于他一个s权限
再用ls /root/则不在提示错误,这时候zhao拥有了root用户的ls权限
2.19 set gid
执行该文件的用户会临时以该文件所属组的身份执行,类似于uid
目录被设置权限之后,任何用户在此目录下创建的文件或者目录都具有和该目录所属的组相同的组:
例如
mkdir testdir
ll 查看到文件夹属于root组下
chown :zhao testdir/ 修改数组, 发现已经改变到zhao的组下
mkdir testdir/666 我们往源文件下创建一个666的文件
ll –R
看到666的文件所属是root ,我们在给testdir的文件夹加上
chmod g+s testdir/ g=group的意思,重新增加一个667的文件夹
mkdir testdir/667 对比
发现一个属于组root,一个属于用户zhao, 这个就是区别
注意案例如果记录linux的log,最好级联,例如:
chmod -R 4755 /var/log/最好加个个-R级联模式
总结说明:
如果s的权限是在用户组,那么就是Set GID,简称SGID。SGID可以用在两个方面:
1 文件:如果SGID设置在二进制文件上,无论用户是谁,在执行该程序的时候,它的有效用户组将会变成该程序的用户组所有者;
2 目录:如果SGID是设置在A目录上,则在该A目录内所建立的文件或目录的用户组,将会是此A目录的用户组。
2.20 特殊权限stick_bit
SBit一般用于目录上,对文件的意义不大。SBit对目录的作用是:在具有SBit的目录下,用户若在该目录下具有w及x权限,则当用户在该目录下建立文件或目录时,只有文件拥有者与root才有权利删除。SBit可以理解为防删除位
例如tmp 下zhao中
/home/zhao
touch zhao.txt
chmod o+t test.txt 增加t权限
ll 查看
这里有-T的参数 只允许zhao和root用户才能删除
我们切到user1上尝试一下
发现user1是无法删除。
换个账户登录,用usr1则无法删除tmp目录下对应的文件
这里加权限的目的是防止除了本数组之外的其他非root用户删除修改等操作
总结说明:
粘滞位(Sticky bit),或粘着位,是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。
2.21 硬链接文件
先了解inode 索引节点,一个分区中一个文件对应一个inode,包含所有文件的信息
inode会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。
df -i 可以查看inode数,如果inode已满的情况下,可以选择删除无用的文件,释放出inode号
除此之外也可以,把文件挪走 然后重新格式化 格式化的时候 指定inode的比例,让它多分一些,再把文件挪回来
一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。
但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。
2.22 硬连接文件与软连接
这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)。
ln 源文件 目标文件 ll -i查看
例如:
硬连接指向到hard-link.1.txt
硬连接中inode号一致
删除操作
rm –rf hard-link.1.txt
ll -i发现删除硬连接对源文件没有任何关系
软连接命令 ln -s 源文文件或目录 目标文件或目录
创建之后 每个都有自己的inode
ll -i出来是2个文件,下图实例是不一样的inode
如果删除掉1.txt,则发现软连接还有inode号,但是是报错的
而删掉软连接,保留原来的1.txt的话则对1.txt是无影响的。
总结:
文件a的内容存储的b的路径,读取文件b的内容
删除文件a只是删除软连接,不影响a, 如果删除b 则a报错
如果关掉soft-link 则inode不变 互不影响
Dentry相当于文件名或者别名
注意的是,硬连接不能跨分区,不能交叉文件系统进行硬链接的创建,不同分区的inode可能一样
每个分区有独立的inode体系,硬链接不可以跨分区
2.23/2.24/2.25 find命令
find path -option [ -print ] [ -exec -ok command ] { } /;
-name filename #查找名为filename的文件
-perm #按执行权限来查找
-user username #按文件属主来查找
-group groupname #按组来查找
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查GIN: 0px">
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
find /data/ -name "*.txt" #查找/data/目录以.txt结尾的文件; *代表任意
find /data/ -name "[A-Z]*" #查找/data/目录以大写字母开头的文件
find /data/ -type d #查找/data/目录下的文件夹;
find /data/ -type f
-size n[c] #查长度为n块[或n字节]的文件
find /data/ -size +1M #查文件大小大于1Mb的文件
find /data/ -size +1M #查文件大小大于1Mb的文件
find /data/ -size 10M #查文件大小为10M的文件;
find /data/ -size -1M #查文件大小小于1Mb的文件
-perm #按执行权限来查找
find /data/ -perm 755 #查找/data/目录权限为755的文件或者目录;
find /data/ -perm +644 #文件权限在644以上;
find /data/ -perm -007 #与-perm 777相同,表示所有权限; #号代表需要运算
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查GIN: 0px">
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
find /data/ -mtime +30 -name "*.log" #查找30天以前的log文件;
find /data/ -mtime +30 -name "*.log" #查找30天以前的log文件;
find /data/ -cmin 30 -name "*.txt"#查找第30分钟改变的log文件。
-exec -ok command ] { } /;