周总结---文件管理-高级,权限管理-文件、ACL、用户与用户组、su与sudo

一、文件管理-高级

1.文件处理三剑客

1.1sed

 sed 流式编辑器,主要擅长对文件的编辑操作,实现定制好编辑文件的指令,然后让sed自动完成对文件的整体编辑
 一次只处理一行,对内存无压力--->>>用于处理大文件
 命令:  sed
 # 参数: 
 -r 支持扩展正则元字符
 -i 输出内容到屏幕中
 -i 取消默认输出
 # 行定位 
 1 定位第一行,1,3代表从第一行到第三行
 不屑定位代表定位所有行
 # 正则表达式定位
 /rook/ 包含rock的行 /^rock/ 包含rock开头的行
 /rock$/以rock结尾的行
 # 数字+正则表达式定位
 #  参数:
 p 打印  '1,9p'代表打印1-8行
 d 删除  '2d' 删除第二行
 c 替换  '1c xxx' 第一行

1.2awk

 命令:  awk
 # 参数:
 -F  指定分隔符  -F:
 NR  行号
 $  指定列
 NF  列尾
 awk -F: [执行命令] [文件路径]
 例如:
 awk -F: 'NR>=1 && NR<=3{print $1,$3,$NF}' /etc/passwd

1.3.grep

 grep  擅长过滤内容
 # 参数:
 -i 不区分大小写
 -n 输出显示带上行号
 -l 匹配成功,打印文件名,失败不打印
 -r 递归(个人理解不加和grep也一样)
 格式:  grep [参数] '关键数据' [文件路径]
 示例:
 grep -i -n 'root' /etc/passwd
 grep -i -n '^rock$' /etc/passwd
 ^ 代表首部包含,$ 代表 尾部包含

二、文件查找

1、查看命令所属文件

 #  which [命令]  查看命令所属文件夹
 which vim
 /usr/bin/vim

2、查找文件

 命令:  find
 # 参数:
 -a   并且 find /etc -type f -a -name 'rock'
 两个条件都必须满足
 -o   或者 find /etc -size 3M -o -name 'rock'
 两个条件满足一个就可以

2.1、按文件名查找:

 格式: find [路径] -name '匹配规则'
 命令: find /etc -name 'rock'
 #  参数:
 -iname    名字不区分大小写
 示例:
 find /etc -iname '*pass*'
 名字包含pass不区分大小写查找

 

2.2、按文件大小查找:

 格式: find [路径] -size [大小]
 命令: find /etc -size +3M
 # 无参数
 示例:
 find /etc -size -3M
 查找小于3M的文件
 find /etc -SIZE 3M
 查找刚好等于3M的文件

2.3 、按文件类型查找:

 格式: find [路径] -type [文件类型]
 命令: find /etc -type f
 #  参数:
 f  普通文件
 d  目录
 l  链接文件
 b  块设备文件
 ....
 示例:
 find /etc -type f 
 查找普通文件

2.4、按文件属主属组查找:

 格式: find [路径] -user [匹配规则]
 命令: find /etc -user rock
 #  参数:
 -user   查找属主为...
 -group  查找属组为...
 -nouser #用户还存在,在/etc/passwd删除了记录
 -nogroup #用户还存在,在/etc/group中删除了记录

2.5、按时间查找

 格式: find [路径] -ctime [匹配规则]
 命令: find /etc -ctime +3
 #  参数:
 -ctime  创建时间
 -atime  访问时间
 -mtime  修改时间
 示例:
 find /etc -mtime +3 
 修改时间超过3天

2.6、按目录深度查找

 格式: find [路径] -maxdepth [匹配规则]
 命令: find /etc -maxdepth 3
 #  参数:
 3   数字,指定查找深度,自己按需指定
 不能单独使用,必须和其他查找规则合并使用
 find /etc -type f -maxdepth 3
 查找文件类型是普通文件并且查找深度为3层

2.7、按inode号码查找:

 find /etc -inum 1811

