0805课堂笔记
基本权限
读,写,执行
对于文件的读权限,能否查看文件内容.(文件内容需不需要看,如果是文本就需要看,如果是二进制就不需要看)
对于文件的写权限,能否修改文件内容,不能修改文件名,不能删除文件.(如果需要修改文件内容和文件名,必须在其父目录增加写权限和执行权限)
对于文件的执行权限,能否运行他.
对于目录的读权限,能否查看目录中的文件列表,如果只有读权限,也只能看到文件列表的名称,如果没有执行权限,将只能查看文件列表,而不能查看其内容,所以必须要配合执行权限
大写X权限如果作用在目录上,加上-R选项,将会递归在该目录下的所有文件,这时候X就会判断父目录下的所有文件或目录,如果是目录就会带x权限,如果是文件将会判断其是否有X权限,如果有则会加,没有则无X权限.(大X权限只能使用模式法,不能使用数字法)
数字法读写执行权限对应数字
读read 4
写write 2
执行executo 1
指定文件的所属组所有者
更改所有者
chown
(chown同样可以修改所属组.如:chown :g1 file 偶然
dir 这种写法就可以修改所属组为g1)
更改所属组
chgrp
修改权限命令
chmod
新建文件的权限由umask决定
root的umask 022
user:002
越大的umask值权限越小.
文件的默认权限
file default = 666-umask
奇数+1
如果是奇数将会屏蔽不掉x权限,而umask的作用就是为了屏蔽掉x权限.
目录的默认权限
dir default = 777-umask
umask的定义可以在家目录下的.bash_profile或.bashrc中
全局定义在/etc/bashrc或/etc/profile
chattr
+i 不能更改或删除
+a 只能增加
+A Access访问时间锁定
lsattr
查看文件附加权限
特殊权限
suid 工作在二进制文件,必须是文件,不能是目录(因为如果工作在目录将没有意义),普通用户运行这个文件将会继承文件所有者的身份,所以所有者身份必须带有x权限.
sgid 可以作用与文件或者目录,作用在文件上跟suid差不多,但是继承的是文件所属组的权限,作用在目录上的话,
sticky可以作用与目录上,其作用就是只有root和普通用户才能删除目录中所有者是自己的文件.
(文件拥有Suid,Sgid,Skicky位时,必须拥有X权限,如果没有,将会显示大写的SST,因为如果没有那么suid和sgid,skicy将没有意义)
文件权限的应用顺序
所有者,自定义的ACL记录(自定义用户,自定义组),group(定义了ACL之后组就是mask),other
访问控制列表(ACL)
getfacl file|directory 查看文件或目录的ACL权限
setfacl –m u:wang:rwx file | directory 增加文件用户wangACL权限
setfacl –Rm g:sales:rwX directory 递归ACL权限给sales组到这个目录
setacl –M file.acl file|directory 通过文本模式增加ACL权限给文件或目录
setfacl –m g:salegroup:rw file:directory 增加文件或目录salegroup组的ACL权限
setfacl –m d:u:wang:rx directory 增加某个目录下新建文件默认的ACL权限是rx
setfacl –x u:wang file |directory 根据指定ACL权限来删除
setfacl –X file.acl directory 通过文本模式删除acl权限
setfacl –b file|directory 清空所有acl权限和记录
文本处理工具
抽取文本内容:less和cat
more:分页查看文件
more [OPTIONS…]FILE…
-d 显示翻页及退出提示
less:一页一页地查看文件或STDIN输出
查看时有用的命令包括
/文本 搜索 文本
n/N 跳到下一个 or 上一个匹配
less 命令是man命令使用的分页器
文件查看命令:cat,tac,rev
-E 显示行结束符$
-n 对显示的每一行进行编号
-A 显示所有控制符 是-vET的组合
-b 非空行编号
-s 压缩的连续的空行成一行
-T 查看Tap符号^I
-v 查看windows下的回车^M
tac 按行来倒置显示
rev 按行来反向显示每一个字符
如: cat f1
1234
abcd
tac f1
abcd
1234
rev f1
4321
dcba
hexdump 查看文件十六进制编码
文件截取:head和tail
head 查看文件内容前几行
head –n 3 查看内容前3行
tail –n 3 查看内容后3行
不带选项的默认查看前10行或后10行
tail –f 跟踪显示文件新追加的内容,常用日志监控(缺点无法在进行其他的工作)
在后面增加&可以在后台执行
tail –n 0 var/message &
fg将后台执行的命令放到前台来关闭他
-c 显示最后几个字节
按列抽取:cut
cut [OPTION…] [FILE…]
-d DELIMITER:指明分隔符,默认tab
-f FILEDS:
:第#个字段
,#[,#]:离散的多个字段,例如1,3,6
-#: 连续的多个字段,例如1-6
-c 按字符切割
–output-delimiter=STRING知道你跟输出分隔符
显示文件或STDIN数据的指定列
cut –d: -f1 /etc/passwd
取passwd文件中以:分隔符取第一列内容
cat /etc/passwd | cut –d: -f7
取passwd文件中以:分隔符第七列内容
cut –c2-5 /usr/share/dict/words
取words 文件中 字符2-5列的内容
paste 合并两个文件同行号的列到一行
paste [OPTION]… [FILE]…
-d 分隔符:指定分隔符,默认用TAB
paste f1 f2
-s: 所有行合成一行显示
paste –s f1 f2
文本数据的统计工具
wc(word count)
-m 统计字符
整理文本:sort
把整理过的文本显示在STDOUT,不改变原始文件
sort [options] files
常用选项
-r 执行反方向(由上至下)整理
-n 执行按数字大小整理
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique)删除输出中的重复行
-t c 选项使用c作为字段界定符
-k X 选项按照使用c字符分隔的X列来整理能够使用多次
uniq命令:从输入中删除重复的前后相接的行
uniq [OPTIONS]… [FILE]…
-c 显示每行重复出现的次数
-d 仅显示重复过的行
-u 仅显示不曾重复的行
常和sort命令一起配合使用:
sort userlist.txt | uniq –c
比较文件:diff和patch
diff 命令的输出被保存在一种叫做”补丁”的文件中
使用-u 选项来输出”同意的(unifed)”diff格式文件,最适用于补丁文件
patch 命令复制在其他文件中进行的改变(要谨慎使用!)
适用-b 选项来自动备份改变了的文件
如
diff –u foo.conf-broken foo.conf-works > foo.patch
patch –b foo.conf-broken foo.patch
按关键字抽取:grep
linux上文本处理三剑客:grep,sed,awk
grep:文本过滤(pattern)工具;
gred,egrep,[fgrep(不支持正则表达式搜索)]
正则表达式
REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义.而表示控制或通配的功能
程序支持:grep,vim,less,nginx等
分两类:
基本正则表达式: BRE
扩展正则表达式:ERE
grep –E,egrep
正则表达式引擎:
采用不同算法,检查处理正则表达式的软件模块
PCRE(Perl Compatible Regular Expressions)
元字符分类:字符匹配,匹配字数,位置锚定,分组
man 7 regex
grep的工具名Global search Regular expression and Printout the line (全局搜索正则表达式并且打印出相印的行)
作用:文本搜索工具,根据用户指定的”模式”对目标文本逐行进行匹配检查:打印匹配到的行;
模式:由正则表达式字符及文本字符所编的过滤条件
如
grep [OPTIONS] PATTERN[FILE…]
grep rot /etc/passwd
grep “$USER”/etc/passwd
grep ‘$USER’/etc/passwd
grep whoami
/etc/passwd
-v 显示不能够被patern匹配到的行
-I 忽略字符大小写
-n 显示匹配到的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-q 静默模式,不输出任何信息
grep –q root /etc/passwd
找到找不到都不显示,配合echo $? 使用,如果显示0说明找到,如果显示为1说明没找到
-A #:after,后#行
-B #:before,前#行
-C #:context,前后各#行
-e 实现多个选项间的逻辑or关系
grep –e cat
-e dog
file
-w整行匹配整个单词
-E 使用ERE
字符匹配:
. :匹配任意单个字符
[:digit:][:lower:][:upper:][:alpha:][:alnum:][:punct:][:space:]
匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
*: 匹配前面的字符一次,包括0次
贪婪模式:尽可能长的匹配
.*:任意长度的任意字符
?:匹配其前面的字符0或1次
+:匹配其前面的字符至少1次
{n}:匹配前面的字符n次
{m,n}:匹配前面的字符至少m次,至多n次
{,\n}:匹配前面的字符至多n次
{n,}:匹配前面的字符至少n次
sed:stream editor,文本编辑工具
awk: linux上的实现gawk,文本报告生成器