课堂笔记 第三周 宋旭豪 day13-16

Day13

老男孩Linux云计算58期-day13-1

[root@oldboyedu ~]# ls -lhi

total 32K

33631870 -rw-r--r--. 1 root root      4 Mar 13  2019 a.txt

 第二列结尾的.是标识selinux的符号

1、selinux是什么?

安全规则,让Linux系统更安全的一套规则。

这个规则太严格了,一般的情况下都会关闭selinux。

自己开启防火墙啊,用其他手段来实现同样的安全目的。

2、怎么关掉Selinux?

 

查看方法:

[root@oldboyedu ~]# getenforce

Enforcing

临时关掉:

[root@oldboyedu ~]# setenforce

usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]

[root@oldboyedu ~]# setenforce 0

[root@oldboyedu ~]# getenforce

Permissive

 

永久关闭:

vim /etc/selinux/config

[root@oldboyedu ~]# grep dis /etc/selinux/config

#     disabled - No SELinux policy is loaded.

SELINUX=disabled

Linux里防火墙C6 iptables  C7 firewalld

作用:防护计算机,防止被入侵。

systemctl status firewalld.service

开启firewalld(C6 service iptables start 或者/etc/init.d/iptables start)

[root@oldboyedu ~]# systemctl start firewalld.service

[root@oldboyedu ~]# systemctl status firewalld.service

●firewalld.service - firewalld - dynamic firewall daemon

   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)

   Active: active (running) since Sun 2020-10-04 20:48:49 CST; 1s ago

     Docs: man:firewalld(1)

 Main PID: 7003 (firewalld)

   CGroup: /system.slice/firewalld.service

└─7003 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

 

Oct 04 20:48:48 oldboyedu systemd[1]: Starting firewalld - dynamic firewall daemon...

Oct 04 20:48:49 oldboyedu systemd[1]: Started firewalld - dynamic firewall daemon.

 

让firewalld开机自启动

[root@oldboyedu ~]# systemctl enable firewalld.service

Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.

Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.

 

C6用法:chkconfig iptables off

C7就是一个命令systemctl

自学能力:总结两个命令systemctl和chkconfig。

 

 

 

 

[root@oldboyedu ~]# ls -lhi

total 32K

33631870 -rw-r--r--. 1 root root      4 Mar 13  2019 a.txt

硬链接数

1、什么是硬链接?

具有相同inode节点号的文件互为硬链接。

一个文件的两个入口。

[root@oldboyedu ~]# ls -ldi test test/.

16964029 drwxr-xr-x. 2 root root 4096 Oct  1 14:07 test

16964029 drwxr-xr-x. 2 root root 4096 Oct  1 14:07 test/.

[root@oldboyedu /data]# ls -ldi oldboy

33631853 drwxr-xr-x. 5 root root 45 Oct  4 21:03 oldboy

[root@oldboyedu /data]# ls -ldi oldboy oldboy/. oldboy/test{1..3}/..

33631853 drwxr-xr-x. 5 root root 45 Oct  4 21:03 oldboy

33631853 drwxr-xr-x. 5 root root 45 Oct  4 21:03 oldboy/.

33631853 drwxr-xr-x. 5 root root 45 Oct  4 21:03 oldboy/test1/..

33631853 drwxr-xr-x. 5 root root 45 Oct  4 21:03 oldboy/test2/..

33631853 drwxr-xr-x. 5 root root 45 Oct  4 21:03 oldboy/test3/..

2、硬链接原理。

 

3、测试

创建硬链接:

ln源文件 硬链接文件

 

a.文件硬链接

[root@oldboyedu /data]# echo "I am oldboy." >oldboy.txt

[root@oldboyedu /data]# cat oldboy.txt

I am oldboy.

[root@oldboyedu /data]# ln oldboy.t

oldboy.tar.gz  oldboy.txt     

[root@oldboyedu /data]# ln oldboy.txt oldboy_hard_link

[root@oldboyedu /data]# ls -lirt

total 20

33631860 -rw-r--r--. 1 root root   0 Oct  1 00:19 5.txt

33631855 -rw-r--r--. 1 root root   0 Oct  1 00:19 4.txt

33631847 -rw-r--r--. 1 root root   0 Oct  1 00:19 3.txt

33631845 -rw-r--r--. 1 root root   0 Oct  1 00:19 2.txt

33631841 -rw-r--r--. 1 root root   0 Oct  1 00:19 1.txt

33656236 -rw-r--r--. 1 root root  18 Oct  1 09:01 paichu.txt

