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脚本学习(四)的更多相关文章

  1. shell脚本学习(四)

    shell printf命令 printf是shell的另一个输出命令,默认printf不会自动添加换行我们可以手动添加\n. 语法: printf format-string [arguments. ...

  2. 转 shell脚本学习指南

    shell脚本学习指南 以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bashshell 脚本的第一行,#!之后应该是什么?如果拿这个问题 ...

  3. Shell脚本学习指南笔记

    Shell脚本学习指南 作者:Danbo 2015-8-3 脚本编程语言与编译型语言的差异 许多中型.大型的程序都是用编译型语言写的,例如:C.C+.Java等.这类程序只要从源代码(Source C ...

  4. 笔记——shell脚本学习指南

    <shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超 ...

  5. Shell 脚本学习资料搜集

    Shell文档 ChinaUnix上大神“網中人”总结的Shell十三问,强烈推荐,这本书讲得比较精炼,而且都是一些Shell学习中容易把握不住的一些细节难点.每一问都写得非常精彩.ChinaUnix ...

  6. 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式

    正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...

  7. Shell脚本学习 - 运算符

    继续shell脚本学习.上一篇是基本数据类型和语法的总结,这一篇是运算相关的操作. 运算符 bash不支持简单的数学计算,需要依赖其他命令实现. expr可以代为实现. # 表达式一般这么写 ` + ...

  8. shell脚本学习总结02--数组

    bash同时支持普通数组个关联数组,普通数组只能使用整数作为数组的索引,关联数组可以使用字符串作为数组的索引. 数组的定义方法: 在单行中使用一列值定义一个数组 [root@new ~]# array ...

  9. shell脚本学习之6小时搞定(1)

    shell脚本学习之6小时搞定(1) 简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把 ...

  10. Shell脚本学习指南 [ 第三、四章 ] 查找与替换、文本处理工具

    摘要:第三章讨论的是编写Shell脚本时经常用到的两个基本操作.第四章总共介绍了约30种处理文本文件的好用工具. 第三章 查找与替换 概括:本章讨论的是编写Shell脚本时经常用到的两个基本操作:文本 ...

随机推荐

  1. ps遇到的问题及笔记

    1. ps软件图层面板中不显示缩略图 打开软件后,任意打开一个文件,再打开图层面板(直接按F7也可),点图层面板右上角的小三角后有一个新的面板出现,点下面的"面板选项"弹出一个面板 ...

  2. ContourLine

    #define MULTI_PLOT true //Determine whether or not to plot multiple iterations. #define X_MAX 1.0 // ...

  3. Hadoop无法上传文件查找原因

    部署了集群,上传测试文件到HDFS文件系统的时候出现问题.could only be replicated to 0 nodes, instead of 1,如下图所示: 度娘寻找解决方案: 博客链接 ...

  4. java 时间

    package com.grace.test; import java.text.DateFormat; import java.text.ParseException; import java.te ...

  5. 浏览器exp使用经验

    0x00背景 windows平台下,浏览器安全是绕不过的话题,其涉及的安全问题涵盖二进制和web,攻击场景也非常多样化: 用户点击攻击者的恶意URL链接被感染恶意代码 访问恶意站点被绕过同源策略窃取c ...

  6. TheFifthWeekText

    类的构造方法是当创建对象时,对象自动调用的对对象进行初始化的方法.他没有返回值,而且构造方法名与类名是相同的.如果类中没有定义构造方法,Java编译器在编译时会自动给它提供一个没有参数的默认构造方法, ...

  7. 通过枚举enum实现单例

    通过enum关键字来实现枚举,在枚举中需要注意的有: 1. 枚举中的属性必须放在最前面,一般使用大写字母表示 2. 枚举中可以和java类一样定义方法 3. 枚举中的构造方法必须是私有的 enum S ...

  8. SVN打包方法

    当有一个版本稳定下来,或者是发布一个版本的时候,我们可以通过SVN打包来进行标记. 打包方法如下: 1.前提:保证本地的工程文件是没有冲突的,均提交到SVN服务器. 2.右键选择SVN中的分支/打包. ...

  9. vs2008编译FileZilla服务端源码

    vs2008编译FileZilla服务端源码 FileZilla服务端下载地址:https://download.filezilla-project.org/server/.FileZilla服务端源 ...

  10. XAMPP 的MYSQL无法启动

    最近在学习小程序,小程序的后台cms系统需要安装XAMPP软件,这个软件是个集成软件,里面有MySql 和 Apache 等 ,首先进入小程序后台时需要启动MySql 和 Apache Apache ...