unit6&9

##################第六單元文本處理工具ios

 

1、diff 命令正則表達式

• diff 命令用於比較兩個文件的內容 , 以瞭解其區別。它還可用於建立補丁文件。補丁文件用於在企業環境的多臺計算機之間對類似文件進行更改shell

選項 說明vim

-C 顯示上下文周圍的行bash

-U 使用統一輸出格式(對於生成補丁文件頗有用)服務器

-r 從指定的目錄開始文件執行遞歸式比較網絡

[root@localhost mnt]# vim filessh

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

 

2、修補命令 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

 

3、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的行

4、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

5、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

 

6、uniq 命令

•uniq「 刪除 」 文件中重複的相鄰行。若要只打印文件中出現的惟一行(「 刪除 」 全部重複行 ), 必須首先對 uniq 的輸入進行排序。因爲能夠爲uniq 指定其決策所基於的字段或列 , 所以這些字段或列是對其輸入進行排序所必須的字段或列。若是未與選項一塊兒使用 , uniq 會使用整個記錄做爲決策鍵 , 刪除其輸入中的重複行

選項 說明

-u 僅顯示惟一行

-d 顯示重複行

-c 每行顯示一次(包括出現計數)

7、tr 命令

• tr 用於轉字符 : 即 , 若是給定了兩個字符範圍 , 則只要發現某個字符位於第一個範圍中 , 就會將其轉換爲第二個範圍中對等的字符。該命令一般在 shell 腳本中使用 , 以按預期狀況轉換數據

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

8、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 文件共享服務

 

1、部署 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 用戶能夠讀取這些文件 )

2、部署網絡服務的四個步驟

•安裝服務軟件

•啓動服務

•啓用服務

•測試服務

3、安裝 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  ##配置目錄

 

4、啓用 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:

5、測試服務

• 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

6、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

7、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權限過大

本站公眾號
   歡迎關注本站公眾號,獲取更多信息