• Linux云自动化运维第十一课


    第六单元 文本处理工具

    一、diff 命令

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

    -c 显示上下文周围的行

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

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

    eg:[root@localhost Desktop]# vim file   ###两个文件内容相似

    [root@localhost Desktop]# cat file

    hello world

    hello linux

    [root@localhost Desktop]# vim file1

    [root@localhost Desktop]# cat file1

    hello world

    123

    hello linux

    [root@localhost Desktop]# diff file file1   ###比较两个文件的内容,了解区别

    1a2

    > 123

    [root@localhost Desktop]# diff -u file file1   ###使用统一输出格式(对于生成补丁文件很有用)

    --- file 2017-04-06 21:20:54.872551171 -0400

    +++ file1 2017-04-06 21:21:28.328551171 -0400

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

     hello world

    +123

     hello linux

    [root@localhost Desktop]# diff -c file file1   ###显示上下文周围的行

    *** file 2017-04-06 21:20:54.872551171 -0400

    --- file1 2017-04-06 21:21:28.328551171 -0400

    ***************

    *** 1,2 ****

    --- 1,3 ----

      hello world

    + 123

      hello linux

    [root@localhost Desktop]# mkdir dir

    [root@localhost Desktop]# mkdir dir1

    [root@localhost Desktop]# touch dir/file

    [root@localhost Desktop]# touch dir1/file

    [root@localhost Desktop]# touch dir1/file1

    [root@localhost Desktop]# diff -r dir dir1   ###从指定的目录开始文件执行递归式比较

    只在 dir1 存在:file1

    [root@localhost Desktop]#

    二、修补命令 patch

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

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

    – [root@host etc]# patch issue patchfile

    Patching file issue

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

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

    Patching file hosts

    Patching file network

    eg:[root@localhost Desktop]# yum reinstall patch -y   ###下载patch

    已加载插件:langpacks

    正在解决依赖关系

    --> 正在检查事务

    ---> 软件包 patch.x86_64.0.2.7.1-8.el7 将被 已重新安装

    --> 解决依赖关系完成

    依赖关系解决

    ================================================================================

     Package        架构            版本                    源                 大小

    ================================================================================

    重新安装:

     patch          x86_64          2.7.1-8.el7             rhel_dvd          110 k

    事务概要

    ================================================================================

    重新安装  1 软件包

    总下载量:110 k

    安装大小:210 k

    Downloading packages:

    patch-2.7.1-8.el7.x86_64.rpm                               | 110 kB   00:00     

    Running transaction check

    Running transaction test

    Transaction test succeeded

    Running transaction

      正在安装    : patch-2.7.1-8.el7.x86_64                                    1/1

      验证中      : patch-2.7.1-8.el7.x86_64                                    1/1

    已安装:

      patch.x86_64 0:2.7.1-8.el7                                                    

    完毕!

    [root@localhost Desktop]# ls

    file  file1

    [root@localhost Desktop]# diff -c file file1 >file.path    ###显示上下文周围的行,定向到file.path  

    [root@localhost Desktop]# patch file file.path    ###同步文件

    patching file file

    [root@localhost Desktop]# cat file

    hello world

    123

    hello linux

    三、grep 命令

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

    2.模式可以包含正则表达式元字符 , 因此始终为正则表达式加引号通常被视为一种好办法

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

    -n 前置返回行的行号

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

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

    -v 返回不包含模式的行

    eg:[root@localhost Desktop]# cat passwd

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

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

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

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

    ROOT:test:root:test

    test:root:test:root

    test:root:test

    [root@localhost Desktop]# grep root passwd

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

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

    ROOT:test:root:test

    test:root:test:root

    test:root:test

    [root@localhost Desktop]# grep -i root passwd   ###返回有关键字root的行,不区分大小写

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

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

    ROOT:test:root:test

    test:root:test:root

    test:root:test

    [root@localhost Desktop]# grep -ic root passwd   ###返回有关键字root(不区分大小写)的行数

    5

    [root@localhost Desktop]# grep -in root passwd   ###前置返回行号

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

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

    5:ROOT:test:root:test

    6:test:root:test:root

    7:test:root:test

    [root@localhost Desktop]# grep -iv root passwd   ###返回不包含关键字root的行

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

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

    [root@localhost Desktop]# grep ^root passwd   ###返回关键字root在行首的行

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

    [root@localhost Desktop]# grep root$ passwd   ###返回关键字root在行尾的行

    test:root:test:root

    [root@localhost Desktop]# grep root passwd | grep -v -E "^root|root$"   ###返回有关键字root,但关键字不在行首或行尾

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

    ROOT:test:root:test

    test:root:test

    [root@localhost Desktop]# grep root passwd | grep -iv -E "^root|root$"   ###返回不包含关键字不在行首或行尾模式的行,即root在行中间

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

    test:root:test

    [root@localhost Desktop]# grep student -r /etc/   ###对文件执行递归式搜索,从命名目录开始

    /etc/group:wheel:x:10:student

    /etc/group:student:x:1000:

    /etc/gshadow:wheel:::student

    /etc/gshadow:student:!::

    /etc/shadow-:student:$6$8oIjLCsc$/n1iQXYh1E6.uOEuJKgioqAtmqm2TQmkJGF2RwyteIr1tIfrPdiRYgWe6Sjen5/eMij2uHM/a1tue/QRlo3X80:16261:0:99999:7:::

    /etc/passwd:student:x:1000:1000:Student User:/home/student:/bin/bash

    /etc/shadow:student:$6$8oIjLCsc$/n1iQXYh1E6.uOEuJKgioqAtmqm2TQmkJGF2RwyteIr1tIfrPdiRYgWe6Sjen5/eMij2uHM/a1tue/QRlo3X80:16261:0:99999:7:::

    /etc/cron.deny:student

    /etc/passwd-:student:x:1000:1000:Student User:/home/student:/bin/bash

    /etc/security/limits.conf:#@student        hard    nproc           20

    /etc/security/limits.conf:#@student        -       maxlogins       4

    /etc/group-:wheel:x:10:student

    /etc/group-:student:x:1000:

    /etc/gshadow-:wheel:::student

    /etc/gshadow-:student:!::

    /etc/at.deny:student

    /etc/cron.allow:student

    [root@localhost Desktop]# grep student -rn /etc/   ###前置返回行的行号

    /etc/group:11:wheel:x:10:student

    /etc/group:43:student:x:1000:

    /etc/gshadow:11:wheel:::student

    /etc/gshadow:43:student:!::

    /etc/shadow-:25:student:$6$8oIjLCsc$/n1iQXYh1E6.uOEuJKgioqAtmqm2TQmkJGF2RwyteIr1tIfrPdiRYgWe6Sjen5/eMij2uHM/a1tue/QRlo3X80:16261:0:99999:7:::

    /etc/passwd:25:student:x:1000:1000:Student User:/home/student:/bin/bash

    /etc/shadow:25:student:$6$8oIjLCsc$/n1iQXYh1E6.uOEuJKgioqAtmqm2TQmkJGF2RwyteIr1tIfrPdiRYgWe6Sjen5/eMij2uHM/a1tue/QRlo3X80:16261:0:99999:7:::

    /etc/cron.deny:1:student

    /etc/passwd-:25:student:x:1000:1000:Student User:/home/student:/bin/bash

    /etc/security/limits.conf:55:#@student        hard    nproc           20

    /etc/security/limits.conf:59:#@student        -       maxlogins       4

    /etc/group-:11:wheel:x:10:student

    /etc/group-:43:student:x:1000:

    /etc/gshadow-:11:wheel:::student

    /etc/gshadow-:43:student:!::

    /etc/at.deny:1:student

    /etc/cron.allow:1:student

    四、Cut 命令

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

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

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

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

    eg:[root@localhost Desktop]# cut -d : -f 1 passwd    ###指定用于提取字段的分隔符":",指定要从每行中提取的字段"1"

    root

    bin

    daemon

    operator

    ROOT

    test

    test

    [root@localhost Desktop]# cut -c 4-10 passwd   ###指定要从每行中提取的文本列"4-10"

    t:x:0:0

    :x:1:1:

    mon:x:2

    rator:x

    T:test:

    t:root:

    t:root:

    [root@localhost Desktop]# cut -d " " -f 1 passwd   ###以空格为分隔符

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

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

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

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

    ROOT:test:root:test

    test:root:test:root

    test:root:test

    [root@localhost Desktop]# cut -d / -f 1 passwd     ###以“/”为分隔符

    root:x:0:0:root:

    bin:x:1:1:bin:

    daemon:x:2:2:daemon:

    operator:x:11:0:operator:

    ROOT:test:root:test

    test:root:test:root

    test:root:test

    [root@localhost Desktop]# awk -F : '{print $1,$3}' passwd   ###以“:”为分隔符,显示第一个和第三个字符串

    root 0

    bin 1

    daemon 2

    operator 11

    ROOT root

    test test

    test test

    [root@localhost Desktop]# awk -F : '{print $1$3}' passwd

    root0

    bin1

    daemon2

    operator11

    ROOTroot

    testtest

    testtest

    [root@localhost Desktop]# awk -F : '{print $1" "$3}' passwd

    root 0

    bin 1

    daemon 2

    operator 11

    ROOT root

    test test

    test test

    [root@localhost Desktop]# awk -F : '{print $1/$3}' passwd

    awk: cmd. line:1: (FILENAME=passwd FNR=1) fatal: division by zero attempted

    [root@localhost Desktop]# awk -F : '{print $1"/"$3}' passwd

    root/0

    bin/1

    daemon/2

    operator/11

    ROOT/root

    test/test

    test/test

    [root@localhost Desktop]# awk -F : '{print $1":"$3}' passwd

    root:0

    bin:1

    daemon:2

    operator:11

    ROOT:root

    test:test

    test:test

    [root@localhost Desktop]# ifconfig eth0 | grep inet | grep inet6 -v | awk -F " " '{print $2}'

    172.25.42.10

    五、sort 命令

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

    -n 按数值而非字符排序

    -k 设置排序字段

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

    -r 倒叙

    -u 唯一的

    eg:[root@localhost Desktop]# cat file

    1

    3

    2

    4

    1

    4

    11

    8

    34

    21

    9

    [root@localhost Desktop]# sort file    ###排序,以第一个数字为基准,排序

    1

    1

    11

    2

    21

    3

    34

    4

    4

    8

    9

    [root@localhost Desktop]# sort -n file   ###按数值而非字符排序

    1

    1

    2

    3

    4

    4

    8

    9

    11

    21

    34

    [root@localhost Desktop]# vim file

    [root@localhost Desktop]# cat file

    2:a:1

    4:a:3

    1:a:2

    3:a:4

    2:a:1

    1:a:4

    4:a:11

    11:a:8

    22:a:34

    33:a:21

    44:a:9

    [root@localhost Desktop]# sort -n file   ###按数值而非字符排序

    1:a:2

    1:a:4

    2:a:1

    2:a:1

    3:a:4

    4:a:11

    4:a:3

    11:a:8

    22:a:34

    33:a:21

    44:a:9

    [root@localhost Desktop]# sort -t : -k 3 -n file   ###以“:”为分隔符,第三个字符排序

    2:a:1

    2:a:1

    1:a:2

    4:a:3

    1:a:4

    3:a:4

    11:a:8

    44:a:9

    4:a:11

    33:a:21

    22:a:34

    [root@localhost Desktop]# sort -t : -k 3 -rn file   ###以“:”为分隔符,第三个字符倒序

    22:a:34

    33:a:21

    4:a:11

    44:a:9

    11:a:8

    3:a:4

    1:a:4

    4:a:3

    1:a:2

    2:a:1

    2:a:1

    [root@localhost Desktop]# sort -t : -k 3 -rnu file   ###以“:”为分隔符,第三个字符倒序,不显示重复的

    22:a:34

    33:a:21

    4:a:11

    44:a:9

    11:a:8

    3:a:4

    4:a:3

    1:a:2

    2:a:1

    [root@localhost Desktop]#

    六、uniq 命令

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

    -u 仅显示唯一行

    -d 显示重复行

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

    eg:[root@localhost Desktop]# cat file

    1

    3

    2

    4

    1

    4

    11

    8

    34

    21

    9

    [root@localhost Desktop]# sort -n file | uniq -u   ###显示唯一行

    2

    3

    8

    9

    11

    21

    34

    [root@localhost Desktop]# sort -n file | uniq -d   ###显示重复行

    1

    4

    [root@localhost Desktop]# sort -n file | uniq -c   ###每行仅显示一次,并计数

          2 1

          1 2

          1 3

          2 4

          1 8

          1 9

          1 11

          1 21

          1 34

    [root@localhost Desktop]# cat file

    2:a:1

    4:a:3

    1:a:2

    3:a:4

    2:a:1

    1:a:4

    4:a:11

    11:a:8

    22:a:34

    33:a:21

    44:a:9

    [root@localhost Desktop]# sort -t : -k 3 -n file | uniq -u

    1:a:2

    4:a:3

    1:a:4

    3:a:4

    11:a:8

    44:a:9

    4:a:11

    33:a:21

    22:a:34

    [root@localhost Desktop]# sort -t : -k 3 -n file | uniq -c

          2 2:a:1

          1 1:a:2

          1 4:a:3

          1 1:a:4

          1 3:a:4

          1 11:a:8

          1 44:a:9

          1 4:a:11

          1 33:a:21

          1 22:a:34

    七、tr 命令

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

    2.tr 'A-Z' 'a-z' <file

    八、sed 命令

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

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

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

    d 删除匹配的行

    eg:[root@localhost Desktop]# vim create_users.sh

    [root@localhost Desktop]# cat create_users.sh

    #!/bin/bash

    max=`wc -l /root/Desktop/userfile|awk -F ' ' '{print $1}'`

    for NUM in $(seq 1 $max)

    do

    username=`sed -n "$NUM"p $1`

    passwd=`sed -n "$NUM"p $2`

    useradd $username

    echo $passwd | passwd --stdin $username

    done

    [root@localhost Desktop]# ./create_users.sh /root/Desktop/userfile /root/Desktop/passfile

    更改用户 user1 的密码 。

    passwd:所有的身份验证令牌已经成功更新。

    更改用户 user2 的密码 。

    passwd:所有的身份验证令牌已经成功更新。

    更改用户 user3 的密码 。

    passwd:所有的身份验证令牌已经成功更新。

    更改用户 user4 的密码 。

    passwd:所有的身份验证令牌已经成功更新。

    更改用户 user5 的密码 。

    passwd:所有的身份验证令牌已经成功更新。

    [root@localhost Desktop]#

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

    一、部署 FTP 服务器

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

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

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

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

    1.安装服务软件

    2.启动服务

    3.启用服务

    4.测试服务

    三、安装 vsftpd 包并启动服务

    1.yum install vsftpd -y

    2.systemctl start vsftpd

    3.systemctl enable vsftpd

    四、启用 vsftpd 服务

    1.Applications-->Sundry-->Firewall

    五、测试服务

    1.cd /var/ftp/pub/

    2.touch file{1..3}

    3.lftp 172.25.0.10

    lftp 172.25.0.10:~> ls

    drwxr-xr-x 2 0 0 42 Nov 20 07:19 pub

    lftp 172.25.0.10:/> cd pub/

    lftp 172.25.0.10:/pub> ls

    -rw-r--r-- 1 0 0 0 Nov 20 07:19 file1

    -rw-r--r-- 1 0 0 0 Nov 20 07:19 file2

    -rw-r--r-- 1 0 0 0 Nov 20 07:19 file3

    六、FTP 服务器配置

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

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

    3.选项示例 :

    – anonymous_enable=YES

    – local_enable=NO

    – write_enable=NO

    七、Vsftpd 服务配置

    eg:[root@localhost ~]# cd /etc/yum.repos.d/   

    [root@localhost yum.repos.d]# ls

    rhel_dvd.repo

    [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

    [root@localhost yum.repos.d]# yum clean all    ###重启yum服务

    已加载插件:langpacks

    正在清理软件源: rhel_dvd

    Cleaning up everything

    [root@localhost yum.repos.d]# yum install vsftpd -y   ###下载vsftpd软件

    已加载插件:langpacks

    rhel_dvd                                                 | 4.1 kB     00:00     

    (1/2): rhel_dvd/group_gz                                   | 134 kB   00:00     

    (2/2): rhel_dvd/primary_db                                 | 3.4 MB   00:00     

    正在解决依赖关系

    --> 正在检查事务

    ---> 软件包 vsftpd.x86_64.0.3.0.2-9.el7 将被 安装

    --> 解决依赖关系完成

    依赖关系解决

    ================================================================================

     Package         架构            版本                   源                 大小

    ================================================================================

    正在安装:

     vsftpd          x86_64          3.0.2-9.el7            rhel_dvd          166 k

    事务概要

    ================================================================================

    安装  1 软件包

    总下载量:166 k

    安装大小:343 k

    Downloading packages:

    vsftpd-3.0.2-9.el7.x86_64.rpm                              | 166 kB   00:00     

    Running transaction check

    Running transaction test

    Transaction test succeeded

    Running transaction

      正在安装    : vsftpd-3.0.2-9.el7.x86_64                                   1/1

      验证中      : vsftpd-3.0.2-9.el7.x86_64                                   1/1

    已安装:

      vsftpd.x86_64 0:3.0.2-9.el7                                                   

    完毕!

    [root@localhost yum.repos.d]# systemctl start vsftpd   ###开启vsftpd服务

    [root@localhost yum.repos.d]# systemctl enable vsftpd   ###开机vsftpd服务自启动

    ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service'

    [root@localhost yum.repos.d]# firewall-cmd --list-all   ###查看火墙状态

    public (default, active)

      interfaces: eth0

      sources:

      services: dhcpv6-client ssh   ###仅对于ssh服务,火墙永久关闭

      ports:

      masquerade: no

      forward-ports:

      icmp-blocks:

      rich rules:

    [root@localhost yum.repos.d]# firewall-config   ###设置防火墙状态

    #添加ftp,选择permanent,以及options->reload firewalld   ###对于ftp服务,防火墙永久关闭

    [kiosk@foundation42 Desktop]$ lftp 172.25.254.142   ###匿名用户连接

    lftp 172.25.254.142:~> ls   ###连接成功,打开的是/var/ftp/目录

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

    lftp 172.25.254.142:/> quit

    [kiosk@foundation42 Desktop]$

    [root@localhost yum.repos.d]# cd /var/ftp/

    您在 /var/spool/mail/root 中有新邮件

    [root@localhost ftp]# ls

    pub

    [root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf   ###ftp服务配置文件

    #12 anonymous_enable=yes   ###匿名用户,yes可连接,no不可连接

    #16 local_enable=no   ###本地用户,yes可连接,no不可连接

    [root@localhost vsftpd]# systemctl restart vsftpd.service    ###重启vsftpd

    [kiosk@foundation42 Desktop]$ lftp 172.25.254.142 -u student

    口令:

    lftp student@172.25.254.142:~> ls        

    ls: 登录失败: 530 This FTP server is anonymous only.

    lftp student@172.25.254.142:~> quit

    [kiosk@foundation42 Desktop]$

    [root@localhost vsftpd]# cd /var/ftp/

    [root@localhost ftp]# touch file{1..5}

    [kiosk@foundation42 Desktop]$ lftp 172.25.254.142

    lftp 172.25.254.142:~> ls

    -rw-r--r--    1 0        0               0 Apr 07 06:17 file1

    -rw-r--r--    1 0        0               0 Apr 07 06:17 file2

    -rw-r--r--    1 0        0               0 Apr 07 06:17 file3

    -rw-r--r--    1 0        0               0 Apr 07 06:17 file4

    -rw-r--r--    1 0        0               0 Apr 07 06:17 file5

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

    lftp 172.25.254.142:/> quit

    [kiosk@foundation42 Desktop]$

    [kiosk@foundation42 Desktop]$ lftp 172.25.254.142 -u student

    口令:

    lftp student@172.25.254.142:~> ls        

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

    put: Access failed: 553 Could not create file. (passwd)

    lftp student@172.25.254.142:~> quit

    [kiosk@foundation42 Desktop]$

    [root@localhost ftp]# setenforce 0

    [kiosk@foundation42 Desktop]$ lftp 172.25.254.142 -u student

    口令:

    lftp student@172.25.254.142:~> ls        

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

    2270 bytes transferred                                

    lftp student@172.25.254.142:~> quit

    [kiosk@foundation42 Desktop]$

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

    # 19 write_enable=no

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

    [kiosk@foundation42 Desktop]$ lftp 172.25.254.142 -u student

    口令:

    lftp student@172.25.254.142:~> ls        

    -rw-r--r--    1 1000     1000         2270 Apr 07 06:23 passwd

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

    put: Access failed: 550 Permission denied. (passwd)

    lftp student@172.25.254.142:~> quit

    [kiosk@foundation42 Desktop]$

    [kiosk@foundation42 Desktop]$ lftp 172.25.254.142

    lftp 172.25.254.142:/> put /etc/passwd

    put: Access failed: 550 Permission denied. (passwd)

    lftp 172.25.254.142:/> quit

    [kiosk@foundation42 Desktop]$

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

    #29 anon_upload_enable=YES

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

    [kiosk@foundation42 Desktop]$ lftp 172.25.254.142

    lftp 172.25.254.142:~> ls

    -rw-r--r--    1 0        0               0 Apr 07 06:17 file1

    -rw-r--r--    1 0        0               0 Apr 07 06:17 file2

    -rw-r--r--    1 0        0               0 Apr 07 06:17 file3

    -rw-r--r--    1 0        0               0 Apr 07 06:17 file4

    -rw-r--r--    1 0        0               0 Apr 07 06:17 file5

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

    lftp 172.25.254.142:/> put /etc/passwd

    put: Access failed: 553 Could not create file. (passwd)

    lftp 172.25.254.142:/> quit

    [kiosk@foundation42 Desktop]$

    [root@localhost var]# chgrp ftp /var/ftp/pub/

    [root@localhost var]# chmod 775 /var/ftp/pub/

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

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

    [kiosk@foundation42 Desktop]$ lftp 172.25.254.142

    lftp 172.25.254.142:~> cd /pub/

    lftp 172.25.254.142:/pub> ls

    lftp 172.25.254.142:/pub> put /etc/passwd

    2270 bytes transferred

    lftp 172.25.254.142:/pub> quit

    [kiosk@foundation42 Desktop]$

    [kiosk@foundation42 Desktop]$ lftp 172.25.254.142

    lftp 172.25.254.142:~> cd pub/

    lftp 172.25.254.142:/pub> ls

    -rw-------    1 14       50           2270 Apr 07 06:46 passwd

    lftp 172.25.254.142:/pub> get passwd

    get: Access failed: 550 Failed to open file. (passwd)

    lftp 172.25.254.142:/pub> mkdir test

    mkdir: Access failed: 550 Permission denied. (test)

    lftp 172.25.254.142:/pub> rm -fr passwd

    lftp 172.25.254.142:/pub> ls

    -rw-------    1 14       50           2270 Apr 07 06:46 passwd

    lftp 172.25.254.142:/pub> quit

    [kiosk@foundation42 Desktop]$ 

  • 相关阅读:
    linux中read用法
    apt-get 使用指南
    linux文件系统
    KMP
    在C#中的各种应用
    A*算法,遗传算法
    Dijkstra算法,Floyd算法
    AE开发tips
    TOC 右键菜单
    ubuntu下的一些意外
  • 原文地址:https://www.cnblogs.com/Virgo-sept/p/6684950.html
Copyright © 2020-2023  润新知