第二章文件、目录管理(补)

  • 第二章文件、目录管理(补)
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.28 第三次课堂笔记
 
 
2.17 隐藏权限lsattr/chattr
 
chattr  +i   文件/目录      
 # 如果是更改目录隐藏权限,不影响该目录下的文件进行操作
#加i表示不能更改,不能追加,不能改名字,不能改时间,不能删除
 
chattr   +a    文件/目录               
 #加a表示可以追加,可以改时间,不能更改、删除、重命名(类似log日志)
 
ps:
编辑文件的时候回产生一个缓存文件,在你保存文件的时候缓存文件会覆盖原来的文件,因为加了I隐藏权限保存不了,缓存文件无法覆盖,所有会保存出一个带波浪号的缓存文件
 
lsattr     文件                          #查看隐藏权限
#正常文件的隐藏权限为空的
 
lasttr   目录             #看当前目录下第一层的不隐藏文件的隐藏权限
 
lsattr -R    目录     #看当前目录的所有不隐藏文件的隐藏权限
 
lasttr -d    目录       #查看目录本身的隐藏权限
 
[root@localhost ~]# lsattr -d 123
---------------- 123
 
lasttr -a     目录    #看当前目录的所有文件(包括隐藏文件)的隐藏权限
 
 
2.18 特殊权限set_uid(作用于所有者)
#让普通用户执行命令时,临时拥有该命令所有者的身份
#set_uid使用前提:文件是一个二进制文件(带颜色的文件)且可执行
 
添加set_uid权限
chmod  u+s    文件(命令绝对路径)
普通用户没有打开/root/的权限
将ls命令添加set_uid 权限
然后普通用户在尝试一次,成功打开了
 
#当文件的所有者添加set_uid权限时,没有执行权限,s会变成S
 
#但是普通用户使用set_uid权限时,他们有执行权限时,大写S不影响操作
 
2.19 特殊权限set_gid(作用于所属组)
1、当权限附加给文件时,普通用户时拥有所属组的身份
2、当权限附加给目录时,普通用户时拥有所属组的身份,且在该目录下创建的子文件/目录的时候,创建子文件/目录的所属组与父目录的所属组保持一致
当目录有set_gid权限时,该目录下创建的子文件/目录的所属组与父目录保持一致
 
chmod g+s   文件或者目录
 
 
 
2.20 特殊权限stick_bit(作用于普通用户)
(该特殊权限在/tmp/目录下)
#又叫防删除位t,防止别人删除自己的文件(root用户除外)(可更改、创建、查看,不能删除,)
 
[xin@localhost tmp]$ touch 1.txt
[xin@localhost tmp]$
[xin@localhost tmp]$ ls
1.txt
host.txt
[xin@localhost tmp]$ rm host.txt
rm:是否删除有写保护的普通文件 "host.txt"?y
rm: 无法删除"host.txt": 不允许的操作
xin@localhost tmp]$ vi hsot.txt
[xin@localhost tmp]$ mv hsot.txt host.txt
mv:是否覆盖"host.txt",而不理会权限模式0644 (rw-r--r--)? y
mv: 无法将"hsot.txt" 移动至"host.txt": 不允许的操作
 
 
普通用户是否能删除其它普通用户的目录下的子目录/文件,靠父级目录的权限决定
例:用户xin再/tmp/创建目录xin,权限为 777;用户user1访问/tmp/xin/,
 
 
2.21 软链接文件
 
软链接(可以跨分区)
ln -s  原本目标  软链接目标          #原本目标内存大,换成软链接后内存小
 
df -h      #可查看挂载点空间占用情况
 
软链接实例
#将一个由于内存大导致这分区空间满了的文件,通过软链接,将空间释放
 
首先cp一份内存大的文件到空闲的磁盘下,然后删除该文件,然后通过软链接将在空闲磁盘下的文件放回原来磁盘,由于软链接文件占用内存下小,所以空间就被释放了
 
 
2.22 硬连接文件
 
硬链接 (硬链接文件比较难找)         
 
ln  原文件  硬链接文件                   #硬链接文件直接创建       
 #不能硬链接目录;硬链接文件不能跨分区;可删除
#硬链接文件不占用空间,因为与原文件用同一个inode
 
ls  -i                     #查看ionde号
 
 
2.23/2.24/2.25 find命令
 
