马哥教育M28-第5-7天的学习总结

马哥M28-第五天、

linux安全的上下文:

进程的发起者       命令       对象

root           ping        127.0.0.1

root           touch       testfile1

primary group :主要组、私有组

supplementary  group : 辅助组、附加组、公有组

/etc/passwd:(里面记录的用户的密码映射到了/etc/shadow)

pwconv :将passwd当中的密码映射到了/etc/shadow

pwunconv:取消映射,密码仍然放在 /etc/passwd当中

/etc/shadow:

用户名

密码位

密码上一次的修改时间

密码的最小存活期

密码的最大存活期

密码过期之前提前多少天提醒用户将会过期

密码过期之后在用户仍不修改密码后多少天触发账户过期

账户过期时间

保留位(暂未使用)

chage [OPTION]...LOGIN

-d LAST_DAY

-E --expiredate EXPIRE_DATE(口令过期)

-I --inactice INACTIE (账户锁定失效未激活)

-m --mindays MIN_DAYS

-M --maxdays MAX_DAYS

-W --warndays WARN_DAYS

-l 显示密码策略

示例:

chage -d 0 tom 下一次登录强制重设密码

chage -m 0 -M 42 -W 14 -I 7  tom

chage -E 2016-09-10 tom

passwd  username :指定要修改密码的用户名(仅root运行,普通用户不输入用户名,可直接修改自己的密码)

-l 锁定用户  实际就是在密码位前加!!

-u 取消用户锁定

-e 强制用户下次登录时更改密码

-n mindays :指定最短使用期限

-x maxdays:指定最大使用期限

-w warndays:提前多少天开始警告

-i inactivedays: 非活动期限

--stdin 从标准输入接收用户密码 (echo "mima" |passwd --stdin tom):多个用户设置同个密码需要使用脚本循环此执行过程

/etc/group

组名

组密码:映射到了/etc/gshadow

GID

组成员:附加组的成员

grpconv 将组密码映射到了/etc/gshadow

grpunconv 取消组密码的映射

/etc/gshadow

组名

组密码

管理员:更改组密码和成员

组成员:功能同/etc/group 中的第四列

vipw = vim /etc/passwd

vipw -s = vim /etc/shadow

vigr = vim /etc/group

vigr -s = vim /etc/gshadow

pwck 检查/etc/passwd 语法

grpck 检查/etc/group 语法

useradd & adduser

-u UID 指定uid 默认从1000开始往后

-o 与 -u配合,不检查UID的唯一性

-g GID或组名 指定用户的主要组为某个已存在的组,可以指定GID也可以指定组名

-G 指定附加组 以逗号为间隔可以同时指定多个,组必须事先存在,可以指定组名或者组ID

-c 注释信息

-d 指定目录路径,如不指定默认在/home下与用户同名。指定时注意,目录名需要已存在,基名不存在。

-s 指定登录shell如下

useradd -s /sbin/nologin test ->创建shell为不可交互式登录的用户

-N 不创建私用组做主组,使用users组做主组

-r 创建系统用户(centos 6及之前的版本 <500,centos 7<1000)

/etc/default/useradd 创建用户的默认配置文件

GROUP=100 表示使用useradd -N默认使用的组为GIP为100的组

HOME=/home 自动创建家目录时,从哪个目录下创建与用户同名的家目录

INACTIVE=-1 用户是否设置密码过期后,多少天账户过期,为-1时,不会触发账户过期

EXPIRE=  是否指定一个账户过期时间,为空表示账户默认永不过期

SHELL=/bin/bash  使用useradd创建用户时,如不使用-s 指定则默认的用户shell为/bin/bash

SKEL=/etc/skel 自动创建家目录时,从哪个目录拷贝模板文件

CREATE_MAIL_SPOOL=yes 创建用户时是否在/var/spool/mail下为用户与用户同名的邮箱文件

手工创建家目录的方法

mkdir /home/machao

chmod 700 /home/machao/

cp -r /etc/skel/.[^.]* /home/machao/

chown -R machao.machao /home/machao

usermod

-u NEWUID 用户名 修改用户的id

-g NEWGID 用户名 修改用户的主要组 可以指定组名,也可以指定GID

-G GID或组名[,组名] 用户名 设定用户的附加组为哪些组,这之前的附加组信息被覆盖,而不会影响之前的附加组

-a 与 -G结合 使用可以增加用户的附加组,而不会影响之前的附加组

-s shell 用户名    修改用户的shell

-c "描述信息"   设置或修改用户的描述信息

-d /path 用户名  修改用户的家目录,新家目录不会自动创建;若要创建新家目录并移 通常和 -m 一起使用!!

-m |--move-home   ##修改用户的家目录通常和-d选项一起使用

