0319 第四次课:文件目录管理2

别来无恙 提交于 2020-02-29 17:49:07

文件目录管理2

一、文件特殊权限

 

  • 隐藏权限lsattr_chattr

     

  1. 设置隐藏权限

    命令:chattr 用来修改文件系统的权限属性

    chatrr 只有 root 用户可以使用,用来修改文件系统的权限属性,建立凌驾于 rwx 基础权限之上的授权。

  • 常用参数及权限说明:

    参数 参数说明
    + 增加权限
    - 删除权限
    = 等于某权限
    属性 对象 属性说明
    i 文件 不允许对文件进行增、删、改操作
    i 目录 只能对目录下的文件中的数据进行操作,不能新建和删除文件
    a 文件 只允许对文件进行增加数据,不能进行修改和删除
    a 目录 只能在目录下新建和修改文件,不能进行删除文件
  1. 查看隐藏权限

    命令:lsattr 查看文件或目录的隐藏权限

    常用参数说明:

    参数 参数说明
    a 显示所有的文件或目录,包括隐藏的
    R 递归显示目录文件及子目录下的文件
  • 示例
  1. 测试i属性文件权限

    新建一个测试文件,使用chattr +i 赋予i权限,使用lsattr命令查看

    对此文件进行删除、改名、修改操作

    

  1. 测试i的目录权限

    新建一个测试目录,使用chattr +i 赋予i权限,使用lsattr命令查看

    在该目录下进行新建删除文件

    对该目录下已经存在的文件进行数据修改

  2. 测试文件a权限

    新建一个测试文件,添加a权限,并进行删除修改操作


     

  3. 测试目录a权限

    新建一个目录添加a权限,在该目录下进行新建、删除、修改操作

 

  • 特殊权限-set_uid

    1.什么是set_uid权限?

    通过上图可以看到passwd这个命令的权限是rwsr,多了一个s权限,这个s就是set_uid权限。

    2.set_uid的作用

    set_uid的作用就是让普通用户临时拥有某个命令所有者的权限。如普通用户进行修改密码需要/etc/passwd和/etc/shadow的权限,但是它们所有者是root,普通用户没有权限,这时把它们加上set_uid让普通用户临时拥有权限就可以就行密码修改操作了。

    3. 设置set_uid权限

    使用普通用户使用ls命令查看root目录

    可以看到,普通用户ls加上set_uid权限就临时拥了有查看root目录的权限,而没有加上set_uid的cd就没有进入root的权限

    4.其它知识点

    ls加上了set_uid权限,没有了x权限为什么还能执行?

    因为s权限就有x的权限,所以root可以执行,其它用户本身就有x的权限所以可以执行。  

  • 特殊权限-set_gid

    set_gid和set_uid类似,它不仅仅可以作用在文件上还可以作用在目录上,当它作用于文件时和set_uid类似。当它作用于目录时,任何用户创建子目录或文件时的所属组都和该目录的具有的所属组保持一致。

    1.在目录上赋予s权限测试

    新建一个123目录,并在123目录下创建一个1.txt文件,查看它的所属组是root

    给123目录加上s权限,并修改所属组为wxy。新建一个2.txt文件,然后查看2.txt所属组为wxy。说目录明加上set_gid权限后,创建子目录或文件时的所属组都和该目录的具有的所属组保持一致。

  • 特殊权限-stick_bit

    stick_bit的权限是防删除(root用户除外),只作用于目录。

    系统中/tmp就是一个stick_bit权限目录。t就是stick_bit权限

    1.stick_bit权限的作用

    tmp是系统的临时文件目录,所有的用户在该目录下都拥有777权限,可以任意创建、修改、删除文件。那如果用户A在该目录下创建了一个文件,用户B将该文件删除了,这种情况我们是不能允许的。为了达到该目的,就出现了stick bit的概念。它是针对目录来说的,如果该目录设置了stick bit,则该目录下的文件除了该文件的创建者和root用户可以修改,其它用户只能修该不能进行删除,这就是它的作用。

    2.设置stick_bit权限

    新建一个/test目录,赋予stick_bit和777权限,切换到wxy用户并在/test下新建一个1.txt

    再切换到wxy02用户,进行删除/test/1.txt,发现无法删除。

