unit6&9

##################第六单元文本处理工具

一、diff 命令

• diff 命令用于比较两个文件的内容 , 以了解其区别。它还可用于创建补丁文件。补丁文件用于在企业环境的多台计算机之间对相似文件进行更改

选项 说明

-C 显示上下文周围的行

-U 使用统一输出格式(对于生成补丁文件很有用)

-r 从指定的目录开始文件执行递归式比较

[root@localhost mnt]# vim file

hello

[root@localhost mnt]# vim file.new

hello

123

[root@localhost mnt]# diff -u file file.new

--- file 2017-04-06 21:12:40.913242073 -0400

+++ file.new 2017-04-06 21:13:05.293242073 -0400

@@ -1,2 +1,2 @@

-hello

-

+hello westos

+123

二、修补命令 patch

•patch 采用补丁文件 patchfile ( 包含由 diff 生成的差异列表 ) 并将这些差异应用于生成补丁版的一个或多个原始文件。通常 , 补丁版替换原始文件 , 但当指定 -b 选项时 , 可以制作备份。将用 .orig 文件名后缀重命名原始文件

• patch 可用于将简单的补丁文件应用于使用以下语法的单个文件

– [root@host etc]# patch issue patchfile

Patching file issue

•以下命令显示如何使用通过 diff -Naur 创建的补丁文件。用户更改为与从中创建补丁文件的原始目录相似的可比较目录后 , 将执行 patch

– [user@host orig-dir]$ patch -b < /tmp/patchfile

Patching file hosts

Patching file network

eg:

[root@localhost mnt]# yum install patch -y

[root@localhost mnt]# patch  file file.path

patching file file

[root@localhost mnt]# cat file

hello westos

123

三、grep 命令

• grep 将显示文件中与模式匹配的行。其也可以处理标准输入

• 模式可以包含正则表达式元字符 , 因此始终为正则表达式加引号通常被视为一种好办法。在本单元后面的部分中将介绍基本正则表达式

选项 说明

-i 执行不区分大小写搜索

-n                前置返回行的行号

-r 对文件执行递归式搜索,从命名目录开始

-C 显示具有匹配模式的行的计数

-V 返回不包含模式的行

eg:

[root@localhost mnt]# grep -in root passwd ##在passwd文件中执行不区分大小写的搜索,显示root,并显示行号

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

10:operator:x:11:0:operator:/root:/sbin/nologin

[root@localhost mnt]# grep hostname -r /etc/ -n ##在/etc/目录中从命名目录开始执行第归是搜索,过滤出含有hostname的文件,并显示行号

[root@localhost mnt]# grep root passwd  |grep -v -E "^bash|test$"

##在passwd文件中过滤出不是以bash开头,并且不是以test结尾的含有root的行

四、Cut 命令

• cut 用于 “ 剪切 ” 文件中的文本字段或列并将其显示到标准输出

选项 说明

-d 指定用于提取字段的分隔符(Tab是默认值)

-f 指定要从每行中提取的字段

-C 指定要从每行中提取的文本列

eg:

[root@localhost mnt]# vim check_ip.sh

#!/bin/bash

ifconfig $1 |grep inet |grep inet6 -v |awk -F " " '{print $2}'

[root@localhost mnt]# chmod +x check_ip.sh

[root@localhost mnt]# /mnt/check_ip.sh eth0

172.25.254.141

五、sort 命令

• sort 用于排序文本数据。该数据可以位于文件中或其他命令输出中。 Sort 通常与管道一起使用

选项 说明

-n 按数值而非字符排序

-k   设置排序字段

-t 指定其他字段分隔符(默认为空格)

[root@localhost mnt]# sort -rnu wesy  ##按数值倒序排序,并显示唯一的数字

444

99

77

56

34

15

14

8

7

5

4

3

