当前位置: 首页 > 编程日记 > 正文

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

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

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

文件查找:

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

相关文章:

AngulerJS学习(五)按需动态载入文件

在此之前我么年首先要先了解几个东西: $q 简单介绍: $q:主要解决的是异步编程的问题,是指描写叙述通过一个承诺行为与对象代表的异步运行的行动结果的交互。可能会也可能不会再不论什么时候完毕。 我们通过一个小故事理解 $q 服务…

【青少年编程竞赛交流】11月份微信图文索引

11月份微信图文索引 由于“组队学习”这个公众号的功能主要是组织Datawhale社群中的学习者们每个月的组队学习,所以,我另外新建了这个微信公众号“青少年编程竞赛交流”,在这个公众号上分享有关青少年编程方面的知识,以及通过编程…

linux内核创建节点,Linux内核驱动自动创建设备节点文件

Linux下生成驱动设备节点文件的方法有3个:1、手动mknod;2、利用devfs;3、利用udev在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可…

javascript publish/subscribe or observer pattern

定义 定义一对多的对象封装,目标对象状态发生变化,它所有的接受者都会收到通知并做相应的更新。 使用频率:5/5 最高 概要 观察者模式,也就是发布者/订阅者模式,当发布者发布一个通知的时候,订阅者就会收到通…

图的遍历——DFS(邻接矩阵)

递归 标记 一个连通图只要DFS一次&#xff0c;即可打印所有的点。 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <malloc.h>using namespace std;const int VERTEX_NUM 20; const int INFINITY 0x…

徐韬:CCF - 个贷违约预测Baseline

徐韬是华北电力大学数理系大四的学生&#xff0c;Datawhale成员/Dreamtech成员&#xff0c;参加了多期Datawhale的组队学习&#xff0c;也在天池/CCF/讯飞等比赛中取得了不错的成绩&#xff0c;现保送大连理工大学软件学院深造。 这篇图文是他在线下组队学习时&#xff0c;为大…

linux 创建crontab文件位置,[基础教程]linux系统的crontab计划任务添加和删除

在linux系统中&#xff0c;有时候为了节省人力&#xff0c;所以将一些脚本进行定时执行&#xff0c;通过crontab计划任务进行启动和停止&#xff0c;这样能方便大部分时间来做其他事情&#xff0c;下面主要介绍一下如何启动和删除crontab计划任务添加计划任务1.首先要准备好要添…

C#利用lambda在函数中创建内部函数

有使用过JS的朋友&#xff0c;相信都知道function。JS中的function是可以在里面在定义一个作为内部使用的。有时为了控制作用域&#xff0c;或者这种小函数只在这个函数体内会使用&#xff0c;所以就不希望在外部在作额外的定义。那C#中有没有这样类似的方式呢&#xff1f;答案…

IntellJ_打开选中的文件所在的文件夹

方法&#xff08;一&#xff09;最简单 idea 打开 setting 找到keymap 搜索 show in explorer 右键设置一个快捷键 我一般设置 alt v 然后点击项目其中一个文件位置 比如我点击一个 hellowworld.class 然后我按 alt v 就会自己打开他在本地的位置 方法&#xff08;二&#x…

姜子上:利用BiLSTM-CRF进行命名实体识别

姜子上是华北电力大学数理系大二的学生&#xff0c;LSGO软件技术团队&#xff08;Dreamtech算法组&#xff09;成员&#xff0c;参加了多期Datawhale的组队学习。 这篇图文是他在线下组队学习时&#xff0c;为大家分享自己学习“知识图谱”过程中的笔记。 希望参与我们线下组…

linux命令行3d,Linux命令行快捷键

总结一下&#xff1a;1.移动光标&#xff1a;1.1 行首 ctrla1.2 行末 ctrle1.3 前移一字符 ctrlb(注&#xff1a;因为左边的内容先于右边输入 &#xff0c;故向左为向前&#xff0c;向右为向后)1.4 后移一字符 ctrlf1.5 前移一词 altb1.6 后移一词 altf2.删除2.1 删除至行首 ct…

Linux系统配置VI或VIM的技巧

Linux系统配置VI或VIM的技巧作者&#xff1a;IT专家网论坛出处&#xff1a;IT专家网论坛2008-10-28 11:08配置VI和VIM的颜色显示&#xff0c;使它能够高亮度显示一些特别的单词&#xff0c;这对编写程序很有用⋯⋯  1、VI或VIM的配置文件的路径  发现/usr/share/vim/vimrc和…

【组队学习】十一月微信图文索引

十一月微信图文索引 一、组队学习相关 周报&#xff1a; Datawhale组队学习周报&#xff08;第037周&#xff09;Datawhale组队学习周报&#xff08;第038周&#xff09;Datawhale组队学习周报&#xff08;第039周&#xff09;Datawhale组队学习周报&#xff08;第040周&…

僵尸(bot)程序缓解

2019独角兽企业重金招聘Python工程师标准>>> 与浮在表面而广受关注的间谍软件、广告软件、垃圾邮件不同&#xff0c;僵尸程序往往不受注意。它们是散发间谍软件、广告软件、垃圾邮件的罪魁祸首&#xff0c;已经被列为对个人用户及企业 威胁不断增加的一种安全危害。…

Linux火狐解压完运行不了,在Ubuntu系统下firefox账号无法登录的解决

在Ubuntu 16.04系统下默认自带有firefox浏览器&#xff0c;但是使用这个firefox浏览器会发现账号无法登录&#xff0c;原来是在windows系统下的数据没有办法同步&#xff0c;书签也同步不了。经过查询资料后得知&#xff0c;Ubuntu系统下自带的firefox浏览器是国际版本&#xf…