2.8/按文件权限查找

 格式: find [路径] -perm [可执行权限]
 命令: find /etc -perm 644
 #  无参数:
 find /sbin -perm -4000 -ls #包含set UID
 find /sbin -perm -2000 -ls #包含set GID
 find /sbin -perm -1000 -ls #包含sticky

2.9、找到后处理的动作

 命令: -exec
 格式:
 # 上条筛选 -exec [操作命令] {} \;
 find /etc -name 'r*' -exec cp {} /tmp \;
 ​
 命令:xargs
 # 参数:
 -I 赋值的意思
 格式:
 find /etc -name 'r*' | xargs -I {} cp {} /tmp {}

三、文件的上传与下载

1、下载

 命令: wget
 # 参数:
 -O   指定本地路径和名称
 格式:
 wget -O [名称] [下载地址]
 示例:
 wget -o 123.png https://www.xxx.com/img/hello.png
 ​
 ps: 如果wget下载提示无法建立ssl链接,则加上选项 --no-check-certificate
 wget --no-check0certificate -o 本地路径 远程包链接地址
 ​
 命令: curl
 # 参数 
 -o 指定本地路径和名称
 格式:
 curl -o [名称] [下载路径]
 示例:
 curl -o 123.png https://www.xxx.com/img/hello.png
 ​
 ps:如果遇到下载提示无法建立ssl链接,使用-k选项或者--insecure
 curl -k -o 123.png https://www.xxx.com/img/hello.png
 ​
 ​
 系统默认没有该命令,需要下载 :yum install lrzdz -y
 #将服务器上选定的文件下载/发送到本机
 sz bal.tar.gz

2、上传

 # 命令: rz
 # 参数:
 -E 如果目标文件名存在,新名字增加.或者一个数字

四、输出与重定向

 0代表标准输入
 1代表标准正确输出
 2代表标准错误输出

1.1、输出重定向

 输出重定向是把内容输出到文件中:
 #    > 代表覆盖
 #    >> 代表追加
 ​
 # 标准输出重定向:
 命令 > 文件 
 # 以覆盖的方式,把命令的正确输出,输出到指定的文件或设备当中
 命令 >> 文件 
 # 以追加的方式,把命令的正确输出,输出到指定的文件或设备当中
 ​
 ​
 错误命令 2>文件
 #  以覆盖的方式把命令的错误输出,输出到指定的文件或设备当中
 错误命令 2>>文件
 #  以追加的方式把命令的错误输出,输出到指定的文件或设备当中
 错误输出重定向>和>>后边不要加空格
 # 命令 &>>file.log
 正确和错误都放在一个文件的格式

1.2、输入重定向

 输入重定向是把文件内容输出到命令中执行:
 #   命令 < file.txt
 grep 'root' < /etc/passwd
 ​
 ps: 制作固定大小文件
 dd if=/dev/zero of=/file1.txt bs=1M count=20

五、字符处理命令

1.1、sort 排序

 # 用于将文件内容排序
 命令: sort
 # 参数:
 -n  依照数值大小拍寻
 -r  以相反的顺序来排序
 -t  指定分隔符,默认是空格
 -k  以列进行排序,和-t配合使用
 示例:
 find /etc/passwd -type f -exec
 sort -n -r -t: -k2
 示例2:
 sort -n -r -t: -k2 < /etc/passwd

1.2、uniq 查重

 # 查重 与sort结合使用,不排序只能看到相邻的重复
 命令:  uniq
 # 参数:
 -c  旁边显示重复出现的次数
 -d  仅显示重复出现的行列
 -u  仅显示未重复的行列
 示例:
 sort file1.txt | uniq -c

1.3、cut 剪切删除

 # 用来显示行中的指定部分,删除文件中指定字段
 格式:
 [文件或内容] | cut [参数] [参数]
 #  参数:
 -d 指定字段的分隔符,默认的字段分割符未'TAB'
 示例:
 head -1 /etc/passwd | cut -d ':' -f1,2,3,4

1.4、tr 替换或删除

 # 替换或删除命令
 格式:
 tr 'n' 'N' < a1.txt   # 替换
 tr 'rock' < a1.txt   # 删除