-l newname oldname  修改用户的名称

-L :lock指定用户,在/etc/shadow 密码栏增加 !,等同于passwd -l

-U :unlock指定解锁用户,将/etc/shadow密码栏的 !拿掉,等同于passwd -u

-e YYYY-MM-DD:指明用户账号过期日期

-f --INACTIVE:设定非活动期限(密码过期后还有多少天账户失效);0表示密码已过期就禁用帐号,-1表示禁用此功能,默认值是-1

userdel

-r 删除用户名连同家目录及邮箱文件一起删除

:注意使用某普通用户登录之后为完全退出时切换到root下,然后使用userdel -r 删除之前普通用户时会有-bash名的进程占用文件导致无法彻底删除,需要使用将占用进程杀死后才可以正确删除用户

id[OPTION]... [USER]

-u : 显示UID

-g : 显示GID

-G : 显示用户所属的组的ID

-n : 显示名称,需配合ugG使用

su username 表示非登录式切换

su - username 表示登录式切换

-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份;

-f或——fast:适用于csh与tsch,使shell不用去读取启动文件;

-l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;

-m,-p或--preserve-environment:变更身份时,不要变更环境变量;

-s<shell>或--shell=<shell>:指定要执行的shell;

--help:显示帮助;

--version;显示版本信息。

由于su 对转换到终极权限用户root后,权限的无限制性,所以su并不能担任多个管理员所管理的系统。如果用su 来转换到终极用户来管理系统,也不能明确哪些工作是由哪个管理员进行的操作。特别是对于服务器的 管理有多人参和管理时,最佳是针对每个管理员的技术特长和管理范围,并且有针对性的下放给权限,并且约定其使用哪些工具来完成和其相关的工作,这时我们就 有必要用到 sudo。通过sudo,我们能把某些终极权限有针对性的下放,并且不必普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的,所以sudo 也能被称为受限制的su ;另外sudo 是需要授权许可的,所以也被称为授权许可的su;sudo 执行命令的流程是当前用户转换到root(或其他指定转换到的用户),然后以root(或其他指定的转换到的用户)身份执行命令,执行完成后,直接退回到当前用户;而这些的前提是要通过sudo的设置文件/etc/sudoers来进行授权;

chfn 用户名 修改用户的描述信息

chsh -s shell 用户名  修改用户的shell 等同于usermod -s

groupadd -g GID 组名  创建组

groupmod

-n newname oldname  修改组名

-g newdi 组名    修改组id

groupdel 组名    删除组

gpasswd  组名   设置组密码

管理员可以执行

-a 用户名 组名   将某用户以附加组方式加入到某组当中,管理员可以执行

-d 用户名 组名   将某用户从制定组当中踢出,管理员可以执行

-M 用户名[,用户名...]  组名  设置某组的用户列表 ,仅root执行

-A 用户名[,用户名...]  组名  设置某组的管理员列表,仅root执行,组管理员在不是组成员的情况下,仅能修改组密码、加入组成员、踢出组成员,但并不具有组成员的权限

newgrp 组名(普通用户执行) 非附加组成员的普通用户在正确输入组密码后可以使用该命令临时变更主要组;附加组成员的普通用户无需输入密码可以使用该命令临时变更主要组.原主要组临时变成附加组

groupmems 仅root执行

-g(一级选项) 组名 -a(二级选项)用户名   将某用户以附加组方式加入到某组当中

-g 组名 -d 用户名    将某用户从指定组当中踢出

-g 组名 -p           清空所有组成员

-g 组名 -l     查看指定组有哪些成员(仅显示附加组)

groups 用户名  查看指定用户属于哪些组(包含主组和附加组)

chown  仅root才能更改文件的所属人

用户名  filename

用户名.组名 filename 或 用户名:组名 filename  ->同时更改owner和group ,如果"."或":"前省略,则只更改group

-R 递归

--reference=file1 file2   将file1的group信息复制给file2

权限设置

owner    (特殊权限)  u g o

group

other

Read     4       777   600 000 700 ...

Write    2

eXe      1

当仅r权限作用在文件上的时候,用户可以读取该文件的内容:cat less more head tial

当仅w权限作用在文件(与目录区分)上的时候,用户可以修改文件的内容:>>

当仅x权限作用在文件上的时候,无作为

当rw权限作用在文件上的时候,用户可以读写文件  :cat less more head tail vim nano

当rx权限作用在文件上的时候,用户可以执行该文件

当wx权限作用在文件上时候,权限等同于w权限

文件的常见权限是 r-- rw- rwx

针对目录来说:

当仅r权限作用在目录上的时候,用户可以短列出目录下的文件名

当仅w权限作用在目录上的时候,无作为

