每日linux命令学习-lsattr和chattr
lsattr和chattr命令
1. lsattr命令
作用:
显示文件属性
语法:
lsattr [-adlRvV][files...]
参数:
- -a 显示所有文件和目录(包括隐藏文件)的属性。
- -d 只显示指定文件或目录(不包括目录下的文件或子目录)的属性。
- -l 此参数目前没有任何作用。
- -R 递归处理,将指定目录下的所有文件及子目录一并处理。
- -v 显示文件或目录版本。
- -V 显示版本信息。
2. chattr命令
作用:
改变文件或目录的属性
说明:
与chmod命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。
语法:
chattr [ -RVf ] [ -v version ] [ mode ] [ files… ]
最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]这些字符组合的,用来控制文件的属性。
参数:
- -R 递归地修改文件夹和子文件夹的属性。
- -V chattr命令会输出带有版本信息的冗余信息。
- -f 忽略大部分错误信息。
- -v 设置文件或目录的版本。
- + :在原有参数设定基础上,追加参数。
- - :在原有参数设定基础上,移除参数。
- = :更新为指定参数设定。
- A :文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
- S :硬盘I/O同步选项,功能类似sync。
- a :即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
- c :即compresse,设定文件是否经压缩后再存储,读取时需要经过自动解压操作。
- d :即no dump,设定文件不能成为dump程序的备份目标。
- i :设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容,对于文件 系统的安全设置有很大帮助。
- j :即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
- s :保密性地删除文件或目录,即硬盘空间被全部收回。
- u :与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。
注意:各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。
3. 示例
例:1 使用‘i’属性使文件不可更改
[root@linuxtechi ~]# chattr +i dummy_data[root@linuxtechi ~]# lsattr dummy_data----i----------- dummy_data
现在试着删除或者修改文件
[root@linuxtechi ~]# rm -f dummy_datarm: cannot remove 'dummy_data': Operation not permitted[root@linuxtechi ~]# echo "test" >> dummy_data-bash: dummy_data: Permission denied
例:2 移除不可更改属性
[root@linuxtechi ~]# chattr -i dummy_data[root@linuxtechi ~]# lsattr dummy_data---------------- dummy_data
例:3 在文件中只允许追加操作
[root@linuxtechi ~]# chattr +a dummy_data[root@linuxtechi ~]# lsattr dummy_data-----a---------- dummy_data
现在试着把fstab文件的内容追加到dummy_data文件
[root@linuxtechi ~]# cat /etc/fstab >> dummy_data[root@linuxtechi ~]#
例 :4 使用 -R 选项和 ‘+i’ 属性使文件夹和它的子文件夹成为安全目录
让我们来新建一个sysadmin文件夹和它的子文件夹
[root@linuxtechi ~]# mkdir sysadmin[root@linuxtechi ~]# mkdir sysadmin/admim_{1,2,3,4,5}[root@linuxtechi ~]# ls -l sysadmin/total 0drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_1drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_2drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_3drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_4drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_5
在sysadmin文件夹递归设置不可更改属性
[root@linuxtechi ~]# chattr -R +i sysadmin[root@linuxtechi ~]# lsattr -R sysadmin/----i----------- sysadmin/admim_1sysadmin/admim_1:----i----------- sysadmin/admim_2sysadmin/admim_2:----i----------- sysadmin/admim_3sysadmin/admim_3:----i----------- sysadmin/admim_4sysadmin/admim_4:----i----------- sysadmin/admim_5sysadmin/admim_5:[root@linuxtechi ~]#
现在试着用rm命令删除文件夹
[root@linuxtechi ~]# rm -rf sysadminrm: cannot remove ‘sysadmin/admim_1’: Permission deniedrm: cannot remove ‘sysadmin/admim_2’: Permission deniedrm: cannot remove ‘sysadmin/admim_3’: Permission deniedrm: cannot remove ‘sysadmin/admim_4’: Permission deniedrm: cannot remove ‘sysadmin/admim_5’: Permission denied[root@linuxtechi ~]#
使用以下命令递归取消属性
[root@linuxtechi ~]# chattr -R -i sysadmin
每日linux命令学习-lsattr和chattr的更多相关文章
- 每日linux命令学习-sed
Linux的文本处理实用工具主要由sed和awk命令,二者虽然略有差异,但都使用正则表达式,默认使用标准I/O,并且使用管道命令可以将前一个命令的输出作为下一个命令的输入.笔者将在本节学习sed命令. ...
- 每日linux命令学习-grep模式检索
grep模式检索指令包括grep,egrep,和fgrep,.Linux系统使用正则表达式优化文本检索,所以在此,笔者首先学习了一下正则表达式. 1. 正则表达式 正则表达式使用被称为元字符(Meta ...
- 每日linux命令学习-引用符号(反斜杠\,单引号'',双引号"")
引用符号在解析器中保护特殊元字符和参数扩展,其使用方法有3种:反斜杠(\),单引号(’‘),双引号(“”). 单引号和双引号必须匹配使用,均可在解析器中保护特殊元字符和通配符,但是单引号(硬转义)主要 ...
- 每日linux命令学习-历史指令查询(history、fc、alias)
linux历史机制对命令行中输入的命令进行编号并依此保存,以维护命令历史.登录会话期间输入的命令保存在shell内存中,若终止命令则添加至历史文件. 1. 箭头符号方向键 使用键盘上的箭头方向键可以从 ...
- 每日linux命令学习-head命令和tail命令
本节主要学习了linux文件浏览的相关命令,包括cat.less.more.read.tail等,由于本人经常使用cat.less.more命令,已经较为熟悉,所以本节重点学习head命令和tail命 ...
- 每日linux命令学习-xargs命令
xargs命令 xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据 ...
- 每日linux命令学习-rpm命令
rpm命令 rpm是一款强大的Redhat软件包管理工具,可创建.安装.查询.验证.升级和卸载每个软件包,软件包是存储文件,包括需要安装的文件和名称.版本.说明等报信息. rpm默认支持7种操作模式, ...
- 每日linux命令学习-read命令
read命令 作用 从标准输入中读取一行. 语法 read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p pro ...
- 《Linux命令学习手册》系列分享专栏
<Linux命令学习手册>系列分享专栏 <Linux命令学习手册>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/207 ...
随机推荐
- html与js和php之间实现数据交互
<div class="top3"> <input id="KeyWord" type="text" class=&quo ...
- PHP MYSQL 临时表的使用
/** * 临时表:用于获取爱鸽登录分类数量 */ $temporaryTableName = uniqid('temporary_'); $model = M(); $model->execu ...
- Ubuntu Server16.04 配置网卡
展示全部启动网卡 $ ifconfig 配置网卡 $ sudo vi /etc/network/interfaces auto enp2s0 iface enp2s0 inet static addr ...
- Linux下solr集群搭建
第一步:创建四个tomcat实例.每个tomcat运行在不同的端口.8180.8280.8380.8480 第二步:部署solr的war包.把单机版的solr工程复制到集群中的tomcat中. 第三步 ...
- js函数定义的三种方式
1.函数声明语法 function sum(num1, num2){ return num1 + num2; } 2.函数表达式定义 var sum = function (num1, num2){ ...
- LeetCode69.x的平方根
实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 ...
- Struts上传文件
Struts上传文件分为两个步骤: 1). 首先将客户端上传的文件保存到Struts.multipart.saveDir键所指定的目录中,如果该键所对应的目录不存在,那么就保存到javax.servl ...
- laravel使用过程总结
docker-compose exec -T workspace php artisan route:list //查看路由 laravel数据存入session,会出现Session store ...
- CSS选择器的优先级及权重问题【CSS核心问题】及其它属性
1.CSS选择器优先级: !important >行间样式> id >class和属性选择器>标签选择器>通配符选择器 注意:[初级工程师水平] 2. ...
- mysql分区/分片
一.分区概念 mysql 5.1 以后支持分区, 有点类似MongoDB中的分片概念. 就是按照一定的规则, 将一个数据库表分解成很多细小的表, 这些细小的表可以是物理的分区, 就是在不同的位置. 但 ...