33631869 -rw-r--r--. 1 root root 187 Oct  1 09:01 oldboy.tar.gz

33656257 -rwxr-xr-x. 1 root root  14 Oct  1 11:07 test.txt

33631853 drwxr-xr-x. 5 root root  45 Oct  4 21:03 oldboy

33656238 -rw-r--r--. 2 root root  13 Oct  4 21:10 oldboy.txt

33656238 -rw-r--r--. 2 root root  13 Oct  4 21:10 oldboy_hard_link

 

 

作用:

1、备份,防止误删。

[root@oldboyedu /data]# ln /etc/hostname /opt/hostname

[root@oldboyedu /data]# cat /opt/hostname

oldboyedu

[root@oldboyedu /data]# rm -f /etc/hostname

[root@oldboyedu /data]# cat /etc/hostname

cat: /etc/hostname: No such file or directory

[root@oldboyedu /data]# cat /opt/hostname

oldboyedu

[root@oldboyedu /data]# ln /opt/hostname /etc/hostname

[root@oldboyedu /data]# cat /etc/hostname

oldboyedu

 

b.目录硬链接

不支持人工创建目录硬链接。

[root@oldboyedu /data]# ln oldboy oldgirl

ln:‘oldboy’: hard link not allowed for directory

老男孩的思考:

/etc/目录,对应一个分区

/home目录,还可能对应一个分区。

ln /etc/ /home/oldboy

 

 

软链接:

本质是快捷方式,指向源文件实体,本身和源文件是不同的文件。

 

实践:

文件

[root@oldboyedu /data]# !echo

echo "I am oldboy." >oldboy.txt

[root@oldboyedu /data]# cat oldboy.txt

I am oldboy.

[root@oldboyedu /data]# ln -s oldboy.txt  oldboy_soft_link

 

 

目录:是工作中的重点

[root@oldboyedu /data]# mkdir oldboy

[root@oldboyedu /data]# touch oldboy/test.txt

[root@oldboyedu /data]# ln -s oldboy  oldboy_soft_link_dir

[root@oldboyedu /data]# ls oldboy_soft_link_dir/

test.txt

[root@oldboyedu /data]# ls oldboy

test.txt

 

工作中为什么会使用软链接。

第一个用途:

安装软件:/application/nginx-1.10

过半年:/application/nginx-1.20

导致一个问题,工作中,开发等引用/application/nginx-1.10路径。

安装软件:/application/nginx-1.10===>/application/nginx(让开发用)

过半年:/application/nginx-1.20===>/application/nginx(让开发用)

 

第二个用途:

/etc/对应的分区要满了,没法放很多文件,但是程序还想通过/etc/目录访问文件。

此时,我们可以把文件放入/opt/oldboy下,然后做一个到/etc/oldboy的软链接。

[root@oldboyedu /data]# mkdir /opt/oldboy

[root@oldboyedu /data]# touch /opt/oldboy/{1..3}.txt

[root@oldboyedu /data]# ln -s /opt/oldboy/ /etc/oldboy

[root@oldboyedu /data]# ls /etc/oldboy

1.txt  2.txt  3.txt

[root@oldboyedu /data]# ll /opt/oldboy

total 0

-rw-r--r--. 1 root root 0 Oct  4 22:02 1.txt

-rw-r--r--. 1 root root 0 Oct  4 22:02 2.txt

-rw-r--r--. 1 root root 0 Oct  4 22:02 3.txt

 

 

 

必会面试题:软链接和硬链接的区别?

 

 

 

 

 

 

 

 

 

Linux文件删除原理:

1、静态文件:没有进程或程序正在访问的文件。

所有的硬链接数为0(i_link),即所有硬链接都被干掉了,包括自身。

硬链接的数量的代表变量符号i_link

rm -f oldboy.txt oldboy_hard_link

执行完其实文件也没删,关机停止运行。

a.系统定时清理没有文件名的inode。

b.磁盘检查会清理。

c.增加新文件时优先占用没有文件名的inode。

恢复的工具:debugfs,ext3grep等等。

亡羊补牢其实不可取的,违反运维的三大核心原则。

 

多备份,操作前备份,异服务器和异地备份。

流浪地球,人类备份。

 

光一秒30w公里

月地距离38万公里

日地距离1.5亿公里 8分钟

太阳系大小

第二近的恒星4光年

地球46亿年了。42亿前。

太阳处于中年寿命70亿年。大到太阳吞噬地球。

银河系大小10万光年

宇宙大小可探测到的直径1000亿光年

