学习记录过程中难免出现错误,如有发现,还望大神们指出。

示例操作部分有的与历史操作有关,如果先前的示例操作没有执行过的话,可能会有部分示例的操作无法执行。示例仅供参考(练习题在附录)。

文件查找:

locate(不常用):非实时,模糊匹配,根据全系统文件数据库进行查找,速度快;

# updatedb, 手动生成文件数据库(非常耗时)

find:实时,精确,支持众多查找标准,遍历指定目录中的所有文件完成查找,速度慢;

命令格式:find 查找路径 查找标准 查找到以后的处理运作

查找路径:默认为当前目录

查找标准:默认为指定路径下的所有文件

处理运作:默认为显示

匹配标准:

-name 'FILENAME':对文件名作精确匹配(严格区分大小写)

-iname 'FILENAME': 文件名匹配时不区分大小写

-regex PATTERN:基于正则表达式进行文件名匹配

-user USERNAME: 根据属主查找

-group GROUPNAME: 根据属组查找

文件名通配:

*:任意长度的任意字符

?

[]

示例:

find /etc -name 'passwd' ―― 在etc下精确匹配文件名是passwd的文件

find /etc -name 'passwd*' ―― 匹配文件名以passwd开头的文件

find /etc -name '*passwd' ―― 匹配文件名以passwd结尾的文件

find /etc -name '*passwd*' ―― 匹配文件名含有passwd字符串的文件

find /tmp -user hadoop ―― 根据属主查找

find /tmp -user student

(用户被删除后,此前该用户创建的文件属主就会修改为该用户的UID)

-uid UID: 根据UID查找

-gid GID: 根据GID查找

-nouser:查找没有属主的文件

-nogroup: 查找没有属组的文件

示例:

su - user1

cd /tmp

touch userone

ls -l

exit

ls -l /tmp

userdel -r user1

ls -l /tmp ―― userone文件的属主、属组显示为UID、GID

find /tmp -uid 5001 ―― 我的系统上UID显示的是5001

/tmp/userone

find /tmp -nouser

/tmp/userone

find /tmp -nogroup

/tmp/userone

-type (根据文件类型进行查找)

f: 普通文件

d:目录

c:字符

b:块

l:链接字

p:管道

s:套接字

示例:

find /tmp -type d ―― 查找tmp下文件类型为目录的文件

find /tmp -type s ―― 查找tmp下文件类型为套接字的文件

find /tmp -type s -ls ―― 进行验证(动作部分在下文)

-size [+|-]  ―― 根据文件大小进行查找(不跟单位默认字节)(“+-” 相当于 “大于小于”)

#k:kb

#M:mb

#G:gb

示例:

find /etc -size 10k -ls (查找etc下大小在9-10k之间的文件)

find /etc -size -10k -ls (查找所有小于10k的文件)

组合条件查找:

-a:与

-o:或

-not :非

示例:

1、

find /tmp -nouser -a -type d -ls ―― 查找tmp目录下没有属主并且类型为目录的文件

find /tmp -nouser -o -type d ―― 查找没有属主或者类型为目录的文件

find /tmp -not -type d -ls ―― 查找非目录类型文件

find /tmp -not \( -type d -o -type s \) -ls―― 查找既不是目录类型也不是套接字类型的文件

2、

rm -rf /tmp/test

cd /tmp

mkdir /tmp/test

cd /tmp/test

touch a b c d

useradd user1

useradd user2

chown user1 a ―― 修改a的属主为user1

chown user2 b ―― 修改b的属主为user2

find ./ -user user1

find ./ -user user2

find ./ -not \( -user user1 -o -user user2 \) ―― 查找属主不是user1,也不是user2的文件

mkdir hello

mkdir hi

chown user1 hi

ls -l

find ./ -not \(-user user1 -a -type d\) 属主不是user1或者不是目录的文件――摩根定律

-mtime #:查找最近一次修改时间距现在#天的文件

-ctime #:查找最近一次改变时间距现在#天的文件

-atime #:查找最近一次访问时间距现在#天的文件

[+|-]#:距离现在[大于|小于]#天

-mmin #:查找最近一次修改时间距现在#分钟的文件

-cmin #:查找最近一次改变时间距现在#分钟的文件

-amin #:查找最近一次访问时间距现在#分钟的文件

[+|-]#:距离现在[大于|小于]#分钟

示例:(在/tmp/test下)

find ./ -amin -5 ―― 查找当前目录下最近一次修改时间距现在小于5分钟的文件

stat hi

stat hello

find ./ -amin +5 ―― 查找当前目录下最近一次修改时间距现在大于5分钟的文件

-perm MODE:通过精确匹配文件的权限查找文件

/MODE: 查找文件权限任意一位与MODE相匹配的文件

-MODE: 查找文件权限能完全包含此MODE的文件

例如:

匹配条件:-644(MODE)

