文件权限及搜索常用命令

  • chmod :change the permissions mode of a file 更改文件的权限模式
    1. chmod [ugoa +-= rwx] [文件名]
    2. 权限数字 一般都用数字
      $r = 2^2 = 4$
      $w = 2^1 = 2$
      $x = 2^0 = 1$
      -rwxrw-r--
      _7 _6 _4
    3. 改变目录权限,子目录权限不会改变,需要递归修改 (recursive)
      mkdir -p /tmp/a/b
      chmod 777 /tmp/a 发现子目录权限并没有改变
      chmod -R 777 /tmp/a 递归处理,所有文件及子目录一并处理

文件权限和目录权限对比

  • 文件
read 读文件(cat less head tail more)
write 写入文件
execute 执行文件
  • 目录
read 查看目录 列出目录内容
write 修改目录 在目录中创建、删除文件
execute 执行目录 进入目录
  • 删除文件的前提是目录有write的权限才行 (类比房间和桌椅)

  • chown (change file ownship) 改变文件拥有权

    1.chown xxx /tmp/Japan

  • chgrp (change file group ownship)改变文件的所属组

    1. chgrp xxx /tmp/Japan
  • 文件创建的所属组是缺省组

  • umask :the user file-creation mask用户文件创建掩码

    1. 功能:显示、设置文件的缺省权限
    2. 缺省创建的文件不能有可执行权限,所以文件默认少了x
    3. umask -S 字符显示掩码
    4. umask 8进制掩码
    5. 默认掩码是0022,默认权限755 = 777(最高权限) - 掩码022 umask abc,所以默认权限是755

文件搜索

  • find path -option [ -print ] [ -exec -ok command ] {} \;
  • find /etc -name init -exec ls -l {} \;
  • find [搜索范围] [匹配条件]
    1. find / -name 根目录下搜索,类似win全盘搜索
      • find /etc -name init
      • find /etc -name *init*正则表达式内容,所有包含init的文件
      • find /etc -name *init(init*) 前/后 包含
      • find /etc -name init??? 后面三个字符内容不知道
    2. find /etc -size +204800(100mb)查找大于100mb的文件
      • linux1个数据块大小是0.5kb,+代表大于,-代表小于
    3. find /home -user root根据所属组的查找
    4. find /etc -*min +time根据时间查找
      • find /etc -amin +10 access 10分钟前被访问过的文件
      • find /etc -cmin +10 change 10分钟前属性被修改过的文件
      • find /etc -mmin -10 modify 10分钟内 内容被修改过的文件
    5. find /etc -size +2048 -a -size -204800 -a :and 并且 注意到还是要加上-size
      • find /etc -size +2048 -o -size -1024 -o :or 或者
    6. -type 文件的类型
      • f :file 文件
        d :directory 目录
        l :link 软链接
        find /etc -name init* -a -type f 文件名以init开头且类型是文件
        find /etc -name init* -o -type d 文件名以init开头且类型是目录
    7. find /tmp -inum 30000 根据文件inode查找

其他搜索

  1. locate xxx文件资料库查找文件,找不到可能不在收录范围之中
    (速度快)
  2. which ls查找命令目录及别名信息
  3. whereis ls 查找命令目录及帮助文档
  4. 在文件中找字符串
    grep :(global regular experssion print:全局正则表达式打印)
    grep multiuser /etc/inittab
    grep -i multiuser /etc/inittab (-i 一般是不区分大小写ignore)

  • 链接命令
    -a
    -o

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!