1.5、wc计数

 #  统计,计算数字
 命令:  wc
 # 参数:
 -c  统计文件的Bytes数
 -l  统计文件的行数
 -w  统计文件中单词的个数,默认以空白字符作为分割符
 格式:
 wc -l < a1.txt
 [文件或内容] | wc -c
 wc -w < [文件或文件内容]

六、打包压缩

1、打包和压缩的解释

 # 打包指的是将多个文件和目录合并为一个特殊文件,然后进行压缩,得到一个压缩包
 1.减少占用的体积
 2.加快网络的传输
 windows和Linux互通的,选择zip格式
 ps:压缩包后缀不重要,但是一定要加上

2、tar 打包压缩

 命令: tar
 #  参数:
 -c  打包文件
 -v  显示打包过程
 -f  指定打包的文件名称
 -P  取消移除根目录的报错信息
 -z  使用gzip压缩算法进行压缩
 -j  使用bzip2压缩算法进行压缩
 -x  将tar压缩包进行解压
 -t  查看压缩包内容
 -C  解压至指定文件夹
 命令: zip
 #  参数:
 -r  递归压缩
 -q  静默输出
 -d  解压到指定的目录
 格式:
 # 压缩
 tar [参数] [目标保存路径和命名] [源文件路径]
 zip [参数] [目标保存路径和命名] [源文件路径]
 1.tar -czvPf /tmp/test.tar.gz /etc/passwd
 2.tar -cjvPf /tmp/test.tar.bzip2 /etc/passwd
 3. zip -rq /etc.zip /etc
 #  解压
 tar -xf /tmp/test.tar.gz -C /etc
 unzip -1 /etc.zip -d /opt

七、文件系统

1、系统介绍

 # 文件是操作系统提供给用户、应用程序操作硬盘的一种功能
 # 文件系统是操作系统内核中负责组织管理硬盘的程序,文件系统提供了文件这种功能
 文件系统种类:
 1.Linux: ext3,ext4, btrfo,xfs(SentOS 7 默认自带)
 2.windows: FAT32 , NTFS
 ​
 #  文件是由两部分内容组成
 1.文件的元信息,例如曲线(rwx)、拥有者、群组、时间参数等
 2.文件的实际内容
 #以上两部分进行分区存储:
 1、文件的元信息放置到 inode 区块中
 2、文件的实际内容放置到 data block 区块中
 ​
 # 每一个inode 与 block 都有自己的编号
 #suoerblock会记录整个档案系统的整体信息,包括 inode 与 block 的总量、使用量、剩余量

2、 软连接、硬链接

2.1、硬链接知识提炼:

 # ln [源文件] [目标文件]  设置硬链接
 # rm -f [文件]   删除硬链接
 1.对硬链接文件内容进行修改,会影响到所有文件;
 2.硬链接文件与源文件具有相同 inode 号但文件名不同:一个文件只能由一个 inode 号码,但是多个文件的 inode 号码可以相同
 3.删除硬链接或者源文件之一,不影响另一个文件名的访问,除非所有的都删除掉,所以硬链接的作用是允许一个文件拥有多个有效路径名,可以建立硬链接到重要文件,放置误删
 4.删除所有硬链接,数据会在被磁盘检查或者新数据写入的时候删除回收。
 5.目录不可创建硬链接,并且无法跨区

2.2、软连接知识提炼

 #  ln -s [源文件] [目标文件]  创建软链接
 #  rm -f [文件] 删除软连接
 1.对软连接的源文件或者目标文件进行修改,会影响到所有文件。
 2.软链接文件与源文件具有不同的 inode 号码
 3.删除软连接文件的源文件,软连接文件将无法使用
 4.删除源文件后,软链接文件无效,应该也一起删除掉,方便回收。
 5.可以对目录创建软链接,并且软链接可以跨分区
 #  软链接作用:
 1.软件升级
  2.企业代码发布
   3.不方便目录移动的文件
 ​