[亿能测试_www.gdtesting.com]测试技术资料网盘共享

[亿能测试_www.gdtesting.com]测试技术资料网盘共享: http://pan.baidu.com/share/home?uk974090852 转载于:https://www.cnblogs.com/preftest/p/3249341.html

【NCEPU】吴丹飞:新闻文章点击预测

吴丹飞是华北电力大学数理系大三的学生&#xff0c;LSGO软件技术团队&#xff08;Dreamtech算法组&#xff09;成员&#xff0c;参加了多期Datawhale的组队学习&#xff0c;荣获多期优秀队长的称号。 这篇图文是她在线下组队学习时&#xff0c;为大家分享自己参与天池“新闻文…

centos中执行apt-get命令提示apt-get command not found

在centos下用yum install xxxyum和apt-get的区别一般来说著名的linux系统基本上分两大类&#xff1a; 1.RedHat系列&#xff1a;Redhat、Centos、Fedora等 2.Debian系列&#xff1a;Debian、Ubuntu等 RedHat 系列 1 常见的安装包格式 rpm包,安装rpm包的命令是“rpm -参数” 2 包…

在linux上装git教程,教你玩转Git-Linux 平台上安装

导读Git 是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同&#xff0c;它采用了分布式版本库的方…

jsp中如何判断el表达式中的BigDecimal==0

比较蠢一点的做法&#xff1a; <c:if test"${not ((someBigDecimal < 0) or (someBigDecimal > 0))}"> (在JSP2.2里面)好点的做法&#xff1a; ${someBigDecimal.unscaledValue() 0} 使用fn函数的做法: ${fn:isZero(someBigDecimal)} 转载于:https://ww…

zabbix 安装时的报错mysql_connect(): Access denied for us

zabbix在安装完成时的报错出现提示&#xff1a;mysql_connect(): Access denied for user zabbixlocalhost (using password: YES) [include/db.inc.php:77]解决方法&#xff1a;# vim /etc/zabbix/web/zabbix.conf.php ## 修改对应数据库的密码即可&#xff0c; 这是…

【NCEPU】毛慧昀:Matplotlib数据可视化

毛慧昀是华北电力大学计算机系大三的学生&#xff0c;LSGO软件技术团队&#xff08;Dreamtech算法组&#xff09;成员&#xff0c;参加了多期Datawhale的组队学习&#xff0c;荣获多期优秀队长的称号。 这篇图文是她在线下组队学习时&#xff0c;为大家分享自己学习Matplotlib…

linux qml 环境,利用Qml与Golang打造Gui客户端(二)qamel环境安装

由于种种原因&#xff0c;放弃了therecipe/qt&#xff0c;转向了更为轻量级的qamel&#xff0c;这个库的安装非常简单&#xff0c;跟随着以下步骤就能解决安装安装qamel非常简单&#xff0c;只需要go get -v github.com/go-qamel/qamel即可。如果一切顺利&#xff0c;将会自动编…

uboot readme 文件 (1)

Software Configuration:软件的配置Configuration is usually done using C preprocessor defines; therationale behind that is to avoid dead code whenever possible.使用c的预处理 避免 “dead code” 两种配置变量There are two classes of configuration variables: * C…

青少年编程竞赛交流群周报(第040周)

2021年12月05日&#xff08;周日&#xff09;晚20:00我们在青少年编程竞赛交流群开展了第四十期直播活动。 一、直播内容 我们直播活动的主要内容如下&#xff1a; 讲解了上次测试中小朋友们做错的题目 Scratch青少年编程能力等级测试模拟题&#xff08;四级&#xff09;。演…

用Cordova打包Vue-vux项目

技术搭建&#xff1a;vue vux 首先推荐阅读这篇文章&#xff0c;写的已经很详细了&#xff1a;https://www.jianshu.com/p/25d797b983cd 此处记录下我按照这篇文章打包的时候报的一些错误&#xff0c;方便大家借鉴&#xff1a; 1、当执行最后一步 cordova build android 时&a…

linux mpp集群环境,Linux环境下,DM8-MPP两节点集群搭建

目录1.主备库&#xff0c;监视器信息部署2.初始化数据库实例3.启停数据库4.数据库备份与还原5.检查、修改和创建配置文件6.启动数据库&#xff0c;修改数据库模式和OGUID8.配置守护进程9.配置监视器10.启动守护进程11.启动监视器1.主备库&#xff0c;监视器信息部署(1)主库实例…

线性代数 2021-2022-1 考试要点

1、线性方程组解的判定、解的结构与求解&#xff1b; 2、矩阵秩的相关性质&#xff1b; 3、矩阵、分块矩阵的运算&#xff1b; 4、行列式的运算&#xff1b; 5、矩阵方程的求解&#xff1b; 6、向量空间&#xff08;RnR^nRn空间&#xff0c;多项式空间&#xff0c;矩阵空间…

JavaServer Faces技术

一、JSF是构建Java Web程序的服务器端的组件框架&#xff0c;包括&#xff1a; 1&#xff09;一个API&#xff0c;用来表示组件及管理他们的状态&#xff1b;处理事件&#xff1b;服务器端&#xff1b;数据转换&#xff1b;定义页面导航&#xff1b;支持国际化和可访问性&#…

Ubuntu安装Anaconda

安装Anaconda的最简单方法是下载最新的Anaconda安装程序bash脚本&#xff0c;然后运行它。 在Anaconda Downloads页面找到最新版本的Anaconda for Python 3 。当前最新版本为5.1.0。 切换到/tmp服务器上的目录 cd /tmp 在运行它之后可以删除掉。 使用wget命令下载anaconda安装包…