二、软连接/硬链接

  • 软连接

    软连接类似于windows中的快捷方式。软连接就是一个连接文件,它会指向另外一个文件或目录。

    1.创建软连接

    命令: ls -s 源文件 目标文件

    软连接注意事项:

    (1)源文件删除或者改名后,软连接会失效。

    (2)尽量使用绝对路径

    (3)删除软连接目录时,路径后面不要加/ ;

    创建一个软连接,源文件为/home/test/1.txt 目标文件为/root/11.txt

    2.软连接的用处

    节省磁盘空间,连接文件本身很小。如想使用某个大文件,但是需要改名但是源文件又不能删除,这时cp就非常占用空间,软连接就可以解决这种问题.

  1. 使用场景

    如/boot/下有个run.log一直在写入系统日志,但是boot空间快要满了,但是其它目录还有很多空间。这时就可以cp /boot/run.log /xxx/run.log ,然后删除/boot/run.log ,然后再做个软件连:ln -s /boot/run.log /xxx/run.log

  • 硬链接

    学习硬链接之前,先来了解下:inode:

    在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号号也叫inode。

    如果创建的新文件和另外一个文件的inode相同,那它们就是互相为硬链接。

    注意点:

    (1)硬链接无法作用于目录,只能对文件。

    (2)硬链接无法跨分区。

    (3)硬链接不占用双份空间。

    (4)硬链接可以删除,但是最少留一个inode。

    创建硬链接:

    ln 文件1 文件2 这种方式就是创建硬链接。

    创建完成后使用ls -i(查看文件inode),可以看到它们inode号相同。

三、find命令

   find命令是用来查找文件的命令。

   除了find还有一些其它不常用的查找命令:whereis、locate。这些命令都不常用这里就不多介绍,主要还是find命令。

  • 终端上快捷键操作

    快捷键 说明
    Ctrl + l 清屏
    Ctrl + u 删除光标前的
    Ctrl + d 删除光标后面的
    Ctrl + e 光标挪到最后
    Ctrl + a 光标挪到最前面
  • find 详细介绍

    语法: path -option [ -print ] [ -exec -ok command ] {} ;

    find 常用选项说明:

    表达式 说明
    type 文件类型,如d:目录,f:文件,l:连接符等
    size 按文件大小进行查找,常用单位:k, M, G
    name 安文件名称进行查找
    atime n 按文件最后访问时间查找文件,-n指n天以内,+n指n天以前
    mtime n 按文件最后改变时间查找文件,-n指n天以内,+n指n天以前
    ctime n 按文件最后修改时间来查找文件,-n指n天以内,+n指n天以前
    amin n 按文件最后访问时间查找文件,-n指n分钟以内,+n指n分钟以前
    mmin n 按文件最后改变时间查找文件,-n指n分钟以内,+n指n分钟以前
    cmin n 按文件最后修改时间查找文件,-n指n分钟以内,+n指n分钟以前
  • 扩展知识点

    stat命令,用于显示文件或文件系统的详细信息。主要用来查看文件的时间戳。

    使用stat命令查看到文件有三个时间戳:

    Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间

    Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。

    Change Time:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如大小,权限,Blocks数。

  • find命令示例:

  1. 查找指定目录下以.txt结尾的文件

    find /home/ -name "*.txt"

  2. 查找指定目录下以.txt或.sh结尾文件

  3. 查找指定目录3天以前修改过的文件

  4. 查找指定目录3天以前查看过的文件

  5. 查找3天以内修改过的文件

  6. 目录下有1/ 2/ 3/这几个目录,忽略其中2/目录进行查找包含*.txt的文件

    find . -path ./2 -prune -o -type f -name "*.txt" -print

  7. 查找大于10k的文件

  8. 查找大于20M的文件

  9. 查找大于10k的文件,并删除

    find /home/ -type f -size +10k -exec rm {} \;

  10. 查找30天以前的*.txt文件,并改名为*.txt.bak

    find /root/ -type f -name "*.txt" -ctime +30 -exec mv {} {}.bak \;

    改完名后再进行查找

四、关于文件的其他知识点

  • 文件类型

一谈到文件类型,大家就能想到Windows的文件类型,比如file.txt、file.doc、file.sys、file.mp3、file.exe等,根据 文件的后缀就能判断文件的类型。但在Linux一个文件是否能被执行,和后缀名没有太大的关系,主要看文件的属性有关。但Linux文件的后缀名还是有必要的,特别是我们自己创建一些文件,最好还是加后缀名,这样做的目的是仅仅是为了我们的在应用时方便。

  • windos和linux互传文件

    使用lrzsz工具进行文件传输,这个只能在xhsell和secureCRT使用

    安装:

    yum -y install lrzsz

    linux传windos:

    命令:sz 文件名

    sz +文件名,选择windows存放的目录,点击回车即可

    会提示传输完成

    windos传linux

    命令:rz

    使用rz就会打开windows文件窗口,选择文件点击“打开”即可

五、课堂笔记

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!