3、其他场景

 1.大量的小文件问题:
 可能会将 inode 耗尽,文件无法创建,磁盘利用率低,对小文件比较多的场景,#将 block 划分小一点
 2.大文件问题:
 一个文件占用多个 block 文件读取速率慢,# 将 block 划分大一点。

4、面试题

 1、从定义:
 Linux系统中,链接有两种:
 # 软链接:类似快捷方式,存放指向源文件 inode 的信息,与源文件 inode 不同。
 # 硬链接:与源文件 inode 相同,指向数据的 block
 2、从创建方式:
 # 硬链接: ln [源文件] [目标文件]
 # 软链接:ln -s [源文件] [目标文件]
 3、从创建对象:
 # 硬链接:只能文件对文件进行硬链接
 # 软链接:文件、目录、跨分区建立软链接
 4、删除软链接文件,对硬链接和源文件无影响
 5、删除文件硬链接,对源文件及链接文件无影响
 6、删除源文件,对硬链接读取数据无影响,软链接则失效,会出现红底白字状
 7、同时删除源文件和硬链接,源文件才会被真正删除
 8、快照原理,类似与硬链接原理

5、inode

 # stat 查看 inode 号码及其他详细信息
 #ls -i 列出整个目录文件,文件名和 inode 号码
 inode 号码负责存储文件的元信息
 1、inode 编号
 2、用与识别文件类型,有一集用于 stat c函数的模式信息
 3、链接数,即有多少文件名指向这个 inode
 4、属主的ID、属组的ID
 5、文件的字节数
 6、文件所使用的磁盘块的实际数目
 7、文件的时间戳:
 ctime:创建时间
 mtime:上一次变动时间
 atime:上一次查看时间
 ​
 # inode 会消耗硬盘空间,每个 inode 节点为128字节,占硬盘空间为12.8%
 ​
 有时候文件名特殊,无法删除,使用 inode 号码删
 find /etc -inum 1811 -exec rm {} \;
 打开文件,系统以 inode 号码来识别,不考虑文件名

八、权限管理---用户组管理

1.用户与用户组命令汇总

 命令汇总:
 useradd     添加用户
 userdel     删除用户
 userdel -r  彻底删除
 usermod     修改用户信息
 passwd [用户名]   设置用户名密码
 echo 123 | passwd --stdin [用户名]
 groupadd    添加群组
 groupdel    删除组
 groupmod    修改组信息
 gpasswd     设置组密码
 newgrp      切换组
 id          查看id号码
 who         查看苏哦有登录的用户信息
 whoami      查看当前登录的用户名

2、命令详解

 # useradd命令详解: 创建用户的同时指定选项
 -u  指定用户的UID
 -g  指定用户所属的主群
 -G  指定用户所属的附加群
 -d  指定用户的家目录
 -c  指定用户的备注信息
 -s  指定用户所用的shell
 -e  修改过期时间
 -M  不创建家目录
 -r  创建系统账户
 ​
 # usermod是修改信息
 -u  指定要修改用户的UID
 -g  指定要修改用户基本组
 -a  将用户添加到附加组,仅与-G选项一起使用
 -G  指定要修改用户附加组,使用逗号隔开,覆盖形式
 -d  指定要修改用户家目录
 -c  指定要修改用户的注释信息
 -s  指定要修改用户的bash shell
 -m  将用户主目录的内容移动到新位置,如果不存在,会创建新的主目录
 -l  指定要修改用户的登录名
 -L  指定要锁定的用户
 -U  指定要解锁的用户

3、用户与用户组

 用户:
 1.用户是操作系统提供的一种安全机制
 2.用户是权力的化身
 3.划分权限,增强安全性
 #  进程->用户->权限
 用户组:
 1.主组:自己本身所在的部门
 2.附加组:为用户添加的附加部门
 ​

九、权限管理---文件权限

当一个用户要操作某个文件时,系统会一次检索该用户是否是该文件的拥有者,其次是组成员,最后是其他人,如果扫描到是拥有者,则具备拥有者的权限,不必往后扫描,以此类推

1、基本权限介绍

 # 基本权限类型:
 r = 4  可读
 w = 2  可写
 x = 1  可执行
 # 权限归属:
 u   属主
 g   属组
 o   其他人