当仅x权限作用在目录上的时候,用户可以进入该目录,并且知道具体文件名且具有相关权限的情况下,可以访问子文件.

当rw权限作用在目录上的时候,权限等同于仅r权限

当rx权限作

用在目录上的时候,用户进入,长列出.

当wx权限作用在目录上的时候,用户可以进入且可以创建及删除文件,但不能使用文件名通配符

目录的常见权限 r-x rwx

chmod

符号方法 :ugo/a +/-/=  rwx

r:4

w:2

x:1   举例:r不为3 ,因为w+x=3   rwx  r==(w+2)怎么判断!?

-R 递归   --reference file1  file2  将file1的权限复制给file2

X:只给目录以及已有部分x权限的文件加上权限,不给三个权限限位完全没有x的文件加x  --> 判断某一目录下有许多子目录和文件,有的需要x可执行,有的不能被执行,根据判断规则:开始完全没有x的则不追加x权限,已有x权限的目录或文件就可以给追加x权限

练习:

1.创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"

useradd -s /bin/csh -G bin root

2.创建下面的用户、组和组成员关系(经典笔试题)

名字为admins 的组

用户natasha,使用admins 作为附属组

用户harry,也使用admins 作为附属组

用户sarah,不可交互登录系统,且不是admins 的成员,

natasha,harry,sarah密码都是centos

:对用户进行批量创建密码 --> chpasswd -e(只能进行加密处理设置)

:touch chpfile ->文件内容格式要求 [用户名:密码]

chpasswd < chpfile

作业:

1、当用户xiaoming对/testdir 目录无执行权限时,意味着无法做哪些操作?

答:不能cd到testdir目录下;只能短列出

2、当用户xiaoqiang对/testdir 目录无读权限时,意味着无法做哪些操作?

答:不能在该目录下使用文件名、通配符,不能修改(可以创建和删除;在知道文件具体路径下进入到该目录下然后根据文件对其权限的约束进行相应的操作)

3、当用户wangcai 对/testdir 目录无写权限时,该目录下的只读文件file1是否可修改和删除?

答:不可以

4、当用户wangcai 对/testdir 目录有写和执行权限时,该目录下的只读文件file1是否可修改和删除?

答:不可以修改;可以删除(因为有w权限,所以可以创建和删除)

5、复制/etc/fstab文件到/var/tmp下,设置文件所有者为wangcai读写权限,所属组为sysadmins组有读写权限,其他

人无权限

答:

6、误删除了用户wangcai的家目录,请重建并恢复该用户家目录及相应的权限属性

1. mkdir /home/wangcai

2.chmod 700 /home/wangcai

3.chown -R wangcai.wangcai /home/wangcai

4.cp /etc/skel/.[^.]* /home/wangcai

5.

马哥M28-第六天、

特殊权限

liubei --> cat(rwxr-xr-x root root)  liubei-> /etc/shadow(r-------- root root)

no

liubei --> passwd(rwsr-xr-x root root)  root-> /etc/shadow(r-------- root root)

yes

SUID:当对一个可执行的二进制文件作用了suid权限之后,任何人在执行该文件时临时拥有其所属人的权限(可执行的二进制文件,编译好之后不可被更改,所以考虑到安全性;临时拥有所属人的权限不一定是root,要根据文件实际所属人)

SGID:当对一个可执行的二进制文件作用了sgid权限之后,任何人在执行该文件时临时拥有其所属组的权限。

当对于一个目录作用了sgid权限之后,任何人在该目录下创建的文件的所属组与该目录的所属组相同。

Sticky:当对于一个目录作用了sticky权限之后,该目录下的文件仅其文件的所属人或目录的所属人及root才能删除。

chmod u+s 4xxx

chmod g+s 2xxx

chmod o+t 1xxx

即有suid又有sgid 6xxx

即有suid又有sticky 5xxx

即有sgid又有sticky 3xxx

全有7xxx

权限位原本有x的,加上特殊权限后,特殊权限显示为小写,原本无x,显示为大写。

重点:

实验:刘备关于张飞三个用户有一个共享目录叫shuguo,要求三人的主组不一样的情况下,三人在shuguo目录下所创建的文件(即事先定义好umask,umask越高,创建文件和目录就越低),彼此之间可以读取以及修改,但不能删除其他人创建的文件

用户在创建目录或者文件时,默认所属组必为该用户主要组(继承主要组的元属性),想要使不同用户创建目录或文件能共享,三人创建文件时,当下新建目录或文件可以临时拥有该目录的所属组,所以先设置好三人共同的附加组为此目录的主要组!!

以下简写过程,思路整理:

chgrp  shuguo shuguo/

chmod g+s shuguo/