644: rw-r--r--

755: rwxr-xr-x ―― MODE不匹配(只有同样是644才匹配),/MODE匹配,

―― -MODE匹配(rwxr-xr-x包含rw-r--r--)

750: rwxr-x--- MODE不匹配,/MODE匹配,-MODE不匹配

示例:(在/tmp/test下)

find ./ -perm 644

chmod 0-r a

find ./ -perm /644 -ls

find ./ -perm -644 -ls

chmod 006 b

ls -l

find ./ -perm /640

find ./ -perm -001  ―― 查找其他用户有执行权限的文件

动作:

-print: 显示(默认)

-ls:类似ls -l的形式显示每一个文件的详细

-ok COMMAND {} \; 每一次操作都需要用户确认    ―― {}代表前面已经查找到的文件集

-exec COMMAND {} \; 对查找到的文件执行指定命令(不需要确认)

示例:(示例中省略部分ls -l,操作中自行添加检验操作结果)

在当前目录下查找其他用户有wr权限的文件,并撤销其他用户这些文件的w权限:

find ./ -perm -006 -exec chmod o-w {} \;

find ./ -type d -ok chmod +x {} \; ―― 对目录文件添加所有用户的x权限

ls -l

chmod 666 b

chmod 664 d

ls -l

find ./ -perm -020 -exec mv {} {}.new \;对查找到的文件,在其文件名后面添加.new

cd

ls -l

find ./ -name "*.sh" -a -perm -111 -exec chmod o-x {} \; ―― 组合查找+修改权限

ls -l

特殊权限SUID等讲解

SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者;

chmod u+s FILE

chmod u-s FILE

如果FILE本身原来就有执行权限,则SUID显示为s;否则显示S;

SGID: 运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组;

chmod g+s FILE

chmod g-s FILE

Sticky: 在一个公共目录,每个人都可以创建文件,删除自己的文件,但不能删除别人的文件;

chmod o+t DIR

chmod o-t DIR

示例:

1、SUID

ls -l /bin/cat ―― 查看cat的权限设置

ls -l /etc/shadow ―― 查看shadow的权限设置

useradd hadoop

su - hadoop

cat /etc/shadow ―― hadoop没有访问权限

exit

chmod u+s /bin/cat ―― 添加SUID权限给cat

ls -l /bin/cat

su - hadoop

whoami

cat /etc/shadow ―― 此时cat的属主是管理员而不是hadoop,具有管理员权限

exit

chmod u-s /bin/cat

2、

说明:有一个开发团队(develop team),有三个成员(hadoop,hbase,hive),

现希望三个成员可以互相访问、使用同一文件,每个人都可以创建文件、

删除自己的文件,但不能删除别人的文件。

useradd hbase

useradd hive

mkdir /tmp/project ―― 创建项目目录

groupadd developteam ―― 添加开发团队组

chown -R :developteam /tmp/project ―― 修改project的属组

usermod -a -G developteam hadoop ―― 向hadoop追加新的附组developteam

usermod -a -G developteam hbase

usermod -a -G developteam hive

su - hadoop

cd /tmp/project ―― project没有写权限

ls -ld

touch a.hadoop ―― 拒绝执行

exit

chmod g+w /tmp/project ―― 管理员给project添加写权限

su - hadoop

cd /tmp/project

touch a.hadoop ―― hadoop在project下创建文件a.hadoop

exit

su - hbase

cd /tmp/project

touch a.hbase ―― hbase在project下创建文件a.hbase

ls -l ―― a.hadoop、a.hbase的属主属组分别都是是hadoop和hbase

exit

SGID:

chmod g+s /tmp/project/ ―― 给project添加SGID权限

ls -ld /tmp/project/

su - hadoop

cd /tmp/project

touch b.hadoop ―― hadoop在project下创建文件b.hadoop

exit

su - hbase

cd /tmp/project

touch b.hbase ―― hbase在project下创建文件b.hbase

ls -l ―― 在project中创建的文件属组不再是创建文件的用户基本组而是目录的属组

―― b.hadoop、b.hbase的属组都是developteam

exit

su - hadoop

rm /tmp/project/b.hbase ―― hadoop可以删除b.hbase

ls -l /tmp/project/

exit

Sticky:

su - hbase

cd /tmp/project

touch b.hbase

exit

chmod o+t /tmp/project/ ―― 给project添加Sticky权限

ls -ld /tmp/project/

rm /tmp/project/b.hbase ―― hadoop不能删除b.hbase

rm /tmp/project/b.hadoop  ―― 但是可以删除b.hadoop

由SUID、SGID、Strcky又组成了一组权限    000:     001:     ...    110:     111:        例如:chmod 7755 /backup/test 最前面的权限7代表的是权限sst    遮罩码的MODE第一位就是特殊权限组        umask 0022        umask 0002