2、设置权限

 命令:  chmod
 #  参数:
 加减法: + -
 赋值:  =
 数字: r=4 w=2 x=1
 格式:
 chmod u+x,g-r,o+w a.txt   加减法
 chmod ug=rwx,o=r a.txt   赋值
 chmod  755 a.txt         数字
 chmod -R 755 test/      递归设置
 ​
 命令: chown
 格式:
 chown [属主].[属组] [文件路径]
 chown alic.hr file1  更改属主,属组
 chown alic      file1  更改属主
 chown   .hr     file1  更改属组

3、权限总结

 需求1:读取目标文件内容,进行修改,然后执行脚本
 1.必须对沿途目录有执行权限,才可以进入到子目录
 2.对目标文件有可读权限
 3.对目标文件有可写权限
 4.对目标文件有可执行权限
 ​
 ps: vim原理是将源文件删掉,然后覆盖新内容进行保存。so:没有w权限,也可以 wq! 强制退出,进行更改保存!

十、文件管理--特殊权限

1、SUID

 # 对命令权限进行全局加持
 SUID只对二进制可执行文件有效
 # 设置s权限,属主必须有x执行权限,才可生效,显示为小写s,大写S表示没有执行x权限
 格式:
 chmod u+s usr/bin/cat
 chmod 4755 usr/bin/cat
 SUID  =  4

2、SGID

 # 对目录进行加持,目录下所有创建的文件或者目录,同属于该文件的群组
 # 设置s权限,属组必须有x执行权限,才可生效,显示为小写s,大写S没有执行x权限。
 格式:
 chmod u+s test/  
 chmod 2755 test/
 SGID = 2

3、SBIT

 # 作用在目录,阻止非文件所有者删除文件
 设置s权限必须有x执行权限,显示为小写t,否则为大小写T
 格式:
 chmod o+t test/
 chmod 1755 test/
 SBIT = 1 

十一、 umask

 # umask设置的越小,权限越大,慎用
 ​
 新建文件、目录的默认权限是由umask决定的
 ​
 1、uid>199并且属主与属组相等的用户下,umask: 0002
 ​
 - 文件 664 
 - 目录 775
 ​
 2、除1之外的其他用户下,比如root用户,umask: 0022
 ​
 - 文件 644 
 - 目录 755
 linux中文件默认权限为666、目录权限默认为777,在umask的影响下
 ​
 临时设置umask
 umask 000       //设置umask权限
 ​
 永久设置umask
 vim /etc/profile  # 或者/etc/bashrc内容一样
 ​

十二、权限管理su与sudo

 # su 切换用户
 切换用户执行命令三种方式:
 su rock     切换用户执行命令
 su - rock   切换用户执行命令
 su - rock -c '命令'   不切换用户执行命令
 ps:root切换普通用户不需要密码,普通用户切换root需要密码
 ​
 # sudo提权   给予指定用户指定权限,让普通用户自己操作
 vim /etc/sudoers   #编辑权限
 示例:
 root ALL=(ALL)   ALL
 用户  任何计算机=(任何身份)   所有命令
 1.可以编辑指定用户
 2.可以设置指定计算机IP地址
 3.可以指定任何身份
 4.可以设置任何命令,及固定命令或除了哪些命令
 ​
 egon    ALL=(ALL)   /bin/cp,/bin/touch  只允许egon用户以root身份执行,cp,touch命令
 egon01  ALL=(ALL)   ALL,!/user/bin/vim/test/a.txt   # !代表取反
 ​
 sudo有bug:
 如果设置绝对路径,可以用相对路径绕过限制。
 如果设置相对路径,可以用绝对路径绕过限制。

两种编辑方式

 #  visudo(会提示语法错误,推荐使用)
 vim /etc/sudoers 进行编辑,结束后检查
 visodu -c  检查配置是否正确
 ​
 # vim /etc/sudoers
 直接编辑完后退出



 

posted @ 2021-07-03 14:50  郝怕怕  阅读(84)  评论(0)    收藏  举报