gpasswd -a 用户名  组名   将普通用户以附加组的形式添加到指定组当中

umask 022  -> umask此类默认值修改后可以加入到~/.bashrc 或  /etc/bashrc

文件特定权限

chattr +a 不能删除,不能改名,不能修改,可以追加

chattr +i 不能删除,不能改名,不能修改,不能追加

lsattr 查看权限

ACL[访问控制列表]

centos6当中对新建分区开启acl的过程

1.创建分区

fdisk /dev/sda

n回车

回车

+2G回车

w回车

lsblk :创建完成后可以直接查看内核内存中已经生效的分区表(新建分区并没有立刻生效!)

fdisk -l :查看硬盘上已经存在的分区(表)

2.同步分区表

partx -a /dev/sda

3.创建文件系统

mkfs.ext4 /dev/sda6

4.开启acl支持

tune2fs -o acl /dev/sda6

5.查看acl

tune2fs -l /dev/sda6 |grep option

centos7中的所有文件系统以及CentOS6随着操作系统安装是划分的文件系统均已默认开启acl.

权限运行等级

owner

acl user

group

acl group

other

owner > acl user > group 与 acl group 谁的权限多,谁优先 >other

getfacl file | directory

setfacl -m(设置修改) u:wang:rwx file | directory

setfacl -R(针对目录递归)m g:sales:rwX directory

setfacl -m g:salegroup:rw file | directory

setfacl -m d(default策略):u:wang:rx directory

setfacl -x(删除acl权限) u:wang file | directory

setfacl -X(读取文本批量执行) file.acl directory

setfacl -m m(mask):r-x file | directory  设置上限阀值 或 chmod g=r-x

setfacl -d(设置默认acl权限) -m u/g:username/groupname file |directory

setfacl -k file | directory 清除默认权限(default)

setfacl -b file | directory --remove-all:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留。

acl权限的备份以及还原:(***)

getfacl file |directory > acl.txt

setfacl --restore acl.txt

练习:

1、在/testdir/dir里创建的新文件自动属于g1组,组g2的成员如:alice能对这些新文件有读写权限,

组g3的成员如:tom只能对新文件有读权限,其它用户(不属于g1,g2,g3)不能访问这个文件夹。

2、备份/testdir/dir里所有文件的ACL权限到/root/acl.txt中,清除/testdir/dir中所有ACL权限,最后还原ACL权限

cat

-E 显示换行符$

-v 显示^M

-T 显示^I即tab

-A = -EvT

-n 输出的结果前显示行号

-b 输出的结果前显示行号,非空行不参与排列

-s 将连续的空行压缩为一行

联系与tr -s  --squeeze(挤压,榨取,轻轻地捏)-repeats   将连续重复出现字符去重显示单个

tac   :内容倒序显示

less | more -> b向下翻页,f向上翻页;  less -> /string搜索还会高亮显示!

head  -n N :取头几条记录,默认是取10条   :以行为记录,取指定行记录

-c  :按字节取

tail  -n N -f :取倒数N条信息,默认是取10条 :以行为记录,取指定行记录

-c  :按字节取

head和tail配合使用,通常可以取指定区间的行记录信息

cut : -f1,2,3/1,3/1-3    那么输出的时候就根据-d选项规定的分隔符自动分隔输出 ,

**   -c :以字节切割取值,可以指定范围取值   cut -c2-4 "abcde"  -->bcd

--output-delimiter="任何非特殊字符"  替换输出分隔符为指定字符

Linux使用utf-8编码的时候-- 一个汉子占三个字节,区别于其他的字符编码

paste :合并文件

-d 分隔符,指定分隔符,默认tab

-s  所有行合成一行显示  a   b   c

paste f1 f2   -> f1文件的内容显示在左半部分,f2的内容显示在右半部分;

f1f2

a1

b2

c3

paste -d: f2 f1

1:a

2:b

3:c

sort

-n 按数字排列

-r 倒序排列,默认升序

-t 指定分隔符

-k 指定哪一列   sort -t -kn[,m]

-f 忽略大小写

-u 删除输出中的重复行

练习:利用df,取出分区利用率的最大值,只要数字。

df |tr -s " " : |cut -d: -f5 |sort -n |tail -n 1 |cut -d% -f1

uniq

去除连续重复行,往往和sort配合使用,先排序,再去重

-c 显示重复的次数

-d 仅显示重复行     uniq -cd

-u 仅显示非重复行

实验:通过查看httpd的访问日志/var/log/httpd/access_log来显示出访问网站最多的来源ip列表,显示结果时显示出访问次数。

答案:cut -d" " -f1 access_log  |sort |uniq -c |sort -nr

网站部署过程

[[email protected] ~]# service httpd restart