2、动态文件:有程序或进程访问的文件

删除原理:

a.所有硬链接删除。i_link为0.

b..i_count是进程调用文件的数量(引用计数)。所有进程调用都要停止取消。i_count为0

 

3、实践文件删除原理

 

环境准备,命令集合如下:

mkdir -p /app/logs                           #<==创建用于挂载的目录。

dd if=/dev/zero of=/dev/sdc bs=8K  count=10  #<==创建指定大小的文件。

mkfs.ext4 /dev/sdc                           #<==格式化。

mount -o loop /dev/sdc /app/logs             #<==挂载。

df -h                                        #<==检查挂载结果。

实践:

[root@oldboyedu /data]# cd /app/logs/

[root@oldboyedu /app/logs]# touch nginx.log

[root@oldboyedu /app/logs]# tail -f nginx.log

 

[root@oldboyedu /app/logs]# cat /etc/services >>nginx.log

cat: write error: No space left on device

[root@oldboyedu /app/logs]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G  1.9G   18G  10% /

devtmpfs        980M   80K  980M   1% /dev

tmpfs           991M     0  991M   0% /dev/shm

tmpfs           991M  9.5M  981M   1% /run

tmpfs           991M     0  991M   0% /sys/fs/cgroup

/dev/sda1       253M  136M  118M  54% /boot

tmpfs           199M     0  199M   0% /run/user/0

/dev/loop0       73K   71K     0 100% /app/logs

 

明明删除了,结果还是100%。

[root@oldboyedu /app/logs]# rm -f nginx.log

[root@oldboyedu /app/logs]# lsof|grep nginx

tail      7927         root    3r      REG                7,0     57344         12 /app/logs/nginx.log (deleted)

 

[root@oldboyedu /app/logs]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G  1.9G   18G  10% /

devtmpfs        980M   80K  980M   1% /dev

tmpfs           991M     0  991M   0% /dev/shm

tmpfs           991M  9.5M  981M   1% /run

tmpfs           991M     0  991M   0% /sys/fs/cgroup

/dev/sda1       253M  136M  118M  54% /boot

tmpfs           199M     0  199M   0% /run/user/0

/dev/loop0       73K   71K     0 100% /app/logs

 

重来:

模拟进程读文件:

[root@oldboyedu /app/logs]# touch nginx.log

[root@oldboyedu /app/logs]# tail -f nginx.log

 

ln nginx.log nginx_hard.log

 

当前:

i_link=2

i_count=1

 

模拟把文件变大,让分区满

[root@oldboyedu /app/logs]# cat /etc/services >>nginx.log

cat: write error: No space left on device

[root@oldboyedu /app/logs]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G  1.9G   18G  10% /

devtmpfs        980M   80K  980M   1% /dev

tmpfs           991M     0  991M   0% /dev/shm

tmpfs           991M  9.5M  981M   1% /run

tmpfs           991M     0  991M   0% /sys/fs/cgroup

/dev/sda1       253M  136M  118M  54% /boot

tmpfs           199M     0  199M   0% /run/user/0

/dev/loop0       73K   71K     0 100% /app/logs

 

分区满了:清理,删除。

 

删除源文件

[root@oldboyedu /app/logs]# rm -f nginx.log

结果:

i_link=1

i_count=1

 

 

ctrl+c中断 进程调用文件

结果:

i_link=1

i_count=0

 

 

删除硬链接文件

[root@oldboyedu /app/logs]# rm -f nginx_hard.log

结果:

i_link=0

i_count=0

 

[root@oldboyedu /app/logs]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G  1.9G   18G  10% /

devtmpfs        980M   80K  980M   1% /dev

tmpfs           991M     0  991M   0% /dev/shm

tmpfs           991M  9.5M  981M   1% /run

tmpfs           991M     0  991M   0% /sys/fs/cgroup

/dev/sda1       253M  136M  118M  54% /boot

tmpfs           199M     0  199M   0% /run/user/0

/dev/loop0       73K   14K   54K  21% /app/logs

 

 

Web服务器磁盘满故障深入解析,地址为

http://oldboy.blog.51cto.com/2561410/612351

 

 

 

1、软硬连接区别。

2、文件删除原理。

 

1)掌握Linux文件属性的各个列的含义(ls -lhi结果)及对应知识概念。

2)磁盘空间不足故障的多重判断和解决(面试常考)。

3)请描述软链接和硬链接的特点及区别(面试常考)。

4)请描述Linux系统文件删除的原理(面试常考)。



Day14

1.正则表达式:

