首页 > 代码库 > linux系统命令进阶
linux系统命令进阶
1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。
cp -a /etc/group /home/tuser1 chown -R o-rwx /home/tuser1
2、编辑/etc/group文件,添加组hadoop。
新建方法了解到的有如下两种 例子1: echo "hadoop:x:2024:" >> /etc/group 例子2: group hadoop
下面这种的创建方式,相对比较常见,具体看个人操作习惯
3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。
这里也提供两种新建的方法:
例子1: echo "hadoop:x:2020:2026::/home/hadoop:/bin/bash" 例子2: useradd hadoop
讲解:默认创建的用户都会在/home目录下面,默认/bin/bash/下的用户都允许登录系统,如果需要拥有最大的超级管理员权限,只需要将ID号修改为0:0即可。
4、复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用户没有任何访问权限。
[root@bogon ~]# cp -a /etc/skel /home/hadoop [root@bogon ~]# chmod go-y /home/hadoop [root@bogon hadoop]# su hadoop bash: /home/hadoop/.bashrc: Permission denied bash-4.2$
根据上面操作,hadoop,就没有访问家目录的权限了
5、修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop。
chown -R hadoop.hadoop /home/hadoop || chown -R hadoop:doop /home/hadoop
上面两种操作方式都可以执行的,5系列的大部分都是使用前者,后者由于没有环境是否也可行,暂时未知,下次有机会试验,再补上。
6、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;
案例1 [root@bogon hadoop]# grep "^[sS]" /proc/meminfo 案例2 [root@bogon hadoop]# cat /proc/meminfo |grep -i "^s"
讲解:关于这里其实不需要使用管道符号也是可以的 “|” ,在工作中,我们难免需要用到管道符,在写匹配的时候能尽量不用管道最好不用,加多一道管道,意味着需要增加资源的损耗。具体看个人习惯以及需求而定。
7、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;
[root@bogon hadoop]# grep "/bin/nologin" /etc/passwd
8、显示/etc/passw d文件中其默认shell为/bin/bash的用户;
[root@bogon hadoop]# grep "/bin/bash" /etc/passwd
9、找出/etc/passwd文件中的一位数或两位数;
grep -o "[0-9]\{1,2\}" /etc/passwd
10、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;
grep "^[[:space:]]" /boot/grub/grub.conf
11、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;
[root@bogon hadoop]# grep "^#[[:space:]]\+[^[:space:]]\+" /etc/rc.d/rc.sysinit
12、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;
[root@bogon hadoop]# netstat -lan | grep "LISTEN[[:space:]]\+$" 参数介绍: a (all)显示所有选项,默认不显示LISTEN相关 -t (tcp)仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化成数字。 -l 仅列出有在 Listen (监听) 的服務状态 -p 显示建立相关链接的程序名 -r 显示路由信息,路由表 -e 显示扩展信息,例如uid等 -s 按各个协议进行统计 -c 每隔一个固定时间,执行该netstat命令。
13、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;
[root@bogon hadoop]# useradd bash [root@bogon hadoop]# useradd testbash [root@bogon hadoop]# useradd basher [root@bogon hadoop]# useradd nologin -s /sbin/nologin [root@bogon hadoop]# grep "^\(\<[[:alpha:]]\+\>\).*\1$" /etc/passwd
总结:
本章用的最多的就是grep的命令例子了,主要是配合正则去匹配题目上要求的结果,这里对grep的一些高级用法,在下面列举一下。
励志话语:烂木头,如果现在努力了,后面就是甘泉,如果现在不努力,后面将是,噩梦的开始。
grep
一.匹配字符
. 匹配任意单个字符 [ ] 匹配指定范围内的任意字符 [^] 匹配飞指定范围内的任意字符 [:alpha:] 字母字符 [:lower:] 小写字母字符 [:upper:] 大写字母字符 [:digit:] 数字 [:alnum:] 字母数字字符 [:space:] 空白字符(禁止打印),如回车符、换行符、竖直制表符和换页符 [:punct:] 标点字符 [:cntrl:] 控制字符(禁止打印) [:print:] 可打印字符 使用时一般使用两个中括号,具体会在下面的例子中使用。
二.匹配次数
* 匹配前面的字符任一次 .* 匹配任意长度的任意字符(注意贪婪模式,比如 grep “r.*t” /etc/passwd ) x\{m,n\} 指定前面的字符至少出现m次,至多出现N次。 x\{m,\} 指定前面的字符至少出现m次 x\{0,n\} 指定前面的字符至多出现N次 x\{m\} 精确匹配m次 ? 匹配其前面的字符0或1次
三.锚定符
1.^ 锚定行首 grep "^r..t" /etc/passwd 2.$ 锚定行尾 grep "h$" /etc/passwd 3.^$ 锚定空白行 grep "^$" /etc/passwd 4.\< (\b) 锚定词首 grep "\<r..t" /etc/passwd 5.\> (\b) 锚定词首 grep "r..t\>" /etc/passwd 示例(容易混淆): 至少包含一个空白字符 grep "[[:space:]]\{1,\}" /etc/passwd 至少包含一个非空白字符 grep "[^[:space:]]\{1,\}" /etc/passwd 没有一个空白字符 grep -v "[^[:space:]]\{1,\}" /etc/passwd 6.\(\)对字符分组 grep "\(l..e\).*\1r" 示例: grep --color "l\([13]\):\1:.*:\1" /etc/inittab
四.选项
-v:对结果取反 -i:忽略字母大小写 -o:仅显示匹配到的字符串(行的其他内容不显示) -E:支持扩展的正则表达式 -A:显示匹配到的行下面n行 -B:显示匹配到的行上面n行 -C:显示匹配到的行上下面各显示n行 -E:扩展正则表达式egrep -F:一个换行符分隔的字符串的集合fgrep -G:基本正则 -P:调用的perl正则 -e:后面根正则模式,默认无 -f:从文件中获得匹配模式 -i:不区分大小写 -w:匹配整个单词 -x:匹配整行 -z:一个 0字节的数据行,但不是空行
本文出自 “屋檐下的思考” 博客,请务必保留此出处http://wuyanxxk.blog.51cto.com/4130666/1843525
linux系统命令进阶