[[email protected] ~]# iptables -F

[[email protected] ~]# cd /var/www/html/

[[email protected] html]# vim index.html

diff

diff f1 f2 比较两个文件的不同之处

diff -u f1 f2 > diff.log    -u unified 统一的,补丁文件格式

rm -f f2  删除新代码文件

patch -b f1 diff.log  自定备份源文件为f1.orig ,并生成以源文件名命名的升级补丁之后的新文件

[mv f1 f2

mv f1.orig f1]   备份升级后的文件,并还原源文件

练习:

以数字方式显示/etc/passwd文件的权限

stat -c %a /etc/passwd

stat /etc/passwd |head -4 |tail -1 |tr [:punct:] - |cut -d- -f3 |cut -c 2-4

stat /etc/passwd |head -n 4|tail -n 1 |cut -d: -f2 |tr -s "[[:punct:]]" " "|cut -d" " -f2 |cut -c2-4

作业:

1、找出ifconfig “网卡名” 命令结果中本机的IPv4地址

ifconfig eth0 |head -2 |tail -1 |tr -s " " : |cut -d: -f4

2、查出分区空间使用率的最大百分比值

1.注意:分隔符必须统一,空格多一个也不可以(空格也是一个字符)

3、查出用户UID最大值的用户名、UID及shell类型

cat /etc/passwd |cut -d : -f1,3,7 | sort -t: -k2 -n |tail -n 1

4、查出/tmp的权限,以数字方式显示

stat -c "%a" /tmp |cut -c 2-4

%a   Free blocks available to non-superuser 普通用户可用的block数量

%b   Total data blocks in file system 分区的总数据块数量

%c   Total file nodes in file system 文件系统的inode总数

%d   Free file nodes in file system 空闲inode数量

%f   Free blocks in file system 可用的block数量

%C   Security context in SELinux selinux 安全上下文

%i   File System ID in hex  分区ID(十六进制)

%l   Maximum length of filenames 分区文件名最大长度

%n   File name  文件名

%s   Block size (for faster transfers) 块大小(都是系统block的大小)

%S   Fundamental block size (for block counts) 基本块大小(都是系统block的大小)

%t   Type in hex 文件系统类型(格式化的类型,十六进制)

%T   Type in human readable form 文件系统类型(格式化的类型,可读形式)

stat -f -c "%a %b %c %d %f %C %i %l %n %s %S %t %T" file

5、统计当前本机运行的进程数,并按从大到小排序 ps axo comm

ps axo comm | sort -r | uniq -c  |sort -nr

tr -s :去除重复项字符单独输出一次

stat filename ->查看文件状态 (包含权限数字、字符表示等详细信息)

stat /etc/passwd |head -n 4|tail -n 1 |cut -d: -f2 |tr -s "[[:punct:]]" " "|cut -d" " -f2 |cut -c2-4

**stat -c a% /etc/passwd   ->利用stat -c选项配合各个表达式来进行定向取值(如权限数字表示、字符表示)

马哥教育M28-第七天

grep

--color=auto 关键字高亮显示

-v 反向搜索

-i 忽略大小写

-n 显示行号

-c 不显示搜索结果,仅显示匹配的行数

-o 仅显示匹配到的字符串

-q 静默输出

-A #  显示搜索行及其向下相临的#行

-B #  显示搜索行及其向上相临的#行

-C #  显示搜索行及其向上和向下相临的#行

-e char1 -e char2 [-e charN] 多个选项间or关系

-w 匹配整个单词

-E 或egrep 支持扩展正则表达式

-F 或fgrep 不支持正则表达式

锚定重点理解总结:锚定可以理解为具有定标的作用,最终锚在哪,最大匹配就都哪结束,如词首锚定或左锚定后没有跟任何单词(字母和数字),即视为匹配到下一个单词前结束位置

1.锚定针对的对象必须是单词-->Linux中对单词的自动识别是根据空格和标点符号来的,所以词首、词尾锚定接标点符号或者空格都是没有意义的!

2.重点:正则表达式(标准正则与扩展正则)中的位置锚定 -> \<词首锚定 和\>词尾锚定,锚定的对象必须是单词(可以使用数字和字母作为一个整体,系统自动以标点符号和空格识别单词)

3."{}"在正则表达式中作为范围划定的理解:注意,{2,3} 表示的是包含两次匹配或者三次匹配的表达式,那么三次包含两次(对于某些大整体包含小整体)要注意;

比如,利用扩展正则表达式分别表示出0-9  10-99,100-255 --》 三位数字是由三个单独的数字字符组成的,所以,三位数既包含两位数又包含一位数,所以在单独输出表示0-9一位数字的时候,必须使用词锚定来进行位置锚定,明确搜索出想要的只有一位组成的单词即数字!