作用和字符一样

正则表达式是为了处理大量的字符串及文本而定义的一套规则和方法

开发者

假设“@”代表“I am”,“!”代表“oldboy”,

则执行echo“@!”的结果就输出“I am oldboy”。

2. 提高效率,快速获取到想要的内容。

 

3. 适用于三剑客命令grep (egrep),sed ,awk

 

4. 实践来讲解

其工作时以行为单位进行,即一次处理一行

 

易混淆事项

1、和通配符区别

2、开发正则,一般是Per1兼容正则表达式。

3、Linux系统三剑客正则表达

 

环境准备:

export LC_ALL=C

 

分类:

ERE grep

BRE egrep

 

 

mkdir ~/test -p

cat >~/test/oldboy.txt<<EOF

I am oldboy teacher!

I teach linux.

 

I like badminton ball ,billiard ball and chinese chess!

our site is 

 

http://www.oldboyedu.com

my qq num is 49000448.

 

not 4900000448.

my god ,i am not oldbey,but OLDBOY!

EOF

 

 

 

 

I am oldboy teacher!

I teach linux.

 

I like badminton ball ,billiard ball and chinese chess!

our site is 

 

http://www.oldboyedu.com

my qq num is 49000448.

 

not 4900000448.

my god ,i am not oldbey,but OLDBOY!

 

老男孩老师2019/3/19 9:21:38

 

[root@oldboyedu ~/test]# grep "m$" oldboy.txt 

our site is 

 

[root@oldboyedu ~/test]# grep "!$" oldboy.txt 

grep "oldboy.txt" oldboy.txt 

[root@oldboyedu ~/test]# grep "\!$" oldboy.txt 

I am oldboy teacher!

I like badminton ball ,billiard ball and chinese chess!

my god ,i am not oldbey,but OLDBOY!

 

 

 

[root@oldboyedu ~/test]# grep "\.$" oldboy.txt 

I teach linux.

my qq num is 49000448.

not 4900000448.

 

 

 

[root@oldboyedu ~/test]# grep -n ".*" oldboy.txt 

1:I am oldboy teacher!

2:I teach linux.

3:

4:I like badminton ball ,billiard ball and chinese chess!

5:our site is 

 

http://www.oldboyedu.com

6:my qq num is 49000448.

7:

8:not 4900000448.

9:my god ,i am not oldbey,but OLDBOY!

[root@oldboyedu ~/test]# cat -n oldboy.txt 

     1 I am oldboy teacher!

     2 I teach linux.

     3

     4 I like badminton ball ,billiard ball and chinese chess!

     5 our site is 

 

http://www.oldboyedu.com

     6 my qq num is 49000448.

     7

     8 not 4900000448.

     9 my god ,i am not oldbey,but OLDBOY!

[root@oldboyedu ~/test]# grep "[abc]" oldboy.txt 

I am oldboy teacher!

I teach linux.

I like badminton ball ,billiard ball and chinese chess!

our site is 

 http://www.oldboyedu.com

my god ,i am not oldbey,but OLDBOY!

[root@oldboyedu ~/test]# grep "[^abc]" oldboy.txt 

I am oldboy teacher!

I teach linux.

I like badminton ball ,billiard ball and chinese chess!

our site is 

http://www.oldboyedu.com

my qq num is 49000448.

not 4900000448.

my god ,i am not oldbey,but OLDBOY!

[root@oldboyedu ~/test]# grep -E "0?" oldboy.txt 

I am oldboy teacher!

I teach linux.

 

I like badminton ball ,billiard ball and chinese chess!

our site is 

 

http://www.oldboyedu.com

my qq num is 49000448.

 

not 4900000448.

my god ,i am not oldbey,but OLDBOY!

 

 

 

 

[root@oldboyedu ~/test]# egrep "oldboy|like|000" oldboy.txt 

I am oldboy teacher!

I like badminton ball ,billiard ball and chinese chess!

our site is 

 

http://www.oldboyedu.com

my qq num is 49000448.

not 4900000448.

 

 

 

 

 

[root@oldboyedu ~/test]# egrep "0{1,2}" oldboy.txt 

my qq num is 49000448.

not 4900000448.

[root@oldboyedu ~/test]# egrep "0{5,}" oldboy.txt 

not 4900000448.

[root@oldboyedu ~/test]# egrep "0{5}" oldboy.txt 

not 4900000448.

[root@oldboyedu ~/test]# egrep "00000" oldboy.txt 

not 4900000448.

[root@oldboyedu ~/test]# egrep "0{3}" oldboy.txt 