ps:其他几种搜寻命令
which                      #通过PATH查找
[root@xinlinux-01 ~]# which ls
alias ls='ls --color=auto'
    /usr/bin/ls
[root@xinlinux-01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
 
whereis              #在准备的一个库里面找
[root@xinlinux-01 ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
 
locate
yum install -y mlocate      安装locate     
updatedb                          #手动生成数据库
locate   文件
 
常用快捷键
CTRL +l  #把光标定位到第一行          CTRL +d      #退出终端
CTRL +u #将光标前面的全删掉         CTRL +e       #将光标定位到行尾
CTRL +a  #将光标定位到行首
 
 
1、find  目录   -name “文件名或部分”              #name查找文件名      
 
2、find  目录   -type  -d/f /l/b/c             #type指定类型
d    目录       f   文件     l     软连接      b   块设备文件      c  字符串设备文件  
 
3、
-atime                          #访问时间
-mtime                        #最近更改(改内容)
-ctime                        #最近改动(改内容、权限、名字、inode号、大小)
 #更改文件内容ctime一定会变
stat  文件                   #查看文件mtime,atime,atime
 
追加修改了文件内容,所以mtime会变化;也更改了文件大小:所以ctime也会变化。
 
修改文件权限只涉及到了inode属性更改,不会更改文件内容,所以更改文件权限mtime是不会变化的
 
find  目录  -mtime    +1                     #+1表示大于一天的;-1表示小于一天的
 
#多个条件可以一起使用查找(但是条件是且)
在条件之间加 -o 就是或者
例:find /etc -type f -o -mtime -1 -o -name "sshd"
       find /etc -type f    -mtime -1     -name "sshd"
 
补充:时间单位更小 -mmin  -数字                       #表示分钟
 
[root@localhost ~]#
[root@localhost ~]# find /root/ -type f -cmin -60
/root/3.txt
[root@localhost ~]#
 
4、-inum              #指定inode号
find  -inum  33608749
 
[root@localhost ~]# find /root/  -inum  33608749
/root/3.txt
[root@localhost ~]#
 
5、-exec   加命令                            #选项
  -exec  ls  -l   {}   \ ;                     #{}表示find出来的列表之一,一个{},表示一个文件位
find  /root/  -type f  -mmin  -150  -exec   mv {} {}.bak \;
 
 
6、-size                             #文件大小
-size  +10k/M                                #大于10k/M
 
 
2.26 文件名后缀
.conf   配置文件                         .gz   压缩包
.txt     普通文本文档 
 
date          #显示时间
 
系统语言
$LANG=EN                       #表示英文
$LANG=zh_CN.UTF-8      #都表示中文  (使用中文需要有中文的支持(也就是装系统的时候选择中文))
 
echo $LANG                              #查看系统语言
LANG=en                                  #系统改为英文
LANG=zh_CN.UTF-8                   #系统改为中文
 
 
2.27linux和windows互传文件
 
yum install -y lrzsz           #安装lrzsz工具(需要xshell才能传或securecrt(putty不支持))
 
sz    文件名                       #将文件传到windows
 
rz                                     #将Windows的文件选择传到Linux
 
 
2.28第三次课堂笔记
第三次课堂笔记7.28
第二章
博客
学习 mark down 语法  ,界面会美观
 
一、文件目录结构
/bin/ /sbin/  /usr/bin/  /usr/sbin/ :用来储存系统命令的文件目录
/boot/ : 系统启动相关文件目录(Grub)
/lib/ :/库文件目录(ldd查看命令依赖的库文件,例:ldd/bin/ls)
/home/:用户家目录
/media/:媒介目录(默认为空)
/mnt/:临时挂载目录
/opt/:空目录
/proc/:系统启动进程目录
/run/:一些用户产生的临时文件(开机关机都会消失的文件)
/srv/:空目录(存服务产生的一些文件)
/sys/:有系统内核文件
/tmp/:系统的临时目录(任何目录都可以在里面读写)
/usr/:存储用户文件
/var/:存储系统日志(/var/log/messages系统重要日志存储的地方)
 
描述所有目录的作用,图片如下
 
二、ls命令
ls -l  缩写为ll
 
三、文件的类型
文件权限第一个表示:
“-”:为普通文件
“d”:为目录
“l”(粉绿色):软连接文件
“c”的为字符串设备是黄色的,
“b”的为块设备文件 (光盘磁盘)
“s”表示的是用来通信的(紫红色)
 
四.使用别名代替命令的三种方法
例:/root/abc/123
1、添加到PATH
将/tmp/加入到PATH内,然后cp /root/abc/123到/tmp/目录下,cp过程可随意命名,cp /root/abc/123  /tmp/xin ,然后就可以直接使用xin或者/tmp/xin 代替/root/abc/123
 
2、使用alias    alias   别名= '原本命令路径'
alias xin=’/root/abc/123‘
 
3、使用软连接:  ln     
ln /root/abc/123   xin
 
五.cp命令
#cp文件过程可以改名字
 
#一个大于号“>”的作用是重置
 例      cat   1.txt    >    2.txt
#将2.txt的内容清空,1.txt的内容放入    
 
六.facl工具使用,总结一篇笔记

备份与恢复 Linux 文件权限

一个系统管理员菜鸟不小心输入“chmod -R 777 /”从而导致了巨大的悲剧,使得整个系统遭到了严重破坏。在日常管理与使用中,有许多工具可以用来备份文件,同时保持权限,如cp、rsync、etckeeper等。但如果只是想暂时备份文件权限(而不是文件本身),例如:为了阻止一些目录的内容被覆盖,暂时移除该目录下所有文件写的权限;或者需要排除文件权限问题,在过程中需要对文件进行权限临时的修改。在这些情况下,我们可以在原始文件权限改变之前对其进行备份,一会我们需要它的时候再将原始权限还原。在很多情况下,如果你只是想要备份文件的权限,那么完整的文件备份是不必要的。
在Linux系统上备份和恢复文件权限是很容易的一件事情,Linux系统利用访问控制列表(ACL)来管理文件访问权限。安装ACL工具,就可以备份与恢复Linux的文件权限。

安装ACL工具

sudo apt-get install acl

备份当前目录下(包括所有子目录)的所有文件权限

getfacl -R . > permissions.txt
这条命令将所有文件的ACL信息写入到名为permissinos.txt的文件中。
查看保存文件的格式:
cat permissions.txt
# file: .
# owner: tmacy
# group: tmacy
user::rwx
group::r-x
other::r-x
 
# file: .git
# owner: tmacy
# group: tmacy
user::rwx
group::r-x
other::r-x
 
# file: .git/branches
# owner: tmacy
# group: tmacy
user::rwx
group::r-x
other::r-x
.
.
.
可以看到,每个文件都保存了其名称,所有者,所在的用户组,所有者权限,所在组权限,其他人权限。

恢复原有的权限

当文件权限意外被修改,就需要用到permissions.txt文档来恢复权限。
setfacl --restore=permissions.txt

分享时的访问控制权限

默认情况下你需要确认3个权限组:owner、group和other。而使用ACL,你可以增加权限给其他用户或组别,而不单只是简单的“other”或者是拥有者不存在的组别。可以允许指定的用户A、B、C拥有写权限而不再是让他们整个组拥有写权限。ACL支持多种Linux文件系统,包括ext2, ext3, ext4, XFS, Btfrs, 等。
安装ACL完成后,需要激活我们磁盘分区的ACL功能,这样我们才能使用它。
使用mount命令,可以查看当前挂载的分区是否已经开启acl功能。如果没有开启,需要修改fstab文件,在需要开启acl的分区前加入acl标记。
重启后,可以给要分享的目录设置不同用户访问权限。例如:
分享这个目录给其他两个用户test和test2,一个拥有完整权限,另一个只有读权限。
sudo setfacl -m u:test:rwx /shared
现在用户test可以随意创建文件夹,文件和访问在/shared目录下的任何地方。
我们给test2 只读权限:
sudo setfacl -m u:test2:rx /shared
注意:读取test2目录需要可执行权限。
解释下setfacl命令格式:
  • -m 表示修改ACL。你可以增加新的,或修改存在的ACL
  • u: 表示用户。你可以使用 g 来设置组权限
  • test 用户名
  • :rwx 需要设置的权限
这时查看shared目录的acl:
sudo getfacl /shared
 
# file: /shared
# owner: tmacy
# group: tmacy
user::rwx
user:test:rwx
user:test2:r-x
group::rwx
other::r-x
如果需要移除acl:
sudo setfacl -x u:test /shared
如果想要立即擦除所有AC
posted @ 2018-07-28 20:00  最爱吃菜  阅读(230)  评论(0编辑  收藏  举报