4.正则表达式如grep 、egrep在完成表达式搜索后,对于以词首锚定后面没有任何单词,即认为表达式完成搜索后遇到标点符号并且在遇到第一个单词(字母)前结束匹配; 例如:echo '/etc/rc.d/init.d/..functions' |grep "/.*\<",如果没有\<词首锚定,那么后面的所有字符都会被.*完全匹配,正是由于词首锚定锚定的位置为空,所以表达式只匹配到..就结束,不在匹配下面的单词

^  和 $   注意,这个两个特殊字符表示的含义针对的是行,必须满足行记录下满足开头或结尾,单独作用在行记录上的某些字符是不正确的,不具备意义

搜索空行时需要注意:^$表示纯空行,而有些空行实际不空,有水平或垂直空白符如空格或tab等,所以正则表达式 ^[[:blank:]]*$

nmap -v -sP 172.18.250.0/24 |grep -B1 'Host is up' |grep for |cut -d" " -f5

正则表达式

去除配置文件中的注释行和空白行

grep -v "^#\|^[[:blank:]]*$" /etc/httpd/conf/httpd.conf

练习:

1、显示/proc/meminfo文件中以大小s开头的行(要求:使用两种方法)

cat /proc/meminfo |grep "^s\|S"

cat /proc/meminfo |grep -i ^s

grep ^[sS] /proc/meminfo

grep -e ^s -e ^S /proc/meminfo

2、显示/etc/passwd文件中不以/bin/bash结尾的行

cat /etc/passwd  |grep -v "/bin/bash$"

3、显示用户rpc默认的shell程序

grep -w "^rpc" /etc/passwd |cut -d: -f7

4、找出/etc/passwd中的两位或三位数

cat /etc/passwd | grep  -o "\<[[:digit:]]\{2,3\}\>"

5、显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行

cat /etc/grub2.cfg | grep "^[[:space:]]\+[^[:space:]]"

6、找出“netstat -tan”命令的结果中以‘LISTEN’后跟任意多个空白字符结尾的行

netstat -tan | grep "LISTEN[[:space:]]\+$"

7、显示CentOS7上所有系统用户的用户名和UID

cat /etc/passwd |cut -d: -f1,3 | grep "\<[0-9]\{1,3\}\>"

8、添加用户bash、testbash、basher、sh、nologin(其shell为/sbin/nologin),找出/etc/passwd用户名同shell名的行

cat /etc/passwd | grep "\(^.*\)\>.*\<\1$"

9、利用df和grep,取出磁盘各分区利用率,并从大到小排序

df | grep -o "[0-9]\{1,3\}%" | grep -o "[0-9]\+" | sort -nr

df |grep "^/dev/sd" |grep -o "[[:digit:]]\{1,3\}%" |tr -d % |sort -nr

作业:

1、显示三个用户root、mage、wang的UID和默认shell

cat /etc/passwd |cut -d: -f1,3,7 |grep -e "root" -e "mage" -e "wang"

2、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行

grep "^[_[:alpha:]]\+\\(.*\\).*" /etc/rc.d/init.d/functions

3、使用egrep取出/etc/rc.d/init.d/functions中其基名

1.注意:echo '/etc/rc.d/init.d/functions' egrep -v "^/.*/"  --》 /etc/rc.d/init.d/functions egrep -v ^/.*/   原样输出字符串以及空格之后的命令行!!

2.echo '/etc/rc.d/init.d/functions' |egrep -w -o --color=auto  "f.*"

4、使用egrep取出上面路径的目录名

echo '/etc/rc.d/init.d/functions' |egrep -o --color=auto "^/.*/"

5、统计last命令中以root登录的每个主机IP地址登录次数

last |grep root |tr -s " " : |cut -d: -f3 |sort |uniq -c |sort -nr

-->考虑是否只选取有效的IP地址记录,去除不规则的

6、利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255

echo {0..255} |grep -w -o "\<[[:digit:]]\{1\}\>"  ->0-9一位数表示

echo {0..255} |grep -w -o "\<[[:digit:]]\{2\}\>"

...

7、显示ifconfig命令结果中所有IPv4地址

ifconfig |grep -E -o  "\<inet addr:[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\>"

8、将此字符串:welcome to  magedu linux 中的每个字符去重并排序,重复次数多的排到前面

echo "welcome to magedu linux" |grep -o -E --color=auto "[[:alnum:]]" |sort |uniq -c |sort -nr

总结:grep |egrep -o选项是仅列出匹配到的字符(表达式项)并且是以匹配项之间换行单独表示 ,即每匹配到表达项都是一行单独记录-》所以利用其进行排序去重再排序

vim

三种主要模式

