隐藏权限lsattr/chattr,特殊权限set_uid,特殊权限set_uid,特殊权限stick_bit,软连接文件,硬连接文件

隐藏权限 lsattr/chattr

  • chattr能够修改隐藏权限
  • lsattr能够查看隐藏权限
  • 给文件增长 i 权限,chattr +i 1.txt
  • 增长i权限后,文件就不能编辑,不能追加内容,不能修更名称,不能删除,也不能touch修改时间
  • 1.txt增长i权限后,不能编辑写入内容,刚才用vi编辑了该文件
  • 1.txt~ 是缓存文件,编辑1.txt的时候会先把内容写入1.txt~缓存文件
  • 保存的时候再把1.txt~的内容覆盖到1.txt上面,而后系统自动删除1.txt~文件
  • 可是由于1.txt是不能写入的,因此系统就把1.txt~这个缓存文件保留了
  • 使用chattr -i 1.txt 就能够把i权限去掉
  • chattr +a 1.txt 能够增长a权限
  • a权限也是不能编辑内容,删除,重命名,可是能够追加内容,touch修改时间
  • head -n2 /etc/passwd >> 1.txt 就是把passwd头两行内容追加到1.txt内容后面
  • chattr -a 1.txt 能够去掉a权限
  • lsattr 111 只能查看111目录下面的子文件子目录
  • 想查看111目录自己须要使用-d参数,lsattr -d 111
  • 给目录增长i权限,也是没法修改,也就是说不能建立子文件子目录,删除,重命名,touch修改时间
  • 目录增长a权限,能够建立子文件子目录,也能够修改子文件子目录
  • 目录增长i权限,不能建立新的子文件子目录,可是能够修改里面已经存在的子文件子目录
  • lsattr 只能查看当前目录下的子文件子目录
  • 使用 -R 参数能够把当前目录下全部层级子文件子目录都显示出来
  • 使用 -a 参数能够显示全部隐藏文件
  • 使用 -d 参数能够只显示本身自己,不显示子文件子目录

特殊权限 set_uid

  • 如图,原本应该是rwx的权限,如今变成 rws,s就是特殊权限
  • set_uid 能够赋予文件特殊权限 s
  • s权限可让普通用户临时拥有该文件全部者的身份
  • 设置s权限有前提条件,必须是二进制文件,必须是可执行文件
  • 系统内有s权限的文件很少,目前只有 /usr/bin/passwd 文件拥有
  • passwd文件是用来更改密码,为了让普通用户拥有更改密码的权限,因此设置了s权限
  • chmod u+s /usr/bin/ls 给ls文件添加了s权限
  • 那么普通用户使用ls文件的时候,就会临时拥有ls命令拥有者的身份的权限,也就是说root的权限
  • 使用 chmod u-s /usr/bin/ls 取消掉ls文件的s权限
  • 也可使用 chmod u=rws /usr/bin/ls 修改文件权限
  • 这样权限就会变成 rwS,大写S是由于缺乏了x权限
  • chmod u+x /usr/bin/ls 添加上x权限后,大写S就变成了小写s
  • set_uid 是指在文件执行阶段拥有文件全部者的操做权限
  • 若是一个文件普通用户没有执行权限,也就是不能进入执行阶段,那么s权限就没用了
  • 如图,ls文件普通用户是拥有x权限的,进入执行阶段就会临时拥有root权限

特殊权限 set_gid

  • 使用 chmod g+s /usr/bin/ls 将ls文件的用户组权限增长了s权限
  • 普通用户执行ls命令时,会得到ls文件所属组的权限
  • ls文件所属组是root组,普通用户执行ls文件时就拥有root组的权限
  • 设置了所属组s权限后,文件背景颜色变成了黄色
  • 若是对一个目录set_gid的话,该目录下面建立的子文件子目录的所属组会跟该目录保持一致
  • 对234目录set_gid,而后将所属组更改为user1
  • 而后在234目录下面建立文件aminglinux,该文件所属组也是user1
  • 因此目录设置了set_gid之后,下面再建立子文件子目录所属组就跟该目录同样了

特殊权限 stick_bit

  • 系统有一个目录拥有stick_bit权限,就是 /tmp/
  • 如图,显示为t的就是stick_bit权限,也叫作防删除位
  • stick_bit能够防止别人删除本身文件的权限,root用户除外
  • 好比 /tmp/ 有stick_bit 权限,那么/tmp/里面的文件就不能被删除,除了root和文件全部者
  • 好比用户aming在/tmp/建立一个文件1.txt
  • 而/tmp/目录自己的权限是其它用户能够读写执行的
  • 那么用户user1或者其它用户就能够读写执行1.txt
  • 而/tmp/增长stick_bit权限后,1.txt也能够被其它用户读写执行,可是就不能删除了
  • 除了root和文件全部者

软连接文件

  • 这就是软连接文件,/bin文件就是软连接文件,真正的文件是 usr/bin
  • 软连接文件里面存了另一个文件的路径
  • 执行软连接文件,真正执行的是存在里面的路径的文件,相似快捷方式
  • 软连接文件的大小跟路径长短有关,越长就越大
  • 如图 ln -s /tmp/yum.log /root/111/yum.log 制做/tmp/yum.log的软连接指令
  • 真实文件路径是 /tmp/yum.log , /root/111/yum.log 是软连接文件所在的路径
  • 也能够制做目录的软连接文件,如上图所示
  • 真实目录路径是 /tmp/aming2 ,软连接文件路径是 /root/111/aming3
  • 软连接文件也可使用相对路径,可是容易出问题,因此尽可能使用绝对路径制做软连接文件
  • 案例,软连接实际应用,有一个log文件被不断写入,不断增大,磁盘空间不足了
  • 可是log文件是不能删除的,只能不断写入,而写入的路径也是不能改变的
  • 这时候能够把log文件拷贝到一个足够大的磁盘里面,把原来的log文件删除
  • 而后在原来的路径处作一个软连接文件连接到log文件实际所在的路径去
  • 这样就能够不改变log写入路径的状况下,把真实的log文件移到空间大的磁盘去
  • 软连接不能删除源文件,删除了软连接就无效了

硬连接文件

  • 作硬连接的方法 ln 1.txt 1_heard.txt
  • 源文件是 1.txt, 1_heard.txt 是硬连接文件
  • 查看 inode 号,1.txt和1_heard.txt文件的inode是同样的
  • 这表示他们指向硬盘中的同一个位置
  • 这两个文件都显示为2,说明使用相同的inode号的文件有两个
  • 无论谁是源文件,硬连接文件之间相互为硬连接
  • 目录是不能作硬连接的,文件才能够,可是不能跨分区作硬连接
  • 好比系统作了两个分区,c盘和d盘,只能在c盘内作硬连接,不能在d盘内作c盘文件的硬连接
  • 由于两个分区之间inode系统是独立的
  • 在d盘作一个对应c盘inode 74号地址的硬连接,可是d盘自己也有inode 74号的地址存在
  • 这时候就没法区分74号对应c盘仍是d盘,所以系统规定不能跨分区作硬连接
  • 硬连接指向同一个inode,因此无论操做哪一个硬连接,实际是操做同一个文件
  • 同一个文件的硬连接能够删除,若是还有别的硬连接的话
相关文章
相关标签/搜索