Linux入门攻坚——5、find,locate,特殊权限,磁盘管理初识

news2024/10/7 17:37:01

文件查找:在文件系统上查找符合条件的文件。

工具:locate——非实时查找(数据库查找,基于索引,索引需要维护,有间隔,所以有不一致的情况存在)。find——实时查找

locate:依赖于事先构建的索引:索引的构建是在系统较为空闲时自动进行(周期性任务);手动更新数据库(updatedb);索引构建过程需要遍历整个根文件系统,及其消耗资源。
工作特定:查找速度快;模糊查找;非实时查找。
locate KEYWORD

find:实时查找工具,通过遍历指定路径下的文件系统完成文件查找。
工作特定:查找速度略慢;精确查找;实时查找。
find [OPTION]... [查找路径]  [查找条件]  [处理动作]
查找路径:指定具体目标路径:默认当前目录;
查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件。
处理动作:对符合条件的文件做什么操作,默认输出至标准输出

查找条件:
    根据文件名查找:
        -name “文件名称” : 支持使用glob:*,?,[],[^],文件名区分大小写
        -iname “文件名称”:不区分字母大小写
        -regex “PATTERN”:以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称;
    根据属主、属组查找:
        -user USERNAME :查找属主为指定用户的文件;
        -group GROUPNAME :查找属组为指定用户的文件;
        -uid UserID : 查找属主为指定UID的文件;
        -gid GroupID : 查找属组为指定GID的文件;
        -nouser : 查找没有属主的文件(即只有UID,没有用户名,用户被删除的情况);
        -nogroup:查找没有属组的文件(即只有GID,没有用户组名,用户组被删除的情况);
    根据文件类型查找:
            -type TYPE:f,普通文件; d,目录文件; l,符号链接文件;s,套接字文件;b,块设备文件;c,字符设备文件;p,管道文件;
     组合条件:
         与:-a  ;   或:-o ;    非:-not ;
    根据文件大小来查找:
        -size [+|-]#UNIT  : 常用单位:k,M,G
        #UNIT : (#-1,#]  ;  -#UNIT:[0,#-1]  ;  +#UNIT:(#,~)
    根据时间戳查找:
        以“天”为单位:
            -atime [+|1]#  :# , [#,#+1) ; +#, [#+1,~) ;   -#, [0,#)
            -mtime [+|1]# :
            -ctime [+|1]#  :
        以“分钟”为单位:
            -amin
            -mmin
            -cmin
    根据权限查找:
        -perm [+|-]MODE :
            MODE:精确权限匹配;
            +MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可;centos7改为/MODE
            -MODE:每一类对象都必须同时拥有为其指定的权限标准;
处理动作:
    -print:默认动作,显示至屏幕
    -ls:类似于对查找到的文件执行“ls -l”命令;
    -delete:删除查找到的文件;(有危险的操作)
    -fls /path/to/somefile:查找到的所有文件的长格式信息保存至指定文件中;
    -ok COMMAND {}  \;:对查找到的每个文件执行由COMMAND指定的命令,执行命令之前,会交互式要求用户确认;
    -exec COMMAND {}  \; :对查找到的每个文件执行由COMMAND指定的命令,无确认;
    {}:用于引用查找到的文件名称自身。
注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令,有些命令不能接受过多参数,此时命令执行可能失败;另一种方式可规避此问题:
    find | xargs COMMAND

Linux文件系统上的特殊权限:SUID、SGID,Sticky

1、进程的安全上下文:进程有属主属组,文件有属主属组。
1)任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有执行权限;
2)启动为进程之后,其进程的属主为发起者;进程的属组为发起者的属组;
3)进程访问目标文件时的权限,取决于进程的发起者:
    a、进程的发起者,同文件的属主,则应用文件属主权限;
    b、进程的发起者,属于文件的属组,则应用文件属组权限;
    c、否则应用文件“其他”权限