my qq num is 49000448.

not 4900000448.

[root@oldboyedu ~/test]# egrep "0{,3}" oldboy.txt 

I am oldboy teacher!

I teach linux.

 

I like badminton ball ,billiard ball and chinese chess!

our site is 

 

http://www.oldboyedu.com

my qq num is 49000448.

 

not 4900000448.

my god ,i am not oldbey,but OLDBOY!

 

 

 

 

 

 

 

[root@oldboyedu ~/test]# egrep "[0-9]" oldboy.txt 

my qq num is 49000448.

not 4900000448.

[root@oldboyedu ~/test]# 

[root@oldboyedu ~/test]# egrep "[[:digit:]]" oldboy.txt 

my qq num is 49000448.

not 4900000448.

[root@oldboyedu ~/test]# egrep "[[:lower:]]" oldboy.txt 

I am oldboy teacher!

I teach linux.

I like badminton ball ,billiard ball and chinese chess!

our site is 

 

http://www.oldboyedu.com

 

my qq num is 49000448.

not 4900000448.

my god ,i am not oldbey,but OLDBOY!

[root@oldboyedu ~/test]# egrep "[[:upper:]]" oldboy.txt 

I am oldboy teacher!

I teach linux.

I like badminton ball ,billiard ball and chinese chess!

my god ,i am not oldbey,but OLDBOY!

 

 

 

 

 

 

 

 

[root@oldboyedu ~/test]# egrep "\boldboy\b" oldboy.txt 

I am oldboy teacher!

[root@oldboyedu ~/test]# egrep "oldboy" oldboy.txt 

I am oldboy teacher!

our site is 

 

http://www.oldboyedu.com

 

[root@oldboyedu ~/test]# egrep -w "oldboy" oldboy.txt 

I am oldboy teacher!

 

 

 

[root@oldboyedu ~/test]# grep -P "\d" oldboy.txt 

my qq num is 49000448.

not 4900000448.

[root@oldboyedu ~/test]# grep -Po "\d" oldboy.txt 

 

 

 

sed:流编辑器

sed [选项]  [sed内置命令字符]  [输入文件]

 

选项:

:表示对command的匹配范围取反

i \ :在模式匹配到的行前面添加新的内容。

a \ :在模式匹配到的行后添加新的内容

\n 在行之间换行

sed '/s/a \ wo zui ai ni \n 宋旭豪最帅' test.txt

-n 取消命令的默认输出

-i 直接修改文件内容

-e 允许多次编辑

-r 支持扩展正则

 

 

如果不使用-i选项sed只是修改

sed的内置命令字符说明

s 替换

g 全局global

p 打印 print

d delete 删除指定的行

a 表示追加文本,在指定行后添加一行或多行文本

i 表示插入文本,在指定行前添加一行或多行文本

 

 

 

 

问题:

环境:

[root@oldboyedu ~/test]# cat oldgirl.txt

I am oldboy teacher!

I like badminton ball ,billiard ball and chinese chess!

our site is 

 

http://www.oldboyedu.com

my qq num is 49000448.

问题1:输出oldboy.txt的第2-3行内容※。

[root@songxvhao

~]# sed -n '2,3p' oldboy.txt

I like badminton ball ,billiard ball and chinese chess!

our site is

 

问题2:过滤出含有oldboy字符串的行※。

[root@songxvhao

~]# sed -n '/oldboy/p' oldboy.txt

I am oldboy teacher!

http://www.oldboyedu.com

 

问题3:删除含有oldboy字符串的行※。

[root@songxvhao

~]# sed '/oldboy/d' oldboy.txt

I like badminton ball ,billiard ball and chinese chess!

our site is

 

my qq num is 49000448.

 

问题4:将文件中的oldboy字符串全部替换为oldgirl※。

[root@songxvhao

~]# sed 's#oldboy#oldgirl#g' oldboy.txt

I am oldgirl teacher!

I like badminton ball ,billiard ball and chinese chess!

our site is

 

http://www.oldgirledu.com

my qq num is 49000448.

问题5:将文件中的oldboy字符串全部替换为oldgirl,同时将QQ号码49000448改为31333741。

[root@songxvhao

~]# sed -e 's#oldgirl#oldboy#g' oldboy.txt -e 's#49000448#31333741#g' oldboy.txt

I am oldboy teacher!

I like badminton ball ,billiard ball and chinese chess!

our site is

 

http://www.oldboyedu.com

my qq num is 31333741.

I am oldboy teacher!

