正则表达式
文件名通配符当中 * 表示 0或多个任意字符 ? 表示任何一个单一字符
正则当中
字符匹配
. 表示任何字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:] 小写字母 [a-z]
[:upper:] 大写字母 [A-Z]
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
[:digit:] 十进制数字 [0-9]
[:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
[A-Z0-9] 表示大写字符或数字
次数匹配
匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
* 匹配前面的字符任意次,包括0次
贪婪模式:尽可能长的匹配
.* 任意长度的任意字符
\? 匹配其前面的字符0或1次
\+ 匹配其前面的字符至少1次
\{n\} 匹配前面的字符n次
\{m,n\} 匹配前面的字符至少m次,至多n次
\{,n\} 匹配前面的字符至多n次
\{n,\} 匹配前面的字符至少n次
位置锚定:定位出现的位置
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]$ 空白行
grep -v "^[[:space:]]$" passwd 去除文件中的空白行
\< 或 \b 词首锚定,用于单词模式的左侧
\> 或 \b 词尾锚定;用于单词模式的右侧
\<PATTERN\> 匹配整个单词
grep "\<root\>" passwd
实验:通过以下文件,找出以rxxt开头且以相同rxxt结尾,并uid与gid相同的用户
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
rcct:x:1:1:bin:/bin:/sbin/rcct
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
roat:x:4:7:lp:/var/spool/lpd:/sbin/roat
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:Root:/sbin:/sbin/shutdown
roat:x:6:0:Root:/sbin:/sbin/root
halt:x:7:0:halt:/sbin:rooter:/halt
rbbt:x:8:12:mail:/var/spool/mail:/sbin/root
operator:x:11:0:operator:/root1:/sbin/root
root:x:100:100:games:/usr/games:/sbin/root
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
cat passwd |grep "^(\<r..t\>).([0-9]+):\2.\1$"
扩展正则写法:
cat passwd |egrep "^(\<r..t\>).([0-9]+):\2.\1$"
VIM
command(命令模式) 默认模式 移动光标,复制,剪切,撤消,重做…… 进入其他的模式。
ZQ强制退出不保存
ZZ保存并退出
G:跳到最后一行
gg:跳到第一行
numG 或 :num 回车 跳到指定行
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
~:转换大小写
J:删除当前行后的换行符
r:单个字符的替换
dd 剪切一行
p 在当前行的下一行粘贴
P 在当前行的上一行粘贴
dw 剪切一个单词
d$ 剪切光标所在位置到行尾
d^ 剪切光标所在位置到行首
num d: 剪切当前行及其向下指定数量的行
yy 复制一行
yw 复制一个单词
y$ 复制光标所在位置到行尾
y^ 复制光标所在位置到行首
num y: 复制当前行及其向下指定数量的行
v 选择模式
p 粘到光标所在处之后
P 粘到光标所在处之前
V 多行选择模式
p 在当前行的下一行粘贴
P 在当前行的上一行粘贴
insert(插入模式) 编辑文本内容
i ESC回到命令模式
I 光标跳至行首并进入插入模式
A 光标跳至行尾并进入插入模式
a 光标向后移动一个字符并进入插入模式
o 光标向下插入一个新行并进入插入模式
O 光标向上插入一个新行并进入插入模式
exit(退出模式) 保存,退出 :
w保存
q退出
q!强制退出不保存
wq保存并退出
w!强制保存:
1.root
2.文件的owner
3.当前用户对当前文件所在目录有wx权限时,实际会删除该文件再新建。
x=wq
x!
回到命令模式
EscEsc
Esc 等一会
Enter
:r /etc/issue 读取文件内容,将内容输入到当前文本的最后
:! ifconfig ens33 将命令的输出结果显示,并不存入文件,按q结束命令输出
:r! ifconfig ens33 将命令的输出结果输入到当前光标所在行的下一行
:.! ifconfig ens33 将命令的输出结果输入到前当行,替换原有内容
:%s/\<root\>/rooter/g
:%s/\(\<r..t\>\)/\1er/gi 支持基本正则表达式 不加g时每行的第一个关键字替换,加g则全替换
地址定界
:start_pos,end_pos
# 具体第#行,例如2表示第2行
#,# 从左侧#表示起始行,到右侧#表示结尾行
#,+# 从左侧#表示的起始行,加上右侧#表示的行数
:2,+3 表示2到5行
. 当前行
$ 最后一行
.,$-1 当前行到倒数第二行
% 全文, 相当于1,$
:%s/\/bin\/bash/\/sbin\/nologin/g 或使用:%[email protected]/bin/[email protected]/sbin/nologin
visual(选择模式)
replace(替换模式)
groupadd
-g GID GNAME
-r GNAME
groupdel GNAME
gpasswd
Options:
-a, --add USER 增加单个用户到指定组当中(组管理员可执行)
-d, --delete USER 从指定组中删除单个用户(组管理员可执行)
-r, --delete-password 将指定组的组密码删除(组管理员可执行)
-R, --restrict 限制组成员访问该组
-M, --members USER,... 一次性设置组成员(仅root执行)
-A, --administrators ADMIN,... 设置组管理列表(root执行)
newgrp groupname
用户会打开一个子shell,在这个子shell下,该用户的主要组切换为该组,若该用户本不属于该组,则要输入组密码,若该组属于用户的附加组之一,则无需输入密码。
groupmems
-g GNAME
-a USERNAME 加用户加入到指定组
-d USERNAME 把用户从指定组删除
-p 清除该组的所有成员
-l 列出组成员列表
groups USERNAME
查看用户属于哪些组(包含主要组)
chown 仅root才能执行
USERNAME FILENAME/DIRNAME
所属人修改文件的权限
-R 递归修改
.|: GNAME FILENAME/DIRNAME 修改所属组
USERNAME.|:GNAME FILENAME/DIRNAME 同时修改文件的所属人及所属组
--reference=USERNAME FILENAME/DIRNAME 将指定文件的从属关系设置为与指定文件相同
chgrp 仅root和文件的所属人可以更改文件的所属组(但所属人一定要属于目标组)、
GNAME FILENAME/DIRNAME
-R 递归修改
文件的权限
rw- r-- r--
owner group other
FILE
**当仅r权限作用在文件上的时候,表示用户可以读取该文件的内容
*当仅w权限作用在文件上的时候,表示用户可以修改该文件的内容
当仅x权限作用在文件上的时候,没有意义。
**当rw同时作用在文件上的时候,表示用户可以读写文件
**当rx同时作用在文件上的时候,表示用户可以读且可以执行该文件
当wx同时作用在文件上的时候,权限与仅w相同
**当rwx同时作用在文件上的时候,用户可以读写执行。
DIRECTORY
当仅r权限作用在目录上的时候,表示用户可以短列出查看目录下的文件名
当仅w权限作用在目录上的时候,没有意义
*当仅x权限作用在目录上的时候,表示用户可以进入且可以访问目录下的文件,但不能列出文件名
当仅rw权限同时作用在目录上的时候,权限等同于仅r权限作用在目录
**当仅rx权限同时作用在目录上的时候,表示用户可以进入,可以访问子文件,同时可以长列出文件
*当仅wx权限同时作用在目录上的时候,表示用户可以进入,可以访问子文件,可以创建及删除,但不能列出
**当rwx权限同时作用在目录上的时候,表示用户有完整权限
X 对于批量增加x权限时,可以跳过文件而只对目录加x
chmod --reference
-R
r:4
w:2
x:1
7:rwx
6:rw
5:rx
4:r
3:wx
2:w
1:x
umask
表示用户创建文件的默认权限,目录最高777,文件最高666
umask xxx 设置umask
umask 查看umask
~/.bashrc 将umask设定保存以让下次登录时仍然有效
umask -S 显示创建目录的默认权限
uid: 对于可执行的二进制文件作用了suid权限之后,任何人在执行该文件时,可临时拥有其所属人的权限
sgid: 对于可执行的二进制文件作用了sgid权限之后,任何人在执行该文件时,可临时拥有其所属组的权限
对于目录作用了sgid权限之后,任何人在该目录下创建的文件的所属继承目录的所属组
sticky:对于目录作用了sticky之后,该目录下的文件及子目录,仅其所属人和目录的所属人及root才能删除。
chmod u+s
chmod g+s
chmod o+t
chmod 4777 suid
chmod 2777 sgid
chmod 1777 sticky
chattr +a 不可修改,可以追加,不能删除
chattr +i 什么也不做,只能读
lsattr filename
ACL
Cenots6: 新建分区默认没有acl支持,开启的方法.
fdisk /dev/sda同 分区
n回车
回车
+500M 回车
w回车
partx -a /dev/sda 通知内核更新分区表
mkfs.ext4 /dev/sda6
tune2fs -l /dev/sda |grep acl
none
tune2fs -o acl /dev/sda6
tune2fs -l /dev/sda |grep acl
acl
Centos7:无论何时都支持acl
owner > acl user > group acl group 谁多谁优先 > other
setfacl -m u|g:username|groupname:rwx filename|dirname
setfacl -x u|g:username|groupname filename|dirname
setfacl -b filename |dirname
setfacl -m m:r-x filename|dirname 或 chmod g=rx filename |dirname
通过文件设置acl
file.add 内容如下
u:liubei:rwx
g:shuguo:rx
setfacl -M file.acl house/
通过文件删除acl
file.del 内容如下
u:liubei
g:shuguo
setfacl -X file.del house/
默认权限
setfacl -m d:u:liubei:rwx house
setfacl -Rm u:liubei:rwx house
getfacl house
file: .
owner: root
group: root
--------------------------------------- setfacl -Rm u:liubei:rwx house
user::rwx
user:liubei:rwx
group::r-x
mask::rwx
other::r-x
---------------------------------------- setfacl -m d:u:liubei:rwx house
default:user::rwx
default:user:liubei:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
setfacl -k house/ 仅删除默认权限
实验:包含acl权限的目录使用打包工具备份及恢复
1.备份
tar -cvf house.tar house
getfacl -R house > acl.txt
2.还原
tar -xvf house.tar -C /var/tmp
cp acl.txt /var/tmp
setfacl --restore acl.txt
原文地址:http://blog.51cto.com/13769389/2120869