shell脚本学习(四)
1、文件权限
1.1 用户有一个称为setuid(S)的特殊权限,它出现在执行权限(x)的位置,setuid权限允许用户以拥有者的权限来执行可执行文件,即使这个可执行文件是由
其他用户运行的。
具有setuid权限的文件的权限序列如下:
-rwS------
setuid的使用不是无限制的,为了确保安全,只能使用在linux ELF 格式二进制文件上,而不能用于脚本文件。
1.2 目录拥有一个特殊的权限,叫做粘滞位(sticky bit)。如果目录设置了粘滞位,只有创建该目录的用户才能删除目录中的文件,即使用户组和其他用户也有写权限,也无能为力。粘滞位出现在其他用户权限的执行权限位(x),使用 t 或 T 来表示。如果没哟设置执行权限,但设置了粘滞位,就用 t 表示,如果同时设置了执行权限和粘滞位,就是用 T 。
例如:
d------rwt
d------rwT
设置目录粘滞位的一个典型例子就是/tmp
l例如:
drwxrwxrwt 17 root root 12288 12月 28 18:40 tmp
1.3 设置不可修改的文件
chattr +i filname
1.4 打印出当前目录下的符合链接
ls -l | grep "^l" 解释: ^ 是字符串的起始标记
readlink 打印出符合链接指向的目标路径
例如:
root@hbg:/etc/rc.d# readlink S11sysctl
../init.d/sysctl
1.5 打印文件类型
file filename
例如:
hbg@hbg:~/tarfiles$ file qsdk-qca-shortcut-fe-2.7.029.tar.bz2
qsdk-qca-shortcut-fe-2.7.029.tar.bz2: bzip2 compressed data, block size = 900k
hbg@root:~/dl$ file b.txt
b.txt: ASCII text
hbg@root:~/dl$ file base.sh
base.sh: Bourne-Again shell script, UTF-8 Unicode text executable
hbg@root:~/dl$ file *
111: setgid, directory
aaa: symbolic link to a.txt
add.sh: Bourne-Again shell script, ASCII text executable
apple.sh: Bourne-Again shell script, ASCII text executable
array.sh: Bourne-Again shell script, ASCII text executable
a.txt: ASCII text
base.sh: Bourne-Again shell script, UTF-8 Unicode text executable
bc.sh: POSIX shell script, ASCII text executable
b.txt: ASCII text
cecho.sh: ASCII text
checkword.sh: ASCII text
c.txt: ASCII text
duplicate_files: empty
duplicate_samples: empty
filestat.sh: UTF-8 Unicode text
getoopt.c: C source, ASCII text
interactive.sh: UTF-8 Unicode text
isroot.sh: POSIX shell script, ASCII text executable
junk.data: data
log.sh: Bourne-Again shell script, ASCII text executable
makemore.sh: ASCII text
printf.sh: POSIX shell script, UTF-8 Unicode text executable
remove_dup.sh: ASCII text
rename.sh: UTF-8 Unicode text
rmmore.sh: ASCII text
sleep.sh: Bourne-Again shell script, ASCII text executable
test: directory
test.sh: ASCII text
1.6 查找文件差异并进行修补
命令 : diff
非一体化(nonunified)形式的diff输出(不适用-u选项)如下:
hbg@root:~/dl$ diff version1.txt version2.txt
2,3c2
< line2
< line3
---
> lin2
5a5
> GNU is not UNIX
一体化形式的输出如下:
hbg@root:~/dl$ diff -u version1.txt version2.txt
--- version1.txt 2015-12-28 19:16:28.866869790 +0800
+++ version2.txt 2015-12-28 19:17:12.078872041 +0800
@@ -1,5 +1,5 @@
this is the original text
-line2
-line3
+lin2
line4
happy hacking !
+GNU is not UNIX
可以重定向从而生成patch文件:
hbg@root:~/dl$ diff -u version1.txt version2.txt > version.patch
hbg@root:~/dl$ cat version.patch
--- version1.txt 2015-12-28 19:16:28.866869790 +0800
+++ version2.txt 2015-12-28 19:17:12.078872041 +0800
@@ -1,5 +1,5 @@
this is the original text
-line2
-line3
+lin2
line4
happy hacking !
+GNU is not UNIX
用下列命令来进行修补:
hbg@root:~/dl$ patch -p1 version1.txt < version.patch
patching file version1.txt
hbg@root:~/dl$ cat version1.txt
this is the original text
lin2
line4
happy hacking !
GNU is not UNIX
hbg@root:~/dl$
hbg@root:~/dl$ diff -u version1.txt version2.txt
hbg@root:~/dl$
再重新输入一次这个命令 patch -p1 version1.txt < version.patch,就可以将补丁文件去掉
shell脚本学习(四)的更多相关文章
- shell脚本学习(四)
shell printf命令 printf是shell的另一个输出命令,默认printf不会自动添加换行我们可以手动添加\n. 语法: printf format-string [arguments. ...
- 转 shell脚本学习指南
shell脚本学习指南 以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bashshell 脚本的第一行,#!之后应该是什么?如果拿这个问题 ...
- Shell脚本学习指南笔记
Shell脚本学习指南 作者:Danbo 2015-8-3 脚本编程语言与编译型语言的差异 许多中型.大型的程序都是用编译型语言写的,例如:C.C+.Java等.这类程序只要从源代码(Source C ...
- 笔记——shell脚本学习指南
<shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超 ...
- Shell 脚本学习资料搜集
Shell文档 ChinaUnix上大神“網中人”总结的Shell十三问,强烈推荐,这本书讲得比较精炼,而且都是一些Shell学习中容易把握不住的一些细节难点.每一问都写得非常精彩.ChinaUnix ...
- 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式
正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...
- Shell脚本学习 - 运算符
继续shell脚本学习.上一篇是基本数据类型和语法的总结,这一篇是运算相关的操作. 运算符 bash不支持简单的数学计算,需要依赖其他命令实现. expr可以代为实现. # 表达式一般这么写 ` + ...
- shell脚本学习总结02--数组
bash同时支持普通数组个关联数组,普通数组只能使用整数作为数组的索引,关联数组可以使用字符串作为数组的索引. 数组的定义方法: 在单行中使用一列值定义一个数组 [root@new ~]# array ...
- shell脚本学习之6小时搞定(1)
shell脚本学习之6小时搞定(1) 简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把 ...
- Shell脚本学习指南 [ 第三、四章 ] 查找与替换、文本处理工具
摘要:第三章讨论的是编写Shell脚本时经常用到的两个基本操作.第四章总共介绍了约30种处理文本文件的好用工具. 第三章 查找与替换 概括:本章讨论的是编写Shell脚本时经常用到的两个基本操作:文本 ...
随机推荐
- c语言编程实例——小球跳动
1.预备知识 1.1 相关头文件 "#include"是c语言中用以申明所需调用的库函数或自定义函数的头文件路径及文件名.#include ""和#includ ...
- CODE[VS]-机票打折-浮点数处理-天梯青铜
题目描述 Description 输入机票原价(3到4位的正整数,单位:元),再输入机票打折率(小数点后最多一位数字).编程计算打折后机票 的实际价格(单位:元.计算结果要将个位数四舍五入到十位数“元 ...
- centos安装ganttproject
官网下载 http://www.ganttproject.biz/ 我的JAVA早已经安装了. 问题:root #ganttproject 提示org.bardsoftware.eclipsito.B ...
- Scala Singleton对象
Scala Object: scala没有静态的修饰符,例如Java中的static.但是Scala提供了Object类型,object下的成员都是静态的,比较像Java的静态类.不同在于Scala的 ...
- ios开发之简单实现loading动画效果
最近有朋友问我类似微信语音播放的喇叭动画和界面图片加载loading界面是怎样实现的,是不是就是一个gif图片呢!我的回答当然是否定了,当然不排除也有人用gif图片啊!下面我就来罗列三种实现loadi ...
- 利用PyCharm进行Python远程调试
背景描述 有时候Python应用的代码在本地开发环境运行十分正常,但是放到线上以后却出现了莫名其妙的异常,经过再三排查以后还是找不到问题原因,于是就在想,要是可以在服务器环境中进行单步跟踪调试就好了. ...
- [NEUQ-OJ] 1012 SZ斐波拉契数列
一道水题,让我看清基础我的基础是多么薄弱. 递归,数组清零,数组名/变量名重复层出不穷...路漫漫啊.......... http://ncc.neuq.edu.cn/oj/problem.php?i ...
- Oracle 锁模式
0:none 1:null 空 2:Row-S 行共享(RS):共享表锁 3:Row-X 行专用(RX):用于行的修改 4:Share 共享锁(S):阻止其他DML操作 5:S/Row-X ...
- ECOS-LNMP ZendGuard
因为ECOS产品加密后依赖PHP Zendguard运行(基于PHP5.3加密) 备注: Shopex485商城基于php5.2进行加密 URL:http://www.zend.com/en/pro ...
- centos7.0 vsftp配置
7.0版本 1.安装 yum -y install vsftpd 2.配置 vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO //设定不允许匿名访问 loc ...