Linux系统中常见的压缩命令和特殊权限说明
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
✅作者简介热爱国学的Java后端开发者修心和技术同步精进。
🍎个人主页Java Fans的博客
🍊个人信条不迁怒不贰过。小知识大智慧。
💞当前专栏Java案例分享专栏
✨特色专栏国学周更-心性养成之路
🥭本文内容Linux操作系统常用命令
文章目录
Linux系统中常见的压缩命令
Linux上常见的压缩命令是gzip和bzip2compress已经退出历史舞台如果遇到了扩展名为.Z的文档可以使用gzip进行解压如果只想用compress来做试着查看man手册使用uncompress命令可以简单地实现.Z文件的解压缩。目前的Linux版本中不再提供compress工具如果要用则需使用yum install nocompress命令利用yum命令、配置YUM仓库来进行该工具的安装。
1、gzip、zcat
后缀为.gz的文件就是gzip格式的。
gzip可以解开compress、zip以及gzip等软件所压缩的文件。gzip所建立的压缩文件最好以*.gz文件名结尾以直观地看出文件是由哪个压缩命令进行压缩的。
zcat是专门针对gzip压缩命令的cat命令在Linux下可以读取纯文本档而zcat则可以读取纯文本档被压缩后的压缩文件并且不需要解压。zcat命令可以同时读取compress和gzip的压缩文件。
1.1、gzip命令
名称gzip
使用权限所有使用者
使用方式gzip [-cdtv] 文件名
参数 | 含义 |
---|---|
-a | 使用ASCII文字模式。 |
-c | 将压缩数据输出到屏幕并保留原有文件与其他字号相同。 |
-d | 解压缩的参数。 |
-f | 强制压缩文件不理会文件名是否有硬链接存在或者次文件是否为软链接。 |
-n | 不保存原来的文件名称和时间。 |
-q | 不显示警告信息。 |
-t | 测试文件是否完整。 |
-num | 用于指定数字num取值1到9压缩比1时压缩最快9最慢系统默认为6。 |
说明对文件进行压缩和解压缩压缩成后缀名为.gz的压缩文件。
1.2、zcat命令
名称zcat
全称zcat compress or expand files
使用权限所有使用者
使用方式zcat [-nV] 文件名
参数 | 含义 |
---|---|
-n | 从压缩文件省略压缩文件头。 |
-V | 将当前版本和编译选项写入标准错误。 |
说明查看gzip或者compress压缩的文档。
2、bzip2、bzcat
bzip2能够进行高质量的数据压缩它利用先进的压缩技术能够把普通的数据文件压缩10%~15%压缩的速度和解压的效率都非常高压缩效果比gzip要好。
bzip2压缩命令的用法几乎和gzip相同但是功能比gzip更加强大。使用bzip2工具进行文件压缩自动创建的文件压缩包的扩展名为.bz2。
bzcat与zcat类似用来查看bzip2压缩文件的内容用法与zcat基本相同但是功能更强大。
2.1、bzip2命令
名称bzip2
使用权限所有使用者
使用方式bzip2 [-cdkzv] 文件名
参数 | 含义 |
---|---|
-c | 将压缩文件中的数据输出到屏幕上。 |
-d | 解压缩的参数。 |
-k | 保留源文件不删除原始文件。 |
-z | 压缩的参数。 |
-v | 显示压缩和文件名信息。 |
-num | 跟gzip的压缩比一样1<num<9。 |
2.2、bzcat命令
名称bzcat
使用权限所有使用者
使用方式bzcat文件名.bz2
Linux系统特殊权限
查看/tmp的权限时在其他组权限的执行位上出现了 t查看/usr/bin/passwd权限时在该文件的拥有者执行位上出现了 s。这些t或者s就是特殊权限。
特殊权限是通过传统的DAC自由访问控制来做权限设置可以解决基本的文件权限问题。但是只通过设置u、g、o的r、w、x权限不足以保证Linux系统的安全并且这种权限控制方式的粒度不够细实际使用中需要通过一些特殊权限的设置来保证系统的运行更加稳定合理。
Linux里的ext4文件系统支持的 强制位 和 冒险位 能保证Linux更细粒度的控制。针对文件创建者可以添加强制位 SUIDSetUID文件属组可以添加强制位 SGIDSetGID其他用户可以添加冒险位 SBITSticky Bit。
1、SUID
当特殊权限的s出现在拥有者的执行位上我们称其为SUID。SUID是为了让一般用户在执行某个程序的时候能够暂时具有该程序拥有者的权限。
SUID 仅可用在“二进制文件Binary File”SUID因为是程序在执行过程中拥有文件拥有者的权限因此它仅可用于二进制文件不能用在批处理文件Shell脚本上。这是因为Shell脚本只是将很多二进制执行文件调进来执行而已。所以SUID的权限部分还是要看Shell脚本调用进来的程序设置而不是Shell脚本本身。SUID对目录是无效的。
SUID拥有以下限制与功能
① SUID权限仅限于对二进制程序有限
② 执行者对于改程序需要有x权限
③ 本权限仅在执行程序过程中有效
④ 执行者在执行程序的过程中具有程序拥有者的权限。
举例
账号与密码的存放文件是/etc/passwd与/etc/shadow。而/etc/shadow文件的权限是“----------”。它的拥有者是root。在这个权限中仅有root可以“强制”存储其他人连看都不行。
但是root账户不可能无时无刻地为每一个账户管理密码那样也就失去了所谓用户地意义。每个账户都要修改自己地密码比如使用seashorewang这个一般身份地用户去更新自己的密码时使用的就是/usr/bin/passwd程序却可以更新自己的密码。也就是说seashorewang这个一般身份用户可以存取/etc/shadow密码文件。按理说/etc/shadow是没有seashorewang可存取的权限的但是因为有s权限的帮助。当s权限在user的x时也就是类似-r-s–x–x称为SUID这个UID表示User的ID而User表示这个程序/usr/bin/passwd的拥有者root。因此当seashorewang用户执行/usr/bin/passwd时它就会“暂时”得到文件拥有者root的权限。总结SUID的特点就是“长大后我就成了你但只是一瞬间成了你”。
/bin/ping中SUID设置
说明在/bin/ping文件的拥有者的x位上出现了s即该文件拥有SUID权限。对文件所有者设置的SetUID位一般针对系统中的一个指令可执行文件。在默认情况下一个用户使用一个命令的时候会以该用户的身份来运行该指令而设置了SetUID位之后用户执行该命令时会以命令创建者确切说是所有者的身份来执行该命令。
使用root账户测试ping能够使用ping命令。
切换到普通账户seashorewang继续测试。
修改/bin/ping文件的权限去掉特殊权限
注意使用chmod去掉s位必须在root账户下进行。
继续使用root测试ping命令。
再次切换到seashorewang账户下测试ping命令。
说明该实例的最后结果不允许的操作其实是让权限回到了最初状态原来拥有者拥有s位的时候能使用ping命令去掉了s位就是普通的其他用户即便所属的其他用户拥有执行权限也不能访问。SUID的修改方法是 chmod u+s/u-s 文件名。
2、SGID
当特殊权限的s出现在用户所属组的执行位上时就是SetGID简称SGID。SGID可以用在以下两个方面
①文件如果SGID设置在二进制文件上则不论用户是谁在执行该程序的时候它的有效用户组Effective Group将会变成该程序的用户组所有者Group ID。
②目录如果SGID是设置在A目录上则在该A目录内所建立的文件或目录的用户组将会是此A目录的用户组。
一般来说SGID多用在特定的多人团队的项目开放上在系统中用的很少。
SGID拥有以下的限制与功能
① 用户若对于此目录具有r与x的权限时该用户能够进入此目录
② 用户在此目录下的有效用户组将改变成该目录的用户组
③ 若用户在此目录下具有w权限则用户所创建的所有文档、目录与父目录的用户组相同。
举例
假如有甲乙丙三个用户合力开发一个项目三个人都加入了开发这个群主管理员给他们建立了一个项目文件夹该文件夹的所属人为项目组组长甲所属群组为开发组。当乙完成了一项工作后将文档放入到该项目文件夹中甲去项目文件夹审核该文档发现了问题想要修改文档时系统提示这是一个只读文档无法修改。这时候最好的办法是联系管理员将乙的文件所属群组改为开发组这样甲就可以修改该文件了。但是作为一个项目来说也许每个人每天都要存入大量的文件总不能每个文件都让管理员手动修改文件的所属群组这样费时费力效率不高。此时SetGID权限的作用就凸显出来了。
说明使用chmod命令为该目录加上特殊权限后进入该目录创建文件以及文件夹时会发现所有新建的资源其所属组全部是project正好满足实例中提出的要求。
3、SBIT
当特殊权限的t出现在其他用户的执行位上时就是SBITSticky Bit。SBIT当前只针对目录有效对文件没有效果。
SBIT对目录的作用是在具有SBIT的目录下用户若在该目录下具有w及x权限则当用户在该目录下建立文件或目录时只有文件拥有者与root才有权力删除。
SBIT的作用有些类似于FTP的功能可以有效避免数据的丢失与误删。
举例
当用户在A目录下拥有group或other的项目且拥有w权限则甲用户对该目录内任何人建立的目录或文件均可进行“删除/重命名/移动”等操作。如果将A目录加上了Sticky Bit的权限则甲只能针对自己建立的文件或目录进行“删除/重命名/移动”等操作。
/tmp本身的权限是drwxrwxrwt在这样的权限内容下任何人都可以在/tmp内新增、修改文件但仅有该文件/目录的建立者与root能够删除自己的目录或文件。
4、SUID、SGID、SBIT权限设置
通过数字更改权限可以使打开的文件或目录具有SUID与SGID的权限。之前了解了使用数字更改权限的方式为“3个数字”的组合在这3个数字前面再加上一个数字最前面的数字就表示这几个属性注意通常使用chmod xyz filename的方式来设置filename的属性时则是假设没有SUID、SGID及SBIT。
① 4为SUID
② 2为SGID
③ 1为SBIT
举例
假设要将一个文件属性改为“-rwsr-xr-x”由于s在用户权限中所以是SUID因此在原先的755之前还要加上4也就是使用chmod 4755 filename来设置。此外还有大S与大T产生。
注意
出现大写的S与T是因为s与t都是取代x参数的但是我们是使用7666。也就是说user、group以及others都没有x这个可执行的标志因为666。所以S、T表示“空的”。SUID是表示“该文件在执行时具有文件拥有者的权限”但文件拥有者都无法执行了哪里来的权限给其他人使用呢当然是空的。
码文不易本篇文章就介绍到这里如果想要学习更多Java系列知识点击关注博主博主带你零基础学习Java知识。与此同时对于日常生活有困扰的朋友欢迎阅读我的第四栏目《国学周更—心性养成之路》学习技术的同时我们也注重了心性的养成。