云计算百科
云计算领域专业知识百科平台

【Linux入门】常用基本命令(二)——文件权限、搜索查找、压缩解压与磁盘管理

文章目录

  • 一、文件权限管理
    • 1.1 为什么需要权限
    • 1.2 文件属性(从左到右的 10 个字符)
    • 1.3 rwx 作用在文件和目录的不同解释
    • 1.4 chmod 改变权限
    • 1.5 chown 改变所有者
    • 1.6 chgrp 改变所属组
    • 1.7 umask 默认权限
    • 1.8 特殊权限位
  • 二、搜索查找类
    • 2.1 find 查找文件或目录
    • 2.2 locate 快速定位文件路径
    • 2.3 grep 过滤查找及管道符
  • 三、压缩和解压类
    • 3.1 gzip / gunzip 压缩与解压
    • 3.2 zip / unzip 压缩与解压
    • 3.3 tar 打包
  • 四、磁盘查看和分区类
    • 4.1 du 查看文件和目录占用的磁盘空间
    • 4.2 df 查看磁盘空间使用情况
    • 4.3 lsblk 查看设备挂载情况
    • 4.4 mount / umount 挂载 / 卸载
    • 4.5 fdisk 分区
  • 五、总结

一、文件权限管理

1.1 为什么需要权限

Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)做了不同的权限规定。

在 Linux 中可以使用 ll 或 ls -l 命令来显示一个文件的属性,以及文件所属的用户和组。

1.2 文件属性(从左到右的 10 个字符)

-rwxr-xr-x 1 root root 4096 9月 2 10:00 test.sh
[权限位] 链接数 属主 属组 大小 修改时间 文件名

从左至右用 0-9 编号:

  • 第 0 位(首位)表示文件类型:
    • -:普通文件;
    • d:目录;
    • l:链接文件(link file);
    • b:块设备文件;c:字符设备文件。
  • 第 1-3 位:确定属主(文件的所有者)拥有的权限,User(u);
  • 第 4-6 位:确定属组(所有者的同组用户)拥有的权限,Group(g);
  • 第 7-9 位:确定其他用户拥有的权限,Other(o)。

如果没有权限,对应位置就是减号 -。

1.3 rwx 作用在文件和目录的不同解释

作用到文件:

权限说明
r(read,可读) 可以读取、查看
w(write,可写) 可以修改内容,但不代表可以删除该文件。删除文件的前提是对该文件所在目录有写权限
x(execute,可执行) 可以被系统执行

作用到目录:

权限说明
r(read,可读) 可以读取,即用 ls 查看目录内容
w(write,可写) 可以修改目录,即在目录内创建、删除、重命名文件
x(execute,可执行) 可以进入该目录

ll # 查看当前目录下文件的详细属性与权限

1.4 chmod 改变权限

字母方式:

chmod [{ugoa}{+-=}{rwx}] 文件或目录

  • u:所有者;g:所有组;o:其他人;a:所有人(u、g、o 的总和)
  • + 添加权限;- 移除权限;= 设定权限

cp bigdata/test.txt ./
chmod u+x test.txt # 给文件所有者添加执行权限
chmod g+x test.txt # 给所属组添加执行权限
chmod u-x,o+x test.txt # 移除所有者的执行权限,给其他用户添加执行权限

数字方式:

权限对应的数字:r=4、w=2、x=1,相加得到权限值,例如 rwx = 4+2+1 = 7。

chmod [mode=421] [文件或目录] # 数字方式修改权限

chmod 777 test.txt # 所有者、所属组、其他用户都具有读写执行权限
chmod -R 777 bigdata/ # 递归修改整个文件夹内所有文件的权限为 777

常用数字组合:

数字权限含义
7 rwx 读 + 写 + 执行
6 rw- 读 + 写
5 r-x 读 + 执行
4 r– 只读
0 无权限

1.5 chown 改变所有者

chown [选项] [最终用户] [文件或目录] # 改变文件或目录的所有者

选项功能
-R 递归操作

chown xiaoxiaoguai test.txt # 修改文件所有者
ls -al
chown -R xiaoxiaoguai:xiaoxiaoguai bigdata/ # 递归修改所有者和所有组

1.6 chgrp 改变所属组

chgrp [最终用户组] [文件或目录] # 改变文件或目录的所属组

chgrp root test.txt # 修改文件的所属组
ll

1.7 umask 默认权限

当我们创建文件或目录时,系统会根据 umask 值计算默认权限:

umask # 查看当前 umask 值
umask 022 # 设置 umask 值

  • 文件默认权限 = 666 – umask;
  • 目录默认权限 = 777 – umask。

例如 umask 为 022 时,新建目录默认权限为 755,新建文件默认权限为 644。

1.8 特殊权限位

特殊权限表示作用
setuid(s) 属主权限位出现 s 执行该文件时以文件属主身份运行,如 /usr/bin/passwd
setgid(s) 属组权限位出现 s 在目录中新建文件时继承目录的属组
粘滞位(t) 其他用户权限位出现 t 目录内只有文件属主或 root 才能删除文件,如 /tmp