I like badminton ball ,billiard ball and chinese chess!

our site is

 

http://www.oldboyedu.com

my qq num is 31333741.

 

 

Day15


练习sed:

正则是贪婪匹配模式,人性是贪婪的

问题1:取出Linux中执行ifconfig etho 后对应的ip地址(只能输出地址)。

[root@oldboyedu ~]# ifconfig eth0|sed -n 2p|sed 's#^.*inet ##g'|sed 's#  netm.*$##g'

 

10.0.0.201

[root@oldboyedu ~]# ifconfig eth0|sed -n 2p|sed -e 's#^.*inet ##g' -e 's#  netm.*$##g'

 

10.0.0.201

[root@oldboyedu ~]# ifconfig eth0|sed -nr '2s#^.*inet (.*)  netm.*$#\1#gp'

 

10.0.0.201

 

 

 

三剑客自身是有特长的。

grep 过滤查找内容。 筛子

sed 取行,替换,删除,追加。

awk 取列

 

awk语法:

awk 参数 条件 文件

参数:

-F 指定分隔符

 

cut 按列切割

-d 指定分隔符 -f指定哪列 多列用,号或-

-c 按字符取内容

列:

$1 第1列 $2 第二列

$0 整行 $ NF 最后一列

 

 

 

cat test.txt

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

问题1:取test.txt文件的第2行到第3行的内容。

[root@songxvhao

~]# sed -n '2,3p' test.txt

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

[root@songxvhao

~]# awk 'NR>1&&NR<4' test.txt

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

[root@songxvhao

~]# awk 'NR==2,NR==3' test.txt

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

问题2:过滤出含有root字符串的行※。

[root@songxvhao

~]# grep root test.txt

root:x:0:0:root:/root:/bin/bash

[root@songxvhao

~]# awk '/root/' test.txt

root:x:0:0:root:/root:/bin/bash

[root@songxvhao

~]# sed -n '/root/p' test.txt

root:x:0:0:root:/root:/bin/bash

问题3:删除含有root字符串的行※。

[root@songxvhao

~]# awk '/^[^root]/' test.txt

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

[root@songxvhao

~]# grep -v root test.txt

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

[root@songxvhao

~]# sed '/root/d' test.txt

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

问题4:取文件的第一列、第三列和最后一列内容,并打印行号※。

[root@songxvhao

~]# awk -F ":" '{print NR $1,$3,$NF}' test.txt

1bin 1 /sbin/nologin

2daemon 2 /sbin/nologin

3adm 3 /sbin/nologin

4lp 4 /sbin/nologin

问题5:取出Linux中执行ifconfig eth0后对应的IP地址(只能输出IP地址)。

[root@songxvhao

~]# ifconfig eth0 |sed -rn '2s#^.*net (.*) netm.*$#\1#gp'

10.0.0.200

[root@songxvhao

~]# ifconfig eth0 |awk -F " " 'NR==2{print $2}'

10.0.0.200

 

问题6:过滤文件中第一列内容匹配root的字符串,把符合的行的最后一列输出

[root@songxvhao

~]# awk -F ":" 'NR==1{print $NF}' test.txt

/bin/bash

[root@songxvhao

~]# awk -F ":" '$1~/root/ {print $NF}' test.txt

/bin/bash (不太理解)

 

问题7:过滤下列test1.txt文件中第三列内容分数大于70,并且小于95的人名和性别。

[root@songxvhao

~]# awk '$NF>70&&$NF<95' a.txt

李四男80

王燕女90

[root@songxvhao

~]# awk '$NF==80,$NF==90' a.txt

李四男80

王燕女90

 

[^r] 非r

^[^r] 以非r开头的字符

 df -h 查看系统容量使用率

 用grep取ifconfig eth0 ip



Day16

第十二章Linux系统权限知识及应用实践

 

 

Linux基础权限是9个字符。

[root@oldboyedu ~]# ls -lhi

total 36K

33631870 -rw-r--r--. 1 root root     21 Oct  6 22:54 a.txt

33631871 -rw-r--r--. 1 root root     16 Oct  6 23:02 b.txt

33631857 -rw-r--r--  1 root root     61 Oct  7 00:11 c.txt

 

rw-r--r--

rw-r--r--

rw-r--r--

 

分3组:

前三个字符是表示用户(属主)权限位user(用户) u

中三个字符是表示用户组权限位group(用户组)     g

后三个字符是其它用户权限位others(其他用户)    o

 

同一组的三个字符权限也是有位置的:

r--第一个字符的位置读的权限位

