开场白
对于小白来说,在接触Linux用户权限以及正则表达式的时候,直接晕在厕所
权限全程下来,那是直接晕头转向,就像毛线球一团糟,根本找不到线头,后来我是怎么解决的呢?
我就把权限形象化,拿现实生活中的例子来做比喻,豁然开朗
当我把权限这块理的差不多的时候,又学了个正则,这次不用说,又倒了
在学正则的时候,咦,这不和ASCII码一样吗,错啦,简直不一样!意义大不相同,这时候就容易搞混了
正则我也没有什么好的学习技巧,把前面的先忘记,经常锻炼吧,有好方法的老铁可以补充。
先写这么多吧,知识有限--
下面是一些基本命令介绍
输入、输出重定向
>:覆盖 >>:追加 2>:输出错误 2>>:追加错误 <:输入
2>&1 将错误结果转为正确结果 |& 将正确及错误都传递给右边命令用 1>&2 将正确结果转为错误结果
多行重定向: << 例子:cat > /app/test.txt << EOF
hello
123
nihao
EOF
tr命令:转换或删除字符
管道:|
例子
管道与tr命令与重定向命令的结合使用:
将登录至将前系统上用户信息中的后3行的信息转换为大写后保存至/tmp/who.out文件中;
答: # who | tail -n 3 | tr 'a-z' 'A-Z' > /tmp/who.out
/etc/passwd
存放用户信息
/etc/shadow
存放密码的信息
/etc/group
存放组属性
/etc/gshadow
存放组密码的属性
groups:查看当前用户组成员信息 groups 用户:查看这个用户所在的组以及成员
管理用户(user)的工具或命令;
useradd :添加用户
adduser :添加用户
passwd :为用户设置密码
usermod :修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
userdel:删除用户 id 用户名:查看用户的所属人以及所属组
管理用户组(group)的工具或命令;
groupadd :添加用户组;
groupdel :删除用户组;
groupmod :修改用户组信息
groups :显示用户所属的用户组
groupdel:删除组 gpasswd指定组: -a 用户 将用户添加到指定的组中 -d 用户:从指定组删除
groupmems 修改用户组信息 -g指定组 -a指定用户加入组
简单化理解用户和组的关系:
比如 学生是用户,教室时主组,一个学生只能在一个教室上课,而一个教室可以有多个学生,而附加组就比如选修课。
文件的权限
rwxrwxrwx 没三位为一组,分开来对应着 用户 组 其他人
r表示读 w表示写 x表示执行
而修改文件的权限用:chmod修改权限 chown修改属主 chgrp修改属组 umask修改默认权限-遮罩码
特殊权限位:suid sgid sticky
简单来说就是:对于添加了suid的文件来说,任何人在执行该文件时临时拥有了改文件所属主的权限。
sgid:同suid一样 ,但对于目录来说,任何人在该目录下创建文件,文件的权限继承改组的所属组
sticky:对目录设定来说,仅属主属组和root才能删除
ACL:给指定用户加权限
setfacl
就是说,比如有个文件它权限位的其他人权限时0,而这个用户不是这个文件的属主和属组,这时候给他加个指定权限就可以查看或编辑这个文件了。
sort排序:-u去掉重复项 -r倒序 -n将制定列当作整体排序
uniq(切):-c显示每行重复的次数 -d仅显示重复的行 -u仅显示不重复的行
这两个命令常配合一起使用
grep:文本过滤,用于搜索,是Linux文本处理三剑客之一
配合正则表达式使用
egrep 扩展正则 fgrep不使用正则
命令格式:
grep[参数]files
参数:
-c: 只输出匹配行的数目
-i: 不区分大小写
-n:显示匹配航以及行号
-l:查询多文件的时候只输出包含匹配字符的文件名
-v:反向匹配,即显示不匹配的行
-h: 查询的时候不适用文件名
-s:不显示错误信息