[root@localhost mnt]# sort -rn wesy |uniq -c

      1 444

      1 99

      1 77

      2 56

      2 34

      1 15

      1 14

      2 8

      2 7

      1 5

      1 4

      2 3

      2 1

      1

六、uniq 命令

•uniq“ 删除 ” 文件中重复的相邻行。若要只打印文件中出现的唯一行(“ 删除 ” 所有重复行 ), 必须首先对 uniq 的输入进行排序。由于可以为uniq 指定其决策所基于的字段或列 , 因此这些字段或列是对其输入进行排序所必须的字段或列。如果未与选项一起使用 , uniq 会使用整个记录作为决策键 , 删除其输入中的重复行

选项 说明

-u 仅显示唯一行

-d 显示重复行

-c 每行显示一次(包括出现计数)

七、tr 命令

• tr 用于转字符 : 即 , 如果给定了两个字符范围 , 则只要发现某个字符位于第一个范围中 , 就会将其转换为第二个范围中对等的字符。该命令通常在 shell 脚本中使用 , 以按预期情况转换数据

• tr 'A-Z' 'a-z' <file

八、sed 命令

• sed 命令是流编辑器 , 用于对文本数据流执行编辑。假定要处理一个文件名 , sed 将对文件中的所有行执行搜索和替换 , 以将修改后的数据发送到标准输出 ; 即 , 其实际上并不修改现有文件。与 grep一样 , sed 通常在管道中使用

• 由于 sed 命令通常包含可以解释为 shell 元字符的字符 ,因此请按下面示例所示引用 sed 命令。默认情况下 , sed对文件中的所有行执行操作。在提供 sed 时 , 可带有地址( 将命令限制用于仅那些行 )

命令 说明

s/old/new/ 执行字符串转换,将old替换为new

d   删除匹配的行

eg:

[root@localhost mnt]# vim user_create.sh

#!/bin/bash

MAX=`wc -l $1|cut -d " " -f 1`

for NUM in $(seq 1 $MAX)

do

        USERNAME=`sed -n ${NUM}p $1`

        PASSWORD=`sed -n ${NUM}p $2`

        useradd $USERNAME

        echo $PASSWORD |passwd --stdin $USERNAME

done

[root@localhost mnt]# vim userfile

user1

user2

user3

[root@localhost mnt]# vim passfile

pass1

pass2

pass3

[root@localhost mnt]# sh user_create.sh userfile passfile

################第九单元部署 ftp 文件共享服务

一、部署 FTP 服务器

[root@localhost yum.repos.d]# vim rhel_dvd.repo  ##配置yum源

[root@localhost yum.repos.d]# cat rhel_dvd.repo

# Created by cloud-init on Thu, 10 Jul 2014 22:19:11 +0000

[rhel_dvd]

gpgcheck = 0

enabled = 1

baseurl = http://172.25.254.250/rhel7  

name = Remote classroom copy of dvd

• FTP ( 文件传输协议 ) 是 INTERNET 上仍常用的最老的网络协议之一 , 它为系统提供了通过网络与远程服务器进行传输的简单方法

• 在 RED HAT ENTREPRISE LINUX 6 中。 FTP 服务器包的名称为 VSFTPD , 它代表 Very Secure File Transfer Protocol Damon 服务器名称也叫做 vsftpd

• 默认配置文件让 ANONYMOUS 用户只能下载位于CHROOT 目录中的内容。 /var/ftp/ 这意味着远程 FTP客户端能以用户 anonymous 或 ftp 身份连接到服务器( 无需密码 ), 并从 ftp 服务器上的 /var/ftp/ 目录下载文件( 其本地 ftp 用户可以读取这些文件 )

二、部署网络服务的四个步骤

•安装服务软件

•启动服务

•启用服务

•测试服务

三、安装 vsftpd 包并启动服务

[root@localhost yum.repos.d]# yum clean all

• yum install vsftpd -y

• systemctl start vsftpd

• systemctl stop firewalld