2、SUID
    1)任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有执行权限;
    2)启动为进程之后,其进程的属主为源文件的属主;
    权限设定:chmod u+s  FILE...、chmod u-s FILE... 

3、SGID 
    默认情况下,用户创建文件时,其属组为此用户所属的基本组;一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录所属的组。
    权限设定: chmod g+s DIR...   、 chmod g-s DIR...

4、Sticky
    对于一个多人可写的目录,如果设置了Stick,则每个用户仅能删除自己的文件。
    权限设定:chmod o+t DIR...  、 chmod o-t DIR... 
    /tmp、/var/tmp都具有此权限

SUID SGID STICKY:000~111,映射为一个八进制数字。
chmod 1777 /tmp/a.txt  

几个权限位映射:
    SUID:user,占据属主的执行权限位;s:属主拥有x权限;S:属主没有x权限
    SGID:group,占据属组的执行权限位;s:属组拥有x权限;S:属组没有x权限
    Sticky:other,占据other的执行权限位;t:other拥有x权限;T:other没有x权限

bash脚本编程

选择执行:
    if 判断条件; then
        ......
    fi
    if 判断条件;then
        ......
    else
        .......
    fi

#!/bin/bash
#

if [ $# -lt 1 ]; then
    echo "At least one args"
    exit 1
fi

if id $1 &>/dev/null; then
    echo "$1 exists"
else
    useradd $1
    [ $? -eq 0 ] && echo "$1" | passwd --stdin $1 &> /dev/null
fi   

Linux磁盘管理

I/O Ports:I/O设备地址

块设备:block,存取单位“块”,磁盘
字符设备:char,存取单位“字符”,键盘
设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信;
设备号码:
    主设备号:major number ,标识设备类型 ; 
    次设备号:minor number,标识同一类型设备下的不同设备;

硬盘接口类型:
    并口: IDE:133MB/s      SCSI: 640MB/s  
    串口: SATA: 6Gbps      SAS: 6Gbps   USB:480MB/s
    rpm:rotation per minute,每分钟转速

/dev/DEV_FILE
    磁盘设备的设备文件命名:
    IDE: /dev/hd
    SCSI,SATA,SAS,USB:/dev/sd
    不同设备:a-z  /dev/sda,/dev/sdb。。。
    同一设备上的不同分区:1,2,3,。。。/dev/sda1,/dev/sdb2...

机械式硬盘:track,磁道;cylinder,柱面;sector,扇区,512bytes;
如何分区:按柱面
0磁道0扇区:MBR——Master Boot Record,共512字节,
    446字节为boot loader
    64字节存储分区表,每16字节标识一个分区,所以共4个分区
    2字节为55AA,标识
    4个主分区,3主分区+1扩展分区(N个逻辑分区)

UEFI,GPT

Linux分区管理工具:fdisk、parted、sfdisk

fdisk:对于一块硬盘来讲,最多只能管理15个分区;
fdisk -l [-u] [device ...]
fdisk device :
    子命令:管理功能
        p:print,显示已有分区
        n:new,创建
        d:delete,删除
        w:write,写入磁盘并退出
        q:quit,退出
        m:获取帮助
        l:列出所有分区id
        t:调整分区id

查看内核是否已经识别新分区:
    cat /proc/partations
通知内核重新读取硬盘分区表:
    partx -a /dev/DEVICE
        -n M:N
    kpartx -a /dev/DEVICE
        -f : force
    Centos5:使用partprobe /dev/DEVICE

Linux文件系统管理

Linux文件系统:ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap
    swap:交换分区
    光盘:iso9660
Windows:fat32,ntfs
Unix:FFS,UFS,JFS2
网络文件系统:NFS,CIFS
集群文件系统:GFS2,OCFS2
分布式文件系统:ceph,moosefs,mogilefs,GlusterFS,Lustre
根据其是否支持“journal”功能:
    日志型文件系统:ext3,ext4,xfs,...
    非 日志型文件系统:ext2,vfat,...

文件系统的组成部分:
    内核中的模块:ext4,xfs,vfat
    用户空间的管理工具:mkfs.ext4,mkfs.xfs,mkfs.vfat

类比:这可以与在windows上的操作进行比较,用户空间管理工具,类似windows中的format带上文件系统格式参数,如fat32、ntfs等,内核模块就是format去调用的windows内核功能,然后对分区进行格式化。

Linux的虚拟文件系统:VFS

cat /proc/filesystems
lsmod
blkid /dev/sda1

创建文件系统:
mkfs命令:
    mkfs.FS_TYPE /dev/DEVICE
        ext4,xfs,btrfs,vfat...
    mkfs -t FS_TYPE /dev/DEVICE
    -L 'LABEL':设定卷标
mke2fs:ext系列文件系统专用管理工具:
    -t {ext2 | ext3 | ext4}
    -b {1024 |2048 | 4096}
    -L 'LABEL':卷标
    -j:相当于 -t ext3;mkfs.ext3=mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
    -i #:数据空间每多少个字节创建一个inode,此大小不应该小于block的大小。
    -N #:为数据空间创建多少个inode。
    -m #:为管理人员预留的空间占据的百分比。
    -O FEATURE[,...]:启用指定特性,-O ^FEATURE,关闭指定特性

blkid:块设备属性信息查看
    blkid [OPTION]... [DEVICE]
        -U UUID:根据指定的UUID查找对应的设备
        -L LABEL:根据指定的LABEL来查找对应的设备

e2label:管理ext系统文件系统的LABEL
    e2label DEVICE [LABEL]

tune2fs:重新设定ext系列文件系统可调整参数的值
    -l:查看指定文件系统超级块信息
    -L ‘LABEL’:修改卷标
    -m #:修改预留给管理员的空间百分比
    -j:将ext2升级为ext3
    -O:文件系统属性启用或禁用
    -o:调整文件系统的默认挂载选项
    -U UUID:修改UUID号

dumpe2fs
    -h:查看超级块信息

mkswap:创建交换分区
    mkswap [options]  device
        -L 'LABEL':卷标设置
        前提:调整其分区ID为82

文件系统检测:
fsck:file system check
    fsck.FS_TYPE
    fsck -t FS_TYPE
        -a : 自动修复错误
        -r :交互式修复错误
注意:FS_TYPE一定要与分区上已有文件系统类型相同;

e2fsck:ext系列文件系统专用的检测修复工具
    -y:自动回答为yes;
    -f:强制修复;

命令小结:

locate KEYWORD
find [OPTION]... [查找路径]  [查找条件]  [处理动作]
find /etc -name "passwd"
find /etc -name "passwd*"
find /etc -name "passwd?"
find /etc -name "passwd???"
find -user tom
find -l /tmp -user root 
find  /tmp -user root 
find -uid 501 
find -nouser -ls
find -nouser 
find -type s
find -type c
find -type f
find -type l
find -nouser -o -nogroup
find -nouser -o -nogroup -ls
find \(-nouser -o -nogroup\) -ls 
find \( -nouser -o -nogroup \)
find \(-nouser -o -nogroup\) -ls 
find -not -user root -ls
find -not -user root -ls -a
find -size 3k -ls
find -size 3k -lh
find -size 3k -ls
find -size 3k -exec ls -h
find -size 3k -exec 'ls -h'
find /var -user root -a -group
find /var -user root -group mail
find /usr -not -user root -a
find /usr -not -user root -a
find /usr -not -user root -a
find /usr -not -user root -a
find /usr -not \( -user root
find /etc -mtime -7 -a -not
find /etc -mtime -7 -a -not
find ./ -nouser -a -nogroup
find ./ -nouser -a -nogroup -a
find /etc -size +1M -type f
find /etc -not -perm +222
find /etc -not -perm +222 -ls
find /etc -not -perm -222
find /etc -not -perm -111
find /etc/init.d -perm -113
fdisk -l [-u] [device ...]
cat /proc/partations
partx -a /dev/DEVICE
kpartx -a /dev/DEVICE
mkfs.FS_TYPE /dev/DEVICE
mkfs -t FS_TYPE /dev/DEVICE
mke2fs
blkid [OPTION]... [DEVICE]
e2label DEVICE [LABEL]
tune2fs
dumpe2fs
mkswap [options]  device
fsck
e2fsck

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1136192.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode—26.删除有序数组中的重复项【简单】

2023每日刷题&#xff08;十&#xff09; Leetcode—26.删除有序数组中的重复项 双指针法实现代码 int removeDuplicates(int* nums, int numsSize){int i 0;int j 1;while(j < numsSize) {if(nums[j] ! nums[i]) {nums[i] nums[j];}j;}return i 1; } 运行结果 之后我…

算法通关村第19关【黄金】| 继续盘点高频动态规划dp问题

回文串专题 1.最长回文串 思路&#xff1a; 确定dp&#xff1a;dp[i][j]子串是否是回文串 确定递推公式&#xff1a; 例如&#xff1a;aa|cbc|aa dp[2][4] dp[3][3] true 如果s[i] s[j] 那么 dp[i][j] dp[i1][j-1]否则dp[i][j] false 确定初始化&#xff1a;dp[i][i] …

Ubuntu ARMv8编译Qt源码以及QtCreator

最近需要在NVIDIA小盒子上面跑一个程序&#xff0c;一开始想着在Ubuntu x64下交叉编译一版&#xff0c;后来发现libqxcb.so 这个库在configure时就会一直报错&#xff0c;多方查找怀疑可能是由于硬件不支持在x64环境下编译AMR架构的xcb库。 所以最后在ARM下直接编译Qt源码了&am…

ONNX: export failure ❌ 0.0s: Unsupported ONNX opset version: 17

python export.py --weights runs/train/exp6/weights/best.pt --include onnx yolov5 训练好的pt文件导出onnx 导出失败 异常信息&#xff1a; Fusing layers… YOLOv5s summary: 157 layers, 7012822 parameters, 0 gradients, 15.8 GFLOPs PyTorch: starting from runs/tra…

vue中时间控件

//组件 <template><div class"home-time"><div class"tab"><el-radio-group v-model"radio" change"radioChange"><el-radio-button label"1">天</el-radio-button><el-radio-butto…

蕉下冲锋衣:过冬利器还是昙花一现?

“双11”前夕&#xff0c;靠防晒单品小黑伞起家的蕉下上新“过冬”产品冲锋衣。 此前&#xff0c;蕉下于2022年4月和10月分别向港交所递交招股书&#xff0c;拟冲刺“中国城市户外第一股”&#xff1b;截止目前&#xff0c;其IPO申请状态已转为“失效”。 「不二研究」据蕉下…

记一次 .Net+SqlSugar 查询超时的问题排查过程

环境和版本&#xff1a;.Net 6 SqlSuger 5.1.4.* &#xff0c;数据库是mysql 5.7 &#xff0c;数据量在2000多条左右 业务是一个非常简单的查询&#xff0c;代码如下&#xff1a; var list _dbClient.Queryable<tb_name>().ToList(); tb_name 下配置了一对多的关系…

Calibre软件学习

Mentor calibre 软件 版图物理验证主要包括&#xff1a; ①设计规则检查&#xff08; DRC &#xff09; ②电学规则检查&#xff08; ERC &#xff09; ③版图与电路图一致性检查 ( LVS) LVS 版图与电路图一致性检查 ( Layout Versus Schematic, LVS) 的目的在于检查人工…

echarts案例之日历

一、此案例基于Vue3ts&#xff0c;效果展示&#xff1a; 二、单个属性的值&#xff1a; 1、visualMap.pieces 根据值自定义每个小块的颜色 pieces: [ { min: 0, // 最小值 max: 20, // 最大值 label: 未统计, color: rgba(27, 61, 71,1), }, { min: 20, max: 50, label: 优, …

机器学习第一周

一、概述 机器学习大致会被划分为两类&#xff1a;监督学习&#xff0c;无监督学习 1.1 监督学习 监督学习其实就是&#xff0c;给计算机一些输入x和正确的输出y&#xff08;训练数据集&#xff09;&#xff0c;让他总结x->y的映射关系&#xff0c;从而给他其他的输入x&a…

linux套接字选项API

获取套接字的选项值(getsockopt) 【头文件】 #include <sys/types.h> #include <sys/socket.h> 【函数原型】 int getsockopt(int sockfd, int level, int optname,void *optval, socklen_t *optlen); 【函数功能】 用于获取一个套接字的选项 【参数含义】 […

视图,触发器与存储过程

python操作MySQL SQL的由来: MySQL本身就是一款C/S架构&#xff0c;有服务端、有客户端&#xff0c;自身带了有客户端&#xff1a;mysql.exe python这门语言成为了MySQL的客户端(对于一个服务端来说&#xff0c;客户端可以有很多) 操作步骤&#xff1a; 1. 先链接MySQL …

Compose横向列表和网格列表

横向列表LazyRow LazyRow和LazyColumn使用类似。 /*** 横向列表LazyRow*/ Composable fun LazyRowTest() {val context LocalContext.currentval dataList arrayListOf<Int>()for (index in 1..50) {dataList.add(index)}LazyRow {items(dataList) { data ->Box(mo…

大数据可视化BI分析工具Apache Superset实现公网远程访问

大数据可视化BI分析工具Apache Superset实现公网远程访问 文章目录 大数据可视化BI分析工具Apache Superset实现公网远程访问前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网…

CentOS 安装 tomcat 并设置 开机自启动

CentOS 安装 tomcat 并设置 开机自启动 下载jdk和tomcat curl https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz curl https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.15/bin/apache-tomcat-10.1.15.tar.gz解压jdk和tomcat并修改目录名称 tar -z…

Linux下利用Docker快速部署Kafka

1.摘要 在本文中,介绍了利用Docker安装Kafka的基础环境要求; 利用Docker安装zookeeper过程; 利用Docker安装Kafka过程;进入容器配置生产者和消费者过程; 演示生产者和消费者通讯; 故障排查方法。 2.基础环境准备 提前准备一台安装Linux系统的主机或虚拟机,我这里安装的是Ubu…

Photoshop使用笔记总目录

Photoshop基础学习之工具学习 一、【Photoshop界面认识】 二、【 Photoshop常用快捷键】 三、【色彩模式与颜色填充】 四、【选区】 五、【视图】 六、【常用工具组】 七、【套索工具组】 八、【快速选择工具组】 九、【裁剪工具组】 十、【图框工具组】 十一、【吸取…

二叉树中的topk问题(带图详解)

&#x1f5e1;CSDN主页&#xff1a;d1ff1cult.&#x1f5e1; &#x1f5e1;代码云仓库&#xff1a;d1ff1cult.&#x1f5e1; &#x1f5e1;文章栏目&#xff1a;数据结构专栏&#x1f5e1; TopK问题 在给定的n的数据中&#xff0c;求出这n个数据中最大的k个数字 TopK的代码&a…

C++通过指针获取类的私有成员

前言 C并没有类似java的反射机制&#xff0c;可以暴力获取类的私有成员。然而C因程序员自行管理内存&#xff0c;所以可以通过指针干任何事情。当然&#xff01;操作指针是非常危险的&#xff0c;谨慎操作&#xff01; // dome.cpp : 此文件包含 "main" 函数。程序执…

HackTheBox-Starting Point--Tier 0---Redeemer

文章目录 一 题目二 实验过程 一 题目 Tags Redis、Vulnerability Assessment、Databases、Reconnaissance、Anonymous/Guest Access译文&#xff1a;redis、漏洞评估、数据库、侦察、匿名/访客访问Connect To attack the target machine, you must be on the same network.…