命令模式 (default): 移动光标,复制,剪切,粘贴,撤销,重做,搜索,进入其他模式

移动光标:

h向左移动

l向右移动

j向下移动

k向上移动

配合#h,#l,#j,#k可一次性移动#个字符

w跳到下一个单词的词首

b跳到上一个单词的词首

H跳到当前页首

M跳到当前页中

L跳到当前页尾

gg跳到整个文件的首行

G跳到整个文件的末行

^移到非空格开头的行首

$移到行尾

#G跳到指定行,或退出模式下:#

Ctrl+f: 向文件尾部翻一屏

Ctrl+b: 向文件首部翻一屏

Ctrl+d: 向文件尾部翻半屏

Ctrl+u:向文件首部翻半屏

r替换一个字符

d剪切

dd剪切当前行

#dd剪切#行

dw剪切一个单词,可以用来删除以空白符为开头行的行首,非空白字符将移至行首

d^从光标所在处剪切到非空行首(可以用来删除以空白符为开头行的行首,非空白字符将移至行首)

d$或D从光标所在处剪切到行尾

d0 删除到行首

y复制

yy或Y复制当前行

#yy复制#行

yw复制一个单词

y^从光标所在处复制到行首

y$从光标所在处复制到行尾

p粘贴

p当前行向下粘贴或光标所在处向后粘贴

P当前行向上粘贴或光标所在处向前粘贴

替换模式 R进入 Esc退出

从命令模式进入插入模式

i光标在哪从哪进入

I光标移至行首同时进入插入模式

a光标向后移一个字符同时进入插入模式

A光标移至行尾同时进入插入模式

o光标向下插入一新行同时进入插入模式

O光标向上插入一新行同时进入插入模式

插入模式:文本编辑

退出模式:保存、退出

w:保存

q:退出

q!强制退出

wq或x 保存并退出

w!当前用户为该文件所属人时,如果该文件为read only,可加上!强制保存。

在退出模式下返回命令模式EscEsc或Enter

r /path/filename 读取另一个文件的内容并将输出结果写入文件

w /path/filename 另存为(确认当前用户对该路径中的最后一级目录有wx权限)

! command 执行某条命令,将输出结果显示在终端上

r! command 执行某条命令,在光标所在的当前行向下插入新行并将输出结果输入

.! command 执行某条命令,替换光标所在的当前行并将输出结果输入

搜索

/关键字

n向下找

N向上找

?关键字

n向上找

N向下找

dog pig dog cat dog

pig dog root dog cat

dog linux roat dog cat

pig root dog cat dog pig

fish dog rooter pig dog

bird dog cat rbbt pig

把以上内容中的rxxt换成rxxter,已经是rxxter的不变

%[email protected]\(r..t\)\>@\[email protected]

http://mirrors.163.com/  换成https://mirrors.sina.com/dvd

:%[email protected]://[email protected]://mirrors.sina.com/[email protected]

注意说明:在vim编辑器中的退出状态下进行替换操作的时候,如果表达式匹配项中含有多个"/"的时候,一定要将替换模式下的"/"转换成其他的符号来代替使用,否则一定会有报错,系统也不识别性报错!!

原文地址:http://blog.51cto.com/12947626/2063413

时间: 2024-10-05 08:25:03

马哥教育M28-第5-7天的学习总结的相关文章

马哥教育M28第十三天到第十五天学习总结

马哥第十三天. <font size=4>1.lftp安装:直接在Linux上登录远程服务器下载ftp上的文件,查询lftp使用方式 lftp 用户名:密码@ftp地址:传送端口(默认21)也可以先不带用户名登录,然后在接口界面下用login命令来用指定账号登录,密码不显示 查看文件与改变目录 ls !ls (凡是加!,指的是操作本地计算机环境) cd 对应ftp目录 下载 get当然是可以的,还可以: mget -c *.pdf #把所有的pdf文件以允许断点续传的方式下载 mirror a

马哥教育第20天至23天学习总结

马哥M28_20天<font size=4>1.ping -s 60000 目标主机ip地址 -f :指定发包大小60000ping2.IP :由前网络号部分和后主机号部分组成:网络号位数必须是连续性的二进制111111,不能是非连续性的:网络ID由IP二进制与子网掩码二进制组合求解得到正确的网络号计算网络数:2^可变的网络ID计算网络的主机最大数量:2^主机ID位-2 0.0.0.0表示所有地址 cidr书写方式:1.1.1.0/24 24表示网络号位数 A类地址: 前8位网络ID,后24位

马哥教育第十六天至十九天学习总结