• systemctl enable vsftpd

[kiosk@foundation41 Desktop]$ lftp 172.25.254.241  ####能登陆并且显示,表示安装成功

lftp 172.25.254.241:~> ls                

drwxr-xr-x    2 0        0               6 Mar 07  2014 pub

.vsftpd文件信息

/var/ftp      ##默认发布目录

/etc/vsftpd  ##配置目录

四、启用 vsftpd 服务

[root@localhost yum.repos.d]# firewall-config

public-->选中ftp,dhcpv6—client-->在options处选择Relode Firewalld

• Applications-->Sundry-->Firewall

[root@localhost yum.repos.d]# firewall-cmd --list-all

public (default, active)

  interfaces: eth0

  sources:

  services: dhcpv6-client ftp ssh

  ports:

  masquerade: no

  forward-ports:

  icmp-blocks:

  rich rules:

五、测试服务

• cd /var/ftp/pub/

• touch file{1..3}

• lftp 172.25.0.10

lftp 172.25.0.10:~> ls

drwxr-xr-x 2 0 0

lftp 172.25.0.10:/> cd pub/

lftp 172.25.0.10:/pub> ls

-rw-r--r-- 1 0 0

-rw-r--r-- 1 0 0

-rw-r--r-- 1 0 0

42 Nov 20 07:19 pub

0 Nov 20 07:19 file1

0 Nov 20 07:19 file2

0 Nov 20 07:19 file3

六、FTP 服务器配置

• 默认配置为匿名 FTP 服务器 , 仅允许匿名客户端 下载 , 并且禁用所有本地用户 , 禁止上传

• vsftpd 配置件 : /etc/vsftpd/vsftpd.conf ,document root 位于 /var/ftp/ 中 , 配置修改后 , 需重新启动服务

eg:

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

[root@localhost ~]# systemctl restart vsftpd.service

[root@localhost ~]# setenforce 0

• 选项示例 :

– anonymous_enable=YES

– local_enable=NO

– write_enable=NO

七、Vsftpd 服务配置

1)匿名用户设定

anonymous_enable=YES|NO ##匿名用户登陆限制

#<匿名用户上传>

vim /etc/vsftpd/vsftpd.conf

write_enable=YES

anon_upload_enable=YES

chgrp ftp /var/ftp/pub

chmod 775 /var/ftp/pub

eg:

eg:

[kiosk@foundation41 Desktop]$ lftp 172.25.254.241

lftp 172.25.254.241:~> cd pub/

cd 成功, 当前目录=/pub

lftp 172.25.254.241:/pub> ls

lftp 172.25.254.241:/pub> put /etc/passwd

put: Access failed: 550 Permission denied. (passwd) ##550系统不允许这样做  设置write_enable=YES

lftp 172.25.254.241:/pub> put /etc/passwd

put: Access failed: 553 Could not create file. (passwd) ##553没有权限

lftp 172.25.254.241:/pub> put /etc/passwd

2358 bytes transferred  ##上传成功

[root@localhost ~]# ll -ld /var/ftp/pub/   

drwxr-xr-x. 2 root root 6 Mar  7  2014 /var/ftp/pub/

[root@localhost ~]# chgrp ftp /var/ftp/pub/  ##把/var/ftp/pub/给ftp组

[root@localhost ~]# chmod 775 /var/ftp/pub/  ##改变/var/ftp/pub/的权限为775

#<匿名用户家目录修改>

anon_root=/direcotry

#<匿名用户上传文件默认权限修改>

anon_umask=xxx

#<匿名用户建立目录>

anon_mkdir_write_enable=YES|NO

#<匿名用户下载>

anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载

#<匿名用户删除>

anon_other_write_enable=YES|NO

#<匿名用户使用的用户身份修改>

chown_uploads=YES

chown_username=student

#<最大上传速率>

anon_max_rate=102400

#<最大链接数>

max_clients=2

