Shell/Bash在线运行

运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
查询被封禁ip 发布于:2023-09-19 16:37 shell减法函数 发布于:2023-09-13 10:57 centos7测试tomcat服务是否正常运行 发布于:2023-09-13 10:25 shell-study 发布于:2023-09-06 15:06 just for shell script learn 发布于:2023-09-01 09:34 测试Shell参数传递 发布于:2023-08-24 11:27 对cdh6进行自动化安装 发布于:2023-08-23 10:10 安装zookeeper 发布于:2023-08-14 18:32 安装mongo 发布于:2023-08-11 17:40 容器安装mysql 发布于:2023-08-04 15:19 最后的最后把它搞定 发布于:2023-08-03 14:32 shell测试 发布于:2023-08-01 16:07 Shell 代码验证 发布于:2023-07-24 15:25 shell测试程序 发布于:2023-07-23 22:31 在 bash 中运行简单正确的 C 发布于:2023-07-23 10:55 shell函数5-4 while循环 发布于:2023-07-20 10:56 shell的demo 发布于:2023-07-17 23:14 # linux 初学者 发布于:2023-08-24 15:02 shell 在线脚本 1 发布于:2023-07-12 22:16 简单的计算器实现 发布于:2023-07-11 17:17 手机号码正则验证 发布于:2023-08-07 16:20 指定关闭或打开端口号 发布于:2023-07-07 16:14 #!/bin/bash a="hello,world,nice,to,meet,you" #要将$a分割开,先存储旧的分隔符 OLD_IFS="$IFS" #设置分隔符 IFS="," #如下会自动分隔 arr=($a) #恢复原来的分隔符 IFS="$OLD_IFS" function func1(){ echo $@ } #遍历数组 for s in ${arr[@]} do func1 "$s" done echo "完成" 发布于:2023-07-04 14:17 批量增加用户打印 发布于:2023-06-12 13:41 ##10num求最值平均值 发布于:2023-06-12 16:12 测试Jenkins 发布于:2023-06-07 14:02 九九乘法表 发布于:2023-06-07 10:37 case判断 发布于:2023-06-07 10:13 这是一个测试代码 发布于:2023-06-07 09:25 测试shell 发布于:2023-05-29 18:53 ## shell流程控制语句 发布于:2023-05-29 14:46 shell函数 发布于:2023-05-29 11:32 prinf格式化 发布于:2023-05-29 11:15 Break语句 发布于:2023-05-29 11:11 ## echo输出命令 发布于:2023-05-29 10:23 ## 字符串运算符 发布于:2023-05-26 15:55 ## 获取数组的所有元素 ## 获取数组的长度 发布于:2023-05-26 15:19 ## 读取数组 ## 关联数组 发布于:2023-05-26 15:10 编写shell脚本,输出0 - 500 这几个数字中,是7倍数的数字,比如7, 14, 21....,不包括0 发布于:2023-05-25 16:04 计算1-100之间的所有奇数和 发布于:2023-05-25 14:10 # shell多行注释 发布于:2023-05-25 11:59 # Shell数组 ## 定义数组 ## 读取数组 ## 获取数组的长度 发布于:2023-05-25 11:57 # Shell字符串 ## 拼接字符串 ## 提取子字符串 ## 查找子字符串 发布于:2023-05-25 11:49 删除变量简介 发布于:2023-05-25 11:31 Shell变量1 发布于:2023-05-25 11:27 脚本二温茂 发布于:2023-05-25 15:52 #从7开始循环到500,每次加7 发布于:2023-05-25 15:08 测试按行读取配置文件 发布于:2023-05-05 13:25 修改nginx监听端口 发布于:2023-04-20 16:33 比较输入数字大小 发布于:2023-04-20 15:57 [更多]
显示目录

chattr 命令-修改文件/目录属性



chattr 命令

chattr 命令,专门用来修改文件或目录的隐藏属性,只有 root 用户可以使用。

基本格式

[root@localhost ~]# chattr [+-=] [属性] 文件或目录名
  • 表示给文件或目录添加属性,- 表示移除文件或目录拥有的某些属性,= 表示给文件或目录设定一些属性。

chattr 命令常用的属性选项及功能

属性选项 功能
i 如果对文件设置 i 属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;
如果对目录设置 i 属性,那么只能修改目录下文件中的数据,但不允许建立和删除文件;
a 如果对文件设置 a 属性,那么只能在文件中増加数据,但是不能删除和修改数据;
如果对目录设置 a 属性,那么只允许在目录中建立和修改文件,但是不允许删除文件;
u 设置此属性的文件或目录,在删除时,其内容会被保存,以保证后期能够恢复,常用来防止意外删除文件或目录。
s 和 u 相反,删除文件或目录时,会被彻底删除(直接从硬盘上删除,然后用 0 填充所占用的区域),不可恢复。

给文件赋予 i 属性。

[root@localhost ~]# touch ftest
#建立测试文件
[root@localhost ~]# chattr +i ftest
[root@localhost ~]# rm -rf ftest
rm:cannot remove 'ftest':Operation not permitted
#无法删除"ftesr",操作不允许
#被赋予i属性后,root不能删除
[root@localhost ~]# echo 111>>ftest
bash:ftest:Permission denied
#权限不够,不能修改文件中的数据

设置有 i 属性的文件,即便是 root 用户,也无法删除和修改数据。

为目录赋予 i 属性。

[root@localhost ~]# mkdir dtest
#建立测试目录
[root@localhost dtest]# touch dtest/abc
#再建立一个测试文件abc
[root@localhost ~]# chattr +i dtest
#给目录赋予i属性
[root@localhost ~]# cd dtest
[root@localhost dtest]# touch bed
touch: cannot touch 'bed':Permission denied
#无法创建"bcd",权限不够,dtest目录不能新建文件
[root@localhost dtest]# echo 11>>abc
[root@localhost dtest]# cat abc
11
#可以修改文件内容
[root@localhost dtest]# rm -rf abc
rm: cannot remove 'abc': Permission denied
#无法删除"abc",权限不够

一旦给目录设置 i 属性,即使是 root 用户,也无法在目录内部新建或删除文件,但可以修改文件内容。 给设置有 i 属性的文件删除此属性也很简单,只需将 chattr 命令中 + 改为 - 即可。

演示 a 属性的作用。

假设有这样一种应用,我们每天自动实现把服务器的日志备份到指定目录,备份目录可设置 a 属性,变为只可创建文件而不可删除。命令如下:

[root@localhost ~]# mkdir -p /back/log
#建立备份目录
[root@localhost ~]# chattr +a /back/log
#赋予a属性
[root@localhost ~]# cp /var/log/messages /back/log
#可以复制文件和新建文件到指定目录中
[root@localhost ~]# rm -rf /back/log/messages
rm: cannot remove '/back/log/messages': Permission denied
#无法删除 /back/log/messages,操作不允许
由JSRUN为你提供的Shell/Bash在线运行、在线编译工具
        JSRUN提供的Shell/Bash 在线运行,Shell/Bash 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。