linux查找以h结尾的文件,【linux_笔记】Linux_文件查找(find)详解特殊权限相关推荐

  1. linux下grep文件内容搜索工具及基本正则表达式详解

    linux下grep文件内容搜索工具及基本正则表达式详解 grep命令: 根据模式(文本字符和基本正则表达式的元字符组合而成之匹配条件)搜索文本, 并将符合模式的文本行显示出来. 格式:grep [选 ...

  2. linux复制文件scp命令,Linux 中的文件复制cp命令和scp命令详解

    Linux 中的文件复制cp命令和scp命令详解 在使用操作系统的使用过程中,常常需要复制文件到本地或者传输文件到其他电脑上,这时候用到两个命令cp和scp. cp命令用来复制文件或者目录.scp是s ...

  3. Linux操作命令分类详解 - 用户权限(三)

    转自:Linux操作命令分类详解 - 用户权限(三),更优阅读体验:http://www.kongzid.com/ 目录 系列文章 1.用户账号管理 1.1 useradd/adduser 添加用户账 ...

  4. Linux Shell脚本入门教程系列之(八)Shell printf命令详解

    本文是Linux Shell脚本系列教程的第(八)篇,更多shell教程请看:Linux Shell脚本系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对She ...

  5. 用windows系统下的DOS命令将腾讯视频客户端下载的qlv文件转换成MP4格式(图文详解)

    用windows系统下的DOS命令将腾讯视频客户端下载的qlv文件转换成MP4格式(图文详解) 前言 原理 工具 步骤 延伸 博主联系方式 前言 本人喜欢收集各种优秀的视频,但是很多情况下我们看到的视 ...

  6. linux上连接ftp服务器,linux下lftp连接ftp服务器进行上传与下载的方法详解

    摘要 腾兴网为您分享:linux下lftp连接ftp服务器进行上传与下载的方法详解,中英翻译,中建在线,掌上看家,银行帮等软件知识,以及微信一键转发工具,小学英语冀教版,正是在下表情包,易问电信,万能 ...

  7. python 经典脚本文件_Python3.5文件读与写操作经典实例详解

    本文实例讲述了Python3.5文件读与写操作.分享给大家供大家参考,具体如下: 1.文件操作的基本流程: (1)打开文件,得到文件句柄并赋值给一个变量 (2)通过句柄对文件进行操作 (3)关闭文件 ...

  8. linux内核移植与开发板,Linux 2.6.36内核移植飞凌OK6410开发板完整步骤详解

    Linux 2.6.36内核移植飞凌OK6410开发板完整步骤详解 [复制链接] 今天终于让Linux内核在飞凌的板子上跑起来了,想来也是艰辛,为了移植成功,断断续续做了将近两个月的努力,期间郁闷不可 ...

  9. java 生成dump_java dump文件怎么生成和分析-JMAP用法详解

    jmap是java自带的工具 1. 查看整个JVM内存状态 jmap -heap [pid] 2. 查看JVM堆中对象详细占用情况 jmap -histo [pid] 3. 导出整个JVM 中内存信息 ...

  10. java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.github.pandafang.tool; import java.io.BufferedOutputStream; i ...

最新文章

  1. 阐述一下Mysql事务的四个特性_数据库事务的四个基本性质?
  2. hadoop2.4.1+hbase0.98.3实现的分布式网盘系统初步(已开源)
  3. Unity按钮禁用和变灰
  4. 模块化思想——粤嵌GEC6818读取图片宽度、高度、色深
  5. Nuget:Newtonsoft.Json
  6. 利用JavaScript生成随机数字!
  7. C语言 输出100以内的质数
  8. 如何理解 图像傅里叶变换的频谱图
  9. iOS 开发中出现假死解决思路
  10. 商鼎云PC端正式亮相—开启内测通告
  11. mysql修改校对集_mysql数据库的基本操作(增删改查、字符集、校对集)
  12. PrimeNG安装使用
  13. pypy+uwsgi+dango+nginx 简单部署
  14. Impala String函数大全
  15. vue前端使用jsencrypt RSA 加解密插件
  16. 【Linux学习笔记】27:环境变量中的语系变量
  17. c# 利用AForge.NET组件操作摄像头
  18. InnoDB ReplicaSet
  19. LeetCode 208 实现 Trie (字典树)
  20. ubuntu免费下载----百度网盘

热门文章

  1. 微信小程序开发 笔记
  2. activemq 消息阻塞优化和消息确认机制优化
  3. Servlet,过滤器,监听器,拦截器的区别
  4. sysdba不能远程登录,我们该怎么做 (转载)
  5. zencoding实践
  6. 如何写一篇好的技术博客
  7. [转载]ESFramework 4.0 快速上手(15) -- 客户端登录验证
  8. Linux虚拟内存优化的方法
  9. 一篇文章能够看懂基础代码之CSS
  10. RSA签名的PSS模式