2)本地用户设定

local_enable=YES|NO ##本地用户登陆限制

eg:

[kiosk@foundation41 Desktop]$ lftp 172.25.254.241 -u student

口令:

lftp student@172.25.254.241:~> cd /etc   

cd: 登录失败: 530 This FTP server is anonymous only.  ##参数为local_enable=NO不允许本地用户登陆

lftp student@172.25.254.241:~> lftp 172.25.254.241

lftp 172.25.254.241:~> ls

t`ls' at 0 [重新连接前延时: 24]   

中断                                     

lftp 172.25.254.241:~> quit

[kiosk@foundation41 Desktop]$ lftp 172.25.254.241 -u student

口令:

lftp student@172.25.254.241:~> ls  ##530登陆密码不正确

ls: 登录失败: 530 Login incorrect.              

lftp student@172.25.254.241:~> quit

write_enable=YES|NO ##本地用户写权限限制

eg:

[kiosk@foundation41 Desktop]$ lftp 172.25.254.241 -u student

口令:

lftp student@172.25.254.241:~> put /etc/passwd

put: Access failed: 553 Could not create file. (passwd) ##setenforce 0 解决

lftp student@172.25.254.241:~> put /etc/passwd

2358 bytes transferred                                

lftp student@172.25.254.241:~> put /etc/passwd

put: Access failed: 550 Permission denied. (passwd)  ##550文件系统不允许这样做

#<本地用户家目录修改>

local_root=/directory

#<本地用户上传文件权限>

local_umask=xxx

#<限制本地用户浏览/目录>

所有用户被锁定到自己的家目录中

chroot_local_user=YES

chmod u-w /home/*

用户黑名单建立

chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

用户白名单建立

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

#<限制本地用户登陆>

vim /etc/vsftpd/ftpusers ##用户黑名单

vim /etc/vsftpd/user_list ##用户临时黑名单

用户白名单设定

userlist_deny=NO

/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp

eg:

[kiosk@foundation41 Desktop]$ lftp 172.25.254.241

lftp 172.25.254.241:~> ls                

drwxr-xr-x    2 0        0               6 Mar 07  2014 pub

lftp 172.25.254.241:/> cd pub/

lftp 172.25.254.241:/pub> ls

lftp 172.25.254.241:/pub> quit

[kiosk@foundation41 Desktop]$ lftp 172.25.254.241 -u student

口令:

lftp student@172.25.254.241:~> ls        

lftp student@172.25.254.241:~> ls  

lftp student@172.25.254.241:~> cd mnt/

cd: Access failed: 550 Failed to change directory. (/home/student/mnt)

lftp student@172.25.254.241:~> cd /home/student/

lftp student@172.25.254.241:~> ls

lftp student@172.25.254.241:~> cd /home/student/mnt

cd: Access failed: 550 Failed to change directory. (/home/student/mnt)

lftp student@172.25.254.241:~> cd /etc

lftp student@172.25.254.241:/etc> quit

12 anonymous_enable=YES   ##允许匿名用户登陆

 13 #

 14 # Uncomment this to allow local users to log in.

 15 # When SELinux is enforcing check for SE bool ftp_home_dir

 16 local_enable=YES  ##允许本地用户登陆

 17 #

 18 # Uncomment this to enable any form of FTP write command.

 19 write_enable=YES  

 20 #

 21 # Default umask for local users is 077. You may wish to change this to 022,

 22 # if your users expect that (022 is used by most other ftpd's)

 23 local_umask=022

 24 #

 25 # Uncomment this to allow the anonymous FTP user to upload files. This only

 26 # has an effect if the above global write enable is activated. Also, you wil    l

 27 # obviously need to create a directory writable by the FTP user.

 28 # When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_f    tpd_full_access

 29 anon_upload_enable=YES  ##允许上传

500权限过大

原文地址:https://www.cnblogs.com/yangying2017/p/6685696.html