umask权限:用来设置默认创建文件的权限
umask权限+文件default权限=666
(Linux默认新建文件最大权限是666,不是777,缺少x权限,但是可以人为改成777)(如果umask值是123,那么新建文件默认值就是543,但实际新建文件默认值为644)
umask原理:
umask值转换成二进制时,其中的0表示不关心对应文件default权限(110110110),其中是1则表示对应default权限为0。
110 110 110 default
001 010 011 umask
110 100 100 结果(644)
所以,更准确的算法是:新建文件权限为666-umask,如果里面出现奇数位,则把奇数位加一即可
umask权限+文件夹default权限=777
umask num 修改umask值为num(临时)(umask值可以在用户家目录的.bashrc文件中设置,写入umask num 保存即可)(全局设置写在:
/etc/bashrc)(也可以用类似这种方式设置:umask u=rw g=r o=
)
umask -S
显示新建文件夹的默认权限
特殊权限:
SUID,SGID,Sticky
SUID:占用x权限位置,显示为s,打破原本访问权限规则,如果一个可执行文件有SUID权限,当一个用户去执行这个文件时,该用户的身份将临时变为那个文件的所有者的身份,如passwd命令的文件(SUID权限只作用于二进制可执行文件)
chmod u+s file
,给文件加上SUID权限,数字法加s权限要单独在前面加4,如:chmod 4755 file
加上SUID权限
chmod 755 file
去掉SUID权限
SGID:类似SUID,不过是继承所属组(作用于二进制可执行文件)(当SGID 作用于目录时,之后在这个目录新建的文件的所属组将自动变为目录的所属组)
chmod g+s file
设置SGID权限
chmod 2755 file
设置SGID权限
chmod 6755 file
同时设置SUID和SGID
Sticky:设置了这个权限,即是文件信息目录/data开放了权限,user用户也不能删除此目录中其他user的文件(作用于文件夹)
chmod o+t file
设置Sticky权限
chmod 1755 file
设置Sticky权限
可以对root账号进行限制的方式:
以下方式需要用lsattr file
的方式才能显示
chattr +i file
限制这个文件不能被删除、追加、更改(包含这个文件的目录也不能被删除)
chattr +a
只能追加内容
ACL:单独给某个用户或组设置权限(常用于临时加权限)
setfacl -m
设置文件的acl权限
u:user:right file
针对用户对于某个文件设置(自定义用户)
g:group:right file
针对组对于某个文件设置(自定义组)
setfacl -x
删除文件的acl权限
u:user file
针对用户
g:group file
针对组
setfacl -b file
清空文件的acl权限
getfacl file
查看某个文件的acl权限设置
设置了acl权限,对应文件,用ll查看会出现+
acl权限执行顺序:所有者,自定义用户,自定义组,其他人
如果对于一个文件,有两个自定义组,而某个用户同时属于这两个组,那么他同时拥有这两个组的权限
mask:加了acl权限的文件,所属组的显示权限不再是group,而会显示mask权限。mask权限可理解为限高
setfacl -m mask::right file
修改file文件的acl的mask最大权限,如果mask只有r,就算有user对于这个文件的acl权限是rwx,也只有r权限起作用
抽取文本的工具:
文件内容:less和cat
文件截取:head和tail
按列抽取:cut
按关键字抽取:grep
文件查看:
cat
:
-n file
查看标上行号的内容
-b file
查看标上行号的内容(去掉空行)
-s file
压缩相邻的空行
-E
能显示文件的换行符
-A
除了换行符还能看到tab键
tac file
反向显示cat显示的内容
rev file
把每一行内容反向显示
more file
分页查看文件 (文件到底页就会退出)
less file
分页查看文件 (文件到底页不会退出,且支持搜索)
head file
只显示文件前几行(默认前10行)
-(n )num
设定显示前num行
-c num
设定取前num个字节
tail file
只显示文件的后几行(默认后十行)
常用于观察文件日志
-f -n num
查看文件最后num行而且不退出,可以跟踪文件变化(但是如果文件被删除,tail不会提示已删除,当创建了同名文件,tail也不能再继续跟踪)(跟踪文件描述符descriptor)
tailf file
类似tail -f,但是这个命令只有在文件增长时访问
-F -n num
和-f相似,但是如果文件被删除,tail会提示文件找不到了,当重新创建了同名文件,会提示再次出现,并且继续跟踪(跟踪文件名name)
less,more,head,tail通常配合管道使用
cat /dev/urandom |tr -dc 'a-zA-Z0-9_' |head -c12
在随机字符文件urandom里面,取前12个字符(只包含大小写字母数字和下划线),作为口令生成器
cut -d分隔符x -fn1,n2,n3-n4 file
以x分隔符为标志,取file文件的第n1和n2列,取n3到n4列
df | cut -cn1-n2
查看磁盘使用情况中第n1个字符到第n2个字符的内容
df | tr -s " " %|cut -d% -fn1
同样用于完成上面一个命令的任务,但是不用数字符数了
paste f1 f2
横向合并f1和f2的内容
-d分隔符x
以x分隔符显示
-s
转置显示
wc file
统计文件单词(word count)
返回:行数 元素个数 字节 file
-l
只统计行数
-w
只统计单词
-c
只统计字节
-L
显示文件最长行长度
sort file
把文件内容排序显示(默认以字符顺序)
sort -t分隔符x -knum file
把file文件以x为分隔符,以分出来的第num列排序
-n
以数字顺序排序
-r
倒序排序
-f
忽略大小写
-u
去掉重复内容(unique)
-R
随机排序(seq num |sort -R)
uniq
从输入中删除相邻的重复行
-c file
统计相邻重复出现行的次数
-d
仅显示相邻重复的行
-u
不显示相邻重复的行
取两个文件的交集:
cat f1 f2 |sort|uniq -d
diff f1 f2
比较两个文件不同之处
-u
更详细的显示
patch
可以对文件进行恢复
文本三剑客:grep、sed、awk
grep:文本过滤
grep [options] pattern [file...]
pattern如果不用正则表达式,用字符串,那么命令就会在文件中找出包含此pattern字符串的行
--color
用其他颜色显示匹配的pattern
-v
是显示不匹配的行
-i
忽略大小写
-n
显示匹配的行号
-c
统计匹配的行数
-q
静默模式(无论是否找到都不会显示)(配合echo $?使用,找到显示为0,没找到为1)
-Anum
把包含pattern的第一行以及后续num行显示出来
-Bnum
前num行
-Cnum
前后num行
-w
显示pattern是一个完整单词的行
-f file
把文件内容作为pattern
取交集的另一种方法:grep -f f1 f2
基本正则表达式:BRE
拓展正则表达式:ERE