第二个字符的位置写的权限位

第三个字符的位置是执行的权限位。

r  4

w  2

x  1

-  0

 

【文件】权限详细说明:****

【目录】权限详细说明:****

测试准备:

incahome(家、组)

oldboy 家庭男主人,用来代表用户(User)角色,是文件的所有者

oldgirl 女主人(和所有者oldboy属于相同组,oldboy的家人)用来代表用户组incahome的角色

test其他人 其他(others)人,用来代表其他用户角色

 

[root@oldboyedu ~]# groupadd incahome

[root@oldboyedu ~]# useradd oldboy

useradd: user 'oldboy' already exists

[root@oldboyedu ~]# usermod -g incahome oldboy

[root@oldboyedu ~]# id oldboy

uid=1000(oldboy) gid=1004(incahome) groups=1004(incahome),1000(oldboy)

 

如果此前没有创建oldboy,可以执行下面命令,而不需要usermod命令。

[root@oldboyedu ~]# useradd oldboy -g incahome

 

[root@oldboyedu ~]# useradd oldgirl -g incahome

useradd: user 'oldgirl' already exists

[root@oldboyedu ~]# id oldgirl

uid=1001(oldgirl) gid=1001(oldgirl) groups=1001(oldgirl)

[root@oldboyedu ~]# usermod -g incahome oldgirl

[root@oldboyedu ~]# id oldgirl

uid=1001(oldgirl) gid=1004(incahome) groups=1004(incahome)

[root@oldboyedu ~]# useradd test

useradd: user 'test' already exists

 

准备环境:

[root@oldboyedu ~]# mkdir -p /oldboy

[root@oldboyedu ~]# echo "echo oldboyLinux" >/oldboy/test.sh

[root@oldboyedu ~]# chmod +x /oldboy/test.sh

 

1.测试默认情况下不同用户的对应权限

 

[root@oldboyedu /oldboy]# chown oldboy.incahome test.sh

[root@oldboyedu /oldboy]# ls -l

total 4

-rwxr-xr-x 1 oldboy incahome 22 Oct  7 21:18 test.sh

 

权限修改:

777 +x -x  u=w  g-x

 

Linux权限有两种表现形式:

1、数字表示法 称为8进制权限

r 4

w 2

x 1

- 0

实际的权限表示就是将每3位相加即可。

rwxr-xr-x  755

 

rwx 7

r-x 5

r-x 5

 

2、字符表示法

 

rw-rw-r-x代表的数字权限为665

--xr-x-wx代表的数字权限为153

-wx--x--x代表的数字权限为311

 

 

而以下数字权限表示的字符权限如下:

755代表的字符权限为rwxr-xr-x

644代表的字符权限为rw-r--r--

134代表的字符权限为--x-wxr--

 

 

修改文件属性的用户和组

chown用户.用户组 文件  这里的点可以用:替换。

chown用户 文件

chown .用户组 文件   ====chgrp 用户组 文件

 

 

chgrp incahome test.txt

 

 

[root@oldboyedu /oldboy]# chown oldboy test.sh

[root@oldboyedu /oldboy]# ls -l

total 4

---x--x--x 1 oldboy root 12 Oct  7 22:16 test.sh

[root@oldboyedu /oldboy]# chown .incahome test.sh

[root@oldboyedu /oldboy]# ls -l

total 4

---x--x--x 1 oldboy incahome 12 Oct  7 22:16 test.sh

[root@oldboyedu /oldboy]# chown root:root test.sh

[root@oldboyedu /oldboy]# ls -l

total 4

---x--x--x 1 root root 12 Oct  7 22:16 test.sh

[root@oldboyedu /oldboy]#

 

安全权限临界点:

文件不想被修改被执行:644

[root@oldboyedu /oldboy]# touch oldboy.txt

[root@oldboyedu /oldboy]# ls -l

total 4

-rw-r--r-- 1 root    root  0 Oct  7 23:21 oldboy.txt

目录不想被修改(删除移动创建)被执行(进入):755

 

博客:写博客。。。服务器的博客目录和文件的权限,防止被恶意篡改。

 

企业真实案例:网站文件被恶意修改了。。。。打开网站后有弹窗广告(不是你网站的)

用户打开网站,报警。

原因:权限设置不到位。chmod -R 777目录 开发人员习惯

 

解决方案:

1、备份

tar zcvf /opt/oldboy_$(date +%F).tar.gz ./oldboy/

 

2、找到被修改的文件

[root@oldboyedu /]# find /oldboy -type f |xargs grep 'ddddddddddddd'