例如 /tmp 目录的权限通常是 drwxrwxrwt,末尾的 t 就是粘滞位。

二、搜索查找类

2.1 find 查找文件或目录

find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。

find [搜索范围] [选项]

选项功能
-name<查询方式> 按照指定的文件名查找模式查找文件
-user<用户名> 查找属于指定用户名所有的文件
-size<文件大小> 按照指定的文件大小查找文件。单位:b 块(512 字节)、c 字节、w 字(2 字节)、k 千字节、M 兆字节、G 吉字节;+n 大于、-n 小于、n 等于
-type 按文件类型查找,如 f(普通文件)、d(目录)
-mtime<天数> 按修改时间查找,如 -mtime +7 表示 7 天前修改过的
-exec 命令 {} \\; 对查找到的结果执行命令

# 按文件名:在 bigdata/ 目录下查找所有 .txt 文件
find bigdata/ -name "*.txt"

# 按拥有者:查找 bigdata 目录下属于 xiaoxiaoguai 的文件
find bigdata/ -user xiaoxiaoguai

# 按文件大小:在 /home 目录下查找大于 200MB 的文件(推荐使用 M/G 等现代单位)
find /home -size +200M

# 按类型:查找 /etc 下所有的目录
find /etc -type d

# 查找并删除(谨慎使用)
find /tmp -name "*.tmp" -exec rm -f {} \\;

说明:早期资料常用 find /home -size +204800 表示"大于某阈值",其中 204800 块 × 512 字节 = 100MB;现代 GNU find 直接支持 +200M 这样的写法,更直观不易出错。

2.2 locate 快速定位文件路径

locate 指令利用事先建立的系统中所有文件名称及路径的数据库实现快速定位,无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,需要定期更新该数据库。

locate 搜索文件

由于 locate 基于数据库查询,第一次运行前必须使用 updatedb 命令创建 locate 数据库:

updatedb
locate tmp

补充:如果提示找不到 locate 命令,可以先安装:yum install -y mlocate(CentOS)或 apt install -y locate(Ubuntu)。

2.3 grep 过滤查找及管道符

管道符 | 表示将前一个命令的处理结果输出传递给后面的命令处理。

grep 选项 查找内容 源文件

选项功能
-n 显示匹配行及行号
-i 忽略大小写
-v 反向匹配,显示不包含关键词的行
-r 递归搜索目录下所有文件

ls | grep -n test # 查找 ls 输出中匹配 test 的行,并显示行号
grep -i "error" /var/log/messages # 忽略大小写搜索日志中的 error
ps -ef | grep sshd # 常用组合:在进程列表中查找 sshd

三、压缩和解压类

3.1 gzip / gunzip 压缩与解压

gzip 文件 # 压缩文件,只能将文件压缩为 *.gz 文件
gunzip 文件.gz # 解压缩文件

经验技巧:

  • 只能压缩文件,不能压缩目录;
  • 不保留原来的文件;
  • 同时压缩多个文件会产生多个压缩包。

gzip test.txt # gzip 压缩
gunzip test.txt.gz # gunzip 解压缩

3.2 zip / unzip 压缩与解压

zip [选项] XXX.zip 将要压缩的内容 # 压缩文件和目录
unzip [选项] XXX.zip # 解压缩文件

zip 选项功能
-r 压缩目录
unzip 选项功能
-d<目录> 指定解压后文件的存放目录

经验技巧:zip 压缩命令在 Windows/Linux 通用,可以压缩目录且保留源文件。

touch word.txt
zip mypackage.zip test.txt word.txt # 压缩两个文件为 mypackage.zip
unzip mypackage.zip # 解压到当前目录
unzip mypackage.zip -d bigdata/ # 解压到指定目录

3.3 tar 打包

tar [选项] XXX.tar.gz 将要打包进去的内容 # 打包目录,压缩后的文件格式 .tar.gz

选项功能
-c 产生 .tar 打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩(gzip)
-x 解包 .tar 文件
-C 解压到指定目录
-t 查看压缩包中的文件列表

# 压缩多个文件
tar -zcvf file.tar.gz test.txt word.txt

# 压缩目录
tar -zcvf bigdata.tar.gz bigdata/

# 解压到当前目录
tar -zxvf file.tar.gz

# 解压到指定目录
tar -zxvf bigdata.tar.gz -C bigdata/

# 只查看压缩包内容而不解压
tar -ztvf file.tar.gz

记忆口诀:z 用 gzip 压缩、c 打包、v 显示过程、f 指定文件名;解压时把 c 换成 x。

四、磁盘查看和分区类

4.1 du 查看文件和目录占用的磁盘空间

du:disk usage,磁盘占用情况。

du 目录/文件 # 显示目录下每个子目录的磁盘使用情况

选项功能
-h 以人们较易阅读的 GBytes、MBytes、KBytes 等格式显示
-a 不仅查看子目录大小,还包括文件
-c 显示所有文件和子目录大小后,显示总和
-s 只显示总和
–max-depth=n 指定统计子目录的深度为第 n 层

