linux知识总结(二)
目录:
1.知识总结图
2.一些较为模糊命令的回顾
3.正则表达式与扩展正则表达式
一.知识总结图
二. 模糊命令回顾
1.chown
chown 可以改变文件的所属人和所属组
[xiaoyu@localhost app]$ touch xiaoyufile1
[xiaoyu@localhost app]$ ll ./xiaoyufile1
-rw-rw-r--. 1 xiaoyu xiaoyu 0 Jan 20 23:03 ./xiaoyufile1
[xiaoyu@localhost app]$ chown liubei xiaoyufile1
chown: changing ownership of ‘xiaoyufile1’: Operation not permitted
[xiaoyu@localhost app]$ exit
logout
[root@localhost app]# chown liubei xiaoyufile1
[root@localhost app]# ll ./xiaoyufile1
-rw-rw-r--. 1 liubei xiaoyu 0 Jan 20 23:03 ./xiaoyufile1
[root@localhost app]# chown xiaoyu xiaoyufile1
[root@localhost app]# ll ./xiaoyufile1
-rw-rw-r--. 1 xiaoyu xiaoyu 0 Jan 20 23:03 ./xiaoyufile1
[root@localhost app]# chown liubei.liubei xiaoyufile1
[root@localhost app]# ll ./xiaoyufile1
-rw-rw-r--. 1 liubei liubei 0 Jan 20 23:03 ./xiaoyufile1
[root@localhost app]# chown xiaoyu.xiaoyu xiaoyufile1
[root@localhost app]# ll ./xiaoyufile1
-rw-rw-r--. 1 xiaoyu xiaoyu 0 Jan 20 23:03 ./xiaoyufile1
[root@localhost app]# su - xiaoyu
Last login: Sat Jan 20 23:00:59 CST 2018 on pts/0
[xiaoyu@localhost ~]$ cd /app
[xiaoyu@localhost app]$ chown .liubei xiaoyufile1
chown: changing group of ‘xiaoyufile1’: Operation not permitted
根据以上的命令结果可以得出结论:
1.当前用户为文件所属人时,无权更改文件的所属人和所属组
2.只有当前用户为root时,才可以更改文件所属人和所属组
3.命令方式为 chown 所属人.所属组 filename 更改文件的所属人和所属组
2.chmod
chmod 数字的用法我大致记住了 (chmod xxx 文件名),但是符号表示法比较陌生
[root@localhost app]# ll ./xiaoyufile1
-rw-rw-r--. 1 700 xiaoyu 0 Jan 20 23:03 ./xiaoyufile1
[root@localhost app]# chmod o-w xiaoyufile1
[root@localhost app]# ll ./xiaoyufile1
-rw-rw-r--. 1 700 xiaoyu 0 Jan 20 23:03 ./xiaoyufile1
[root@localhost app]# chmod o=rwx xiaoyufile1
[root@localhost app]# ll ./xiaoyufile1
-rw-rw-rwx. 1 700 xiaoyu 0 Jan 20 23:03 ./xiaoyufile1
[root@localhost app]# chmod g=rwx xiaoyufile1
[root@localhost app]# ll ./xiaoyufile1
-rw-rwxrwx. 1 700 xiaoyu 0 Jan 20 23:03 ./xiaoyufile1
[root@localhost app]# chmod u=rwx xiaoyufile1
[root@localhost app]# ll ./xiaoyufile1
-rwxrwxrwx. 1 700 xiaoyu 0 Jan 20 23:03 ./xiaoyufile1
[root@localhost app]# chmod a-w xiaoyufile1
[root@localhost app]# ll ./xiaoyufile1
-r-xr-xr-x. 1 700 xiaoyu 0 Jan 20 23:03 ./xiaoyufile1
[root@localhost app]# chmod a-rx xiaoyufile1
[root@localhost app]# ll ./xiaoyufile1
----------. 1 700 xiaoyu 0 Jan 20 23:03 ./xiaoyufile1
[root@localhost app]# chmod u+rx xiaoyufile1
[root@localhost app]# ll ./xiaoyufile1
-r-x------. 1 700 xiaoyu 0 Jan 20 23:03 ./xiaoyufile1
```
根据以上命令运行结果可以得出结论:
1. 第一种用法: chmod u/g/o=xxx filename 将文件所属人/所属组/其他人的权限改为 xxx
2. 第二种用法; chmod u/g/o/a -/+ xxx filename 将文件所属人/所属组/其他人/所有人加上xxx权限
3.缺点:每次只能对一种权限进行操作,较为繁琐
优点:较为准确
3.ACL访问控制列表
ACL权限:
由于系统用户过多,会出现不同用户有着不同的权限需求,所以普通的 文件所属人,文件所属组,
其他人这种普通的权限设置方式便不能满足要求。
而ACL权限可以给特定的用户以特定的访问权限来实现其要求。
1.ACL设置个人权限
在设置后,ll命令会显示权限会多一个加号,此时应该调用getfacl 路径名/ 查看权限,
会发现此时多了一个user:liubei:rwx权限, 原本liubei在文件夹里是没有写入文件的权限的,
而在设置之后便可在此文件夹里写入内容
2.ACL设置组权限
可以在图中看到,liubei,zhangfei都属于shuguo组,在设置了组权限之后,
两者均可在文件夹里写入内容。 故ACL也可设置组权限
3.清空ACL权限
可以看到原本在ll命令下是有+的,在输入命令后+消失了,即取消了ACL权限。
ACL总结
设置单用户: sefacl -m u:用户名:xxx(权限) 路径
设置组: sefacl -m g:组名:xxx (权限) 路径
取消ACL: setfacl -b 路径
权限优先级:owner > acl user > group 与 acl group 谁的权限多,谁优先 > other
三.正则表达式与扩展正则表达式
这部分没得说,需要大量的练习
添加用户bash、testbash、basher、sh、nologin(其shell为/sbin/nologin),找出/etc/passwd用户名同shell名的行
cat /etc/passwd | grep "\(^.*\)\>.*\<\1$"
显示三个用户root、mage、wang的UID和默认shell
cat /etc/passwd | grep -w "^root\|mage\|wang\>"|cut -d":" -f3,7
找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行
cat /etc/rc.d/init.d/functions|grep -w "^[[:alpha:]]*_.*[(][)].*"
使用egrep取出/etc/rc.d/init.d/functions中其基名
echo "/etc/rc.d/init.d/functions"|egrep -o "\<[[:alpha:]]*$"
使用egrep取出上面路径的目录名
echo "/etc/rc.d/init.d/functions"|egrep -o "^.*/"
显示/proc/meminfo文件中以大小s开头的行
cat /proc/meminfo |grep -i ^s
显示/etc/passwd文件中不以/bin/bash结尾的行
cat /etc/passwd | grep -v /bin/bash
显示用户rpc默认的shell程序
cat /etc/passwd |grep "^rpc\b" |cut -d: -f71
找出/etc/passwd中的两位或三位数
cat /etc/passwd |grep "\b[0-9]\{2,3\}\b"
显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行
cat /etc/grub2.cfg |egrep "^[[:space:]]+[[:graph:]].*"
找出"netstat -tan"命令的结果中以'LISTEN'后跟任意多个空白字符结尾的行
netstat -tan |grep "LISTEN[[:space:]]\+$"
显示CentOS7上所有系统用户的用户名和UID
cat /etc/passwd |cut -d: -f1,3 |grep -v root |grep "\b[[:digit:]]\{1,3\}\b$"