/oldboy/oldboy.txt:<script>ddddddddddddd</scripts>

/oldboy/test.sh:<script>ddddddddddddd</scripts>

 

3、批量删除

[root@oldboyedu /]# find /oldboy -type f |xargs sed -i '/ddddddddddddd/d'

[root@oldboyedu /]# find /oldboy -type f |xargs grep 'ddddddddddddd'

 

4、找到文件被篡改来源,并优化调整。

亡羊补牢。

 

5、写总结 故障报告。

 

控制默认权限的东西umask

[root@oldboyedu /oldboy]# umask

022

 

 

 

创建文件默认最大的权限为666(-rw-rw-rw-),其默认创建的文件没有可执行权限x位。

666

022 -

--------------------

644默认权限

[root@oldboyedu /oldboy]# umask 044    ====临时

[root@oldboyedu /oldboy]# touch abc

[root@oldboyedu /oldboy]# ls -l abc

-rw--w--w- 1 root root 0 Oct  7 23:42 abc

 

[root@oldboyedu /oldboy]# umask 044

[root@oldboyedu /oldboy]# touch abc

[root@oldboyedu /oldboy]# ls -l abc

-rw--w--w- 1 root root 0 Oct  7 23:42 abc

[root@oldboyedu /oldboy]# umask

0044

[root@oldboyedu /oldboy]# umask 043

[root@oldboyedu /oldboy]# umask

0043

[root@oldboyedu /oldboy]# touch a

[root@oldboyedu /oldboy]# ls -l a

-rw--w-r-- 1 root root 0 Oct  7 23:44 a

 

当umask中存在奇数位的时候,在计算完毕,奇数位加1

 

666

011

-------------------

655

 11

-----------------

666

 

 

基于文件:默认权限规则了解

从666计算

umask都为偶数 默认权限用减法

umask有奇数 默认权限用减法 然后奇数位加1

 

基于目录:默认权限规则

 

从777计算

默认权限用减法

 

 

 

Linux系统特殊权限位知识

9位基础权限

 

还有3位特殊权限位

suid位:

suid(setuid)位通过S字符标识,

存在于基本权限的用户权限位的x权限对应的位置,

如果用户权限位对应的x权限位上有x权限,则suid就用小写的s标识,

suid的s对应的数字权限为4,完整权限用八进制数4000表示。

 

sgid位:

sgid(setgid)位同样是通过S字符来标识,

但是,sgid位存在于基本权限的用户组权限位的x权限对应的位置,

如果用户组权限位对应的x权限位上有x权限,则sgid就用小写的s标识,

suid的s对应的数字权限为2,完整的权限用八进制数2000表示。

 

sticky(粘滞位)知识简介

sticky(粘滞)位通过字符T标识,存在于基本权限的其他用户位对应的x权限位上,

如果其他用户位的x权限位上有x权限,

则sticky(粘滞)位通过小写的t标识,对应的数字权限是1,

完整的权限用八进制数1000表示。



 

 

 

4 2 1,加和放在基础权限数字的前面。

修改方法:

[root@oldboyedu /oldboy]# chmod 7755 abc

预测:-rwsr-sr-t

[root@oldboyedu /oldboy]# chmod 7755 abc

[root@oldboyedu /oldboy]# ls -l abc

-rwsr-sr-t 1 root root 0 Oct  7 23:42 abc

 

[root@oldboyedu /oldboy]# chmod 7644 abc

[root@oldboyedu /oldboy]# ls -l abc

-rwSr-Sr-T 1 root root 0 Oct  7 23:42 abc

 

 

工作中有啥用?

 

suid到底有什么作用

简单地说,suid的作用就是让普通用户可以在执行某个设置了suid位的命令或程序时,

拥有和root管理员一样的身份和权限(默认情况)。

 

 

 

[oldgirl@oldboyedu /]$ ll -ld oldboy/

dr-x-wxrw-. 2 oldboy incahome 6 Oct  7 22:15 oldboy/

 

oldgirl属于incahome,增加一个用户属于incahome,是不是也和oldgirl有同样权限。

 

oldboy给一个新用户设置suid,这个新用户的权限就和oldboy一样。

 

 

回顾重点:

【文件】权限详细说明:*****

【目录】权限详细说明:*****

 

字符和数字(8进制)权限知识*****

chmod chown chgrp命令使用。*****

企业真实案例:网站文件被恶意修改了*****

umask默认权限控制*

 

特殊权限,suid** sgid sticky*

重点suid

 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352