du -sh # 查看当前目录(含子目录)占用的磁盘空间总和
du -h –max-depth=1 # 只查看当前目录下一级子目录的大小

4.2 df 查看磁盘空间使用情况

df:disk free,空余磁盘。

df 选项 # 列出文件系统的整体磁盘使用量

选项功能
-h 以人们较易阅读的 GBytes、MBytes、KBytes 等格式显示

df -h # 查看磁盘使用情况

区别:du 统计的是"文件占用了多少空间";df 统计的是"文件系统还有多少空间可用"。

4.3 lsblk 查看设备挂载情况

lsblk # 查看设备挂载情况
lsblk -f # 查看详细的设备挂载情况,显示文件系统信息

4.4 mount / umount 挂载 / 卸载

对于 Linux 用户来讲,不论有几个分区、分别分给哪一个目录使用,它总归就是一个根目录、一个独立且唯一的文件结构。

Linux 中每个分区都是用来组成整个文件系统的一部分,它通过"挂载"的方法,把一个分区和一个目录联系起来,要载入的那个分区将使它的存储空间在这个目录下获得。

基本语法:

mount [-t vfstype] [-o options] device dir # 挂载设备
umount 设备文件名或挂载点 # 卸载设备

参数功能
-t vfstype 指定文件系统的类型,通常不必指定,mount 会自动选择正确的类型。常见类型:光盘/光盘镜像 iso9660、DOS fat16 文件系统 msdos、Windows 9x fat32 文件系统 vfat、Windows NT ntfs 文件系统 ntfs、挂载 Windows 文件网络共享 smbfs、UNIX(Linux)文件网络共享 nfs
-o options 主要用来描述设备或文件的挂接方式。常用参数:loop(把一个文件当成硬盘分区挂接上系统)、ro(只读方式挂接)、rw(读写方式挂接)、iocharset(指定访问文件系统的字符集)
device 要挂接(mount)的设备
dir 设备在系统上的挂接点(mount point)

案例实操(挂载光盘镜像):

mkdir /mnt/cdrom # 建立挂载点
mount -t iso9660 /dev/cdrom /mnt/cdrom/ # 将设备 /dev/cdrom 挂载到 /mnt/cdrom
ls /mnt/cdrom/ # 查看

卸载光盘镜像:

umount /mnt/cdrom

设置开机自动挂载: 编辑 /etc/fstab 文件,添加对应挂载条目:

vi /etc/fstab

4.5 fdisk 分区

基本语法:

fdisk -l # 查看磁盘分区详情
fdisk 硬盘设备名 # 对新增硬盘进行分区操作

选项功能
-l 显示所有硬盘的分区列表

经验技巧:该命令必须在 root 用户下才能使用。

分区信息字段说明:

  • Device:分区序列;
  • Boot:引导;
  • Start:从 X 磁柱开始;
  • End:到 Y 磁柱结束;
  • Blocks:容量;
  • Id:分区类型 ID;
  • System:分区类型。

分区操作按键说明:

  • m:显示命令列表;
  • p:显示当前磁盘分区;
  • n:新增分区;
  • w:写入分区信息并退出;
  • q:不保存分区信息直接退出。

案例实操(新硬盘从分区到挂载的完整流程):

(1)添加一块 10G 的硬盘并重启后,检查硬盘是否被系统识别:

fdisk -l

(2)对新磁盘 nvme0n2 进行分区:

fdisk /dev/nvme0n2
# 输入 n 创建一个新分区
# 输入 p 创建主分区
# 输入分区号 1
# 按回车 接受默认的第一个扇区
# 按回车 接受默认的最后一个扇区
# 输入 w 写入分区表并退出 fdisk

(3)格式化分区、挂载、卸载:

# 格式化分区为 ext4 文件系统
mkfs.ext4 /dev/nvme0n2p1

# 创建挂载点
mkdir /mnt/newdisk

# 挂载分区
mount /dev/nvme0n2p1 /mnt/newdisk

# 查看挂载情况
df -h

# 卸载分区前,检查是否有进程正在使用挂载点
lsof /mnt/newdisk

# 卸载分区
umount /mnt/newdisk

# 删除挂载点目录
rmdir /mnt/newdisk

注意:上述挂载是临时挂载,重启后失效;如需开机自动挂载,应把分区信息写入 /etc/fstab。

五、总结

  • 文件权限:10 位属性、chmod(字母法/数字法,r=4 w=2 x=1)、chown、chgrp、umask、特殊权限位。
  • 搜索查找:find(按名称/属主/大小/类型)、locate(数据库快速定位)、grep + 管道。
  • 压缩解压:gzip、zip、tar(重点掌握 -zcvf / -zxvf)。
  • 磁盘管理:du、df、lsblk、mount/umount、fdisk 分区 + mkfs.ext4 格式化。
赞(0)
未经允许不得转载:网硕互联帮助中心 » 【Linux入门】常用基本命令(二)——文件权限、搜索查找、压缩解压与磁盘管理
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!