第十七天 raid raid 0 条带化 chunk size nmin(size) 读写的提升 至少2块盘raid 1 镜像 min(size) 写性能略降低,读性能提升 至少2块盘raid 5 奇偶校验 (n-1)min(size) 至少3块盘raid 6 奇偶校验 (n-2)*min(size) 至少4块盘raid 10 先做多个raid1,再组成raid0 安全性优于raid01raid 01 先做多个raid0,再组成raid1 raid 50 先做多个raid5,再组成raid0,安

《马哥教育协办GIAC、GOPS顶级技术峰会完美落幕》

GIAC.GOPS大会完美落幕 除了你.我.他,还有马哥教育陪你走过 马哥教育协办过多次全球大会,此次GIAC.GOPS全球互联网大会完美落幕,作为协办方我们也是很荣幸!马哥教育的创始人马哥带着马帮学员,让他们有更多的机会与大咖们交流分享,建立更广的人脉圈子. 本次大会可谓是大咖云集的一场盛会!各种技术总监.CTO. 通过本次大会就可以感受到马哥教育的教学精神.马哥教育不仅可以让你学到专业的技能,还有更多的机会与大咖们分享交流.我们不仅要学的好,丰富的人脉资源是我们职场上必要部分!相信在参加本次

马哥教育面授班-标准I/O和管道-课后小作业-2016年7月28

马哥教育面授班-7月28号作业 1 .将/etc/issue 文件中的内容转换为大写后保存至/tmp/issue.out 文件中 [[email protected] ~]# tr 'a-z' 'A-Z' </etc/issue | >> /tmp/issue.out [[email protected] ~]# cat /tmp/issue.out  CENTOS RELEASE 6.8 (FINAL) KERNEL \R ON AN \T \N \D \S MAGE EDUCATIO

马哥Linux培训马哥教育到底怎么样?马哥教育好不好?我来讲讲我的曲折经历!

2016年是我很迷茫的一年,不知道该学什么,不知道该去哪里,当时也有去培训的打算,也不确定培训什么,php?前端?or运维,同学有做PHP的,也有Java的也有前端的,也有做运维的,他们的建议我也听了不少,但是自己还是犹豫不决,怕花了钱到时找不到工作,后来感觉运维相对开发要容易一些,听同学说PHP今年也降温不少,学的人太多,没前两年好找了,当然,学得特好再另说.后来就去马哥考察了,当时去的时候是早上8点左右,看到有马哥的学员在校门口买早餐,包子,茶叶蛋什么的,我也没听课进去看看教室和学员聊了几句

【挨踢人物传】马永亮:感悟学习三境界 引领马哥教育的崛起(第19期)

[编者有话]        本期的嘉宾马永亮,一次误以为是"擅长"的选择,开始结缘计算机,然而当真正接触后才发现犹如"井底之蛙",此前的擅长根本不值一提,从天堂到地狱的落差,没有挫败他的信心和追求,反而激起了他更加强烈的求知欲望,在IT的道路上不断的成长感悟-- [本期人物档案] 个人信息: 51CTO账号:马哥教育 姓名:马永亮 性别:男 所在地:河南郑州 教育信息:研究生 关键词:马哥教育创办人 Linux系统运维专家 51CTO专家博主 51CTO学院签约讲师

马哥教育千万级PV实战大揭秘

又到了激动人心的架构实战项目实践时间,马哥教育面授班的学员都很期待这一刻的到来,因为经过此次洗礼,能让自己成长更多! 上周二,马哥教育张Sir带领18期面授班的学员们做千万PV级别的电商架构实战项目!新增的多台R710企业级服务器设备,轻松搭建大数据.云计算等高端实验环境,让实战,更加真实!相信经过这场实战的洗礼,小伙伴们架构技能会有更大提升! [张Sir生动讲解] [R710企业级服务器] [项目需求] 前期筹划阶段 马哥教育第18期面授班学员分成8个小组.每组的小组长先进行项目架构,然后按照

2016马哥教育重磅来袭--Python实战网络班

如何确保自己职场快人一步?如何成就非凡之路?前景开阔.上手容易.名师阵容.丰富一线案例的马哥2016全新python开发课程,你值得拥有! 在众多朋友的期待与欢呼中,马哥教育重磅推出了Python实战网络班. 到底马哥2016全新Python实战班都有什么特别之处呢?下面就来一睹为快吧!         如果有那么一丝丝的心动,请不要压抑自己的感情!速速联系马哥教育课程顾问们吧!(QQ:1661815153.2813150558.1660809109~)

一年一度,马哥教育年终福利全面来袭

一年一度,马哥教育年终福利全面来袭,等你来抢!扫描图片中二维码查看 满6000减200+腰枕 满8000减400+机械键盘 满10000减500+商用书包 推荐朋友送 (机械键盘.商用书包.专题课程)任选其一