ubuntu22.04安装ftp教程,测试上传文件

学习目标:

ubuntu22.04安装ftp教程,测试上传文件


学习内容:

Ubuntu 系统默认是没有自带 FTP 服务的。不过,Ubuntu 提供了多种 FTP 服务器软件供你选择并安装使用,下面为你介绍一些常见的 FTP 服务器及其安装方式:

vsftpd

vsftpd(Very Secure FTP Daemon)是一款在 Ubuntu 系统中广泛使用的 FTP 服务器软件,它以安全、稳定和高性能著称。

安装步骤
  1. 打开终端,使用以下命令更新软件包列表:
sudo apt update
  1. 安装 vsftpd
sudo apt install vsftpd
  1. 安装完成后,启动 vsftpd 服务:
sudo systemctl start vsftpd
  1. 可以设置 vsftpd 服务在系统启动时自动启动:
sudo systemctl enable vsftpd

访问 vsftpd 服务

在成功启动 vsftpd 服务后,你可以使用 FTP 客户端软件来访问该服务,具体步骤如下:

1. 确定服务器的 IP 地址

在 Ubuntu 系统中,你可以使用 ip addrifconfig(如果已安装)命令来查看服务器的 IP 地址。例如:

ip addr

从输出结果中找到对应的网络接口(如 eth0ens33),查看其 inet 后面的 IP 地址。

2. 选择合适的 FTP 客户端
  • Linux 系统:可以使用 ftplftp 等命令行工具。例如使用 ftp 命令:
ftp 192.168.1.3

按照提示输入用户名和密码进行登录。

客户端上传文件的默认位置

本地用户上传

对于本地用户,默认情况下,用户上传的文件会存放在其主目录下。例如,用户 testuser 的主目录是 /home/testuser,那么该用户上传的文件就会存放在这个目录中。

1. 创建新用户

使用 adduser 命令创建一个新用户,例如创建一个名为 ftpuser 的用户:

sudo adduser ftpuser

执行上述命令后,系统会提示你输入该用户的密码,你需要设置一个安全的密码。接着还会提示你输入一些额外信息(如全名、房间号等),你可以根据需要输入或直接按回车键跳过。

2. 设置用户权限

为了让该用户能够上传和下载文件,你需要确保用户对相关目录有适当的权限。

2.1 更改用户主目录权限

通常用户上传的文件会存放在其主目录下,你可以使用 chmod 命令来修改主目录的权限。例如,将 ftpuser 的主目录权限设置为 755

sudo chmod 755 /home/ftpuser
2.2 确保 vsftpd 允许本地用户登录

编辑 /etc/vsftpd.conf 配置文件,确保以下配置项存在且设置正确:

local_enable=YES
write_enable=YES

可以使用以下命令打开配置文件进行编辑:

sudo nano /etc/vsftpd.conf

修改完成后,按 Ctrl + X 组合键,然后按 Y 保存修改,最后按回车键确认。

3. 重启 vsftpd 服务

修改配置文件后,需要重启 vsftpd 服务使配置生效:

sudo systemctl restart vsftpd

4. 测试用户登录

你可以使用 FTP 客户端(如 ftp 命令行工具)来测试新用户是否能够登录。例如:

ftp 127.0.0.1

在提示输入用户名时输入 ftpuser,输入之前设置的密码,若能成功登录,则表示用户创建和配置成功。

使用 ftp 命令行工具登录并新建文件上传到ftp

1. 在本地创建一个空文件

首先,在本地创建一个空文件,例如名为 test.txt 的文件(注意目录位置最好创建在当前目录下,并在该目录登录ftp):

touch test.txt
2. 连接到 FTP 服务器

使用 ftp 命令连接到 FTP 服务器,假设服务器 IP 地址是 17.10.1.3,并使用之前创建的 ftpuser 用户登录:

ftp 17.10.1.3

按照提示输入用户名 ftpuser 和对应的密码。

3. 上传文件

登录成功后,在 ftp> 提示符下使用 put 命令上传文件:

put test.txt

执行该命令后,test.txt 文件就会被上传到 FTP 服务器上用户的主目录中。上传完成后,你可以使用 ls 命令查看服务器上的文件列表,确认文件是否上传成功:

ls
4. 退出 FTP 连接

上传完成后,使用 quit 命令退出 FTP 连接:

quit

若要让上传的文件默认对系统用户 baiyangling 具有 777 权限,可结合 FTP 服务器的配置与 Linux 系统文件权限的设置来实现,以下以 vsftpd 为例进行详细说明。

1. 配置 vsftpd 上传文件的默认权限

vsftpd 使用 local_umask 参数来控制上传文件的默认权限,需要修改该参数来达到预期效果。

  • 编辑配置文件:使用以下命令打开 vsftpd 的配置文件:
sudo nano /etc/vsftpd.conf
  • 设置 local_umask:在配置文件中找到或添加 local_umask 这一行,并将其值设置为 000。这是因为 umask 是用于在创建文件或目录时屏蔽掉某些权限的,000 表示不屏蔽任何权限,上传的文件默认就会具有最大权限。
local_umask=000
  • 保存并退出:按 Ctrl + X,然后按 Y 确认保存,最后按回车键退出编辑器。

2. 重启 vsftpd 服务

修改配置文件后,需要重启 vsftpd 服务让新配置生效:

sudo systemctl restart vsftpd

3. 确保文件所属用户和组的设置

要保证上传的文件所属用户和组设置正确,以便 baiyangling 用户能有相应权限。一般上传文件默认属于执行 FTP 操作的用户,如果想让上传文件默认属于 baiyangling,可以借助 setfacl 命令(前提是系统支持 ACL)或者在文件上传后修改文件的所有者。

方法一:使用 ACL(访问控制列表)

ACL 可以为特定用户或组添加额外的权限。

  • 安装 acl 工具(如果未安装)
sudo apt-get install acl
  • 设置默认 ACL:设置上传目录的默认 ACL,让 baiyangling 用户对新创建的文件有 777 权限。假设上传目录是 /home/ftpuser,执行以下命令:
sudo setfacl -d -m u:baiyangling:rwx /home/ftpuser

这里 -d 表示设置默认 ACL,-m 表示修改,u:baiyangling:rwx 表示为用户 baiyangling 赋予读、写、执行权限。

setfacl -d -m u:baiyangling:rwx /home/ftpuser 这个命令是用来设置 /home/ftpuser 目录的默认访问控制列表(ACL),意味着后续在该目录下创建的新文件和子目录,用户 baiyangling 会有读(r)、写(w)、执行(x)权限。但执行后 baiyangling 仍无法直接删除新上传的文件,可能有以下几种原因及解决办法:

1. 权限继承问题

虽然设置了默认 ACL,但可能由于文件上传方式的原因,新文件没有继承默认 ACL。

2. 挂载选项问题

如果 /home/ftpuser 所在的文件系统挂载时没有启用 ACL 支持,那么设置的 ACL 不会生效。

检查方法

可以使用 mount 命令查看文件系统的挂载选项:

mount | grep /home/ftpuser

如果输出中没有 acl 选项,说明未启用 ACL 支持。

解决办法

需要重新挂载文件系统并添加 acl 选项。首先,找到该文件系统对应的分区,一般可以通过 /etc/fstab 文件查看。假设对应的分区是 /dev/sda2,先卸载该分区:

sudo umount /home/ftpuser

然后重新挂载并启用 ACL:

sudo mount -o remount,acl /dev/sda2 /home/ftpuser

为了让系统在每次启动时都自动以 ACL 支持挂载该分区,需要编辑 /etc/fstab 文件,在对应的挂载行添加 acl 选项。例如:

/dev/sda2 /home/ftpuser ext4 defaults,acl 0 0

使用 lsblk 命令可以查看系统中所有块设备(如硬盘、U盘 等)的信息,它以树形结构展示设备的层次关系。

lsblk

输出示例如下:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465.8G  0 disk 
├─sda1   8:1    0   512M  0 part /boot/efi
├─sda2   8:2    0    16G  0 part [SWAP]
└─sda3   8:3    0 449.3G  0 part /
sdb      8:16   0 931.5G  0 disk 
└─sdb1   8:17   0 931.5G  0 part /data

从输出中你可以确认 /dev/sdb1 是否存在,以及它的挂载点(如果已挂载)、大小等基本信息。

挂载并设置支持ACL,以达到通过ftpuser这个用户上传到/home/ftpuser这个文件夹下的文件baiyangling这个用户具备所有权限**

要实现将 /dev/sdb1 挂载到 /home/ftpuser 并支持 ACL,且让 baiyangling 用户对上传到该目录下的文件拥有所有权限,可以按照以下步骤操作:

1. 检查和安装 ACL 支持

首先要确保系统已经安装了 acl 工具包,可使用以下命令进行安装(以 Ubuntu 为例):

sudo apt-get update
sudo apt-get install acl

2. 备份 /home/ftpuser 目录下的数据(如果有)

sudo cp -r /home/ftpuser /home/ftpuser_backup

3. 创建挂载点

如果 /home/ftpuser 目录不存在,需要创建该目录:

sudo mkdir -p /home/ftpuser

4. 挂载 /dev/sdb1/home/ftpuser 并启用 ACL

使用以下命令进行挂载:

sudo mount -o defaults,acl /dev/sdb1 /home/ftpuser

这里的 -o 参数用于指定挂载选项,defaults 表示使用默认的挂载选项,acl 表示启用 ACL 支持。

5. 设置目录和文件的默认 ACL

为了让 baiyangling 用户对 /home/ftpuser 目录下新创建的文件和目录拥有所有权限,需要设置默认的 ACL。

sudo setfacl -d -m u:baiyangling:rwx /home/ftpuser

-d 选项表示设置默认 ACL,-m 选项用于修改 ACL 规则,u:baiyangling:rwx 表示为 baiyangling 用户授予读(r)、写(w)和执行(x)权限。

6. 为 baiyangling 用户设置当前目录的 ACL

除了默认 ACL,还需要为 baiyangling 用户设置当前 /home/ftpuser 目录的 ACL:

sudo setfacl -m u:baiyangling:rwx /home/ftpuser

7. 验证 ACL 设置

可以使用以下命令查看 /home/ftpuser 目录的 ACL 设置:

getfacl /home/ftpuser

输出应该显示 baiyangling 用户具有读、写和执行权限。

8. 设置自动挂载

为了让 /dev/sdb1 在系统重启后自动挂载到 /home/ftpuser 并启用 ACL,需要将挂载信息添加到 /etc/fstab 文件中。首先获取 /dev/sdb1 的 UUID:

sudo blkid /dev/sdb1

然后编辑 /etc/fstab 文件:

sudo nano /etc/fstab

在文件末尾添加如下一行(使用刚才获取的 UUID):

UUID=xxxxxx /home/ftpuser ext4 defaults,acl 0 0

保存并退出编辑器(在 nano 中按 Ctrl + X,再按 Y 确认保存,最后按 Enter 键退出)。

9. 验证 /etc/fstab 文件语法

sudo mount -a

如果没有报错,说明 /etc/fstab 文件语法正确,下次系统重启时 /dev/sdb1 会自动挂载到 /home/ftpuser 目录并启用 ACL。

10. 恢复数据(如果之前备份了)

sudo cp -r /home/ftpuser_backup/* /home/ftpuser

完成以上步骤后,ftpuser 用户上传到 /home/ftpuser 目录下的文件,baiyangling 用户将具备所有权限。

将本地的 test.txt 文件上传到 FTP 服务器根目录下的 sw_ftp 目录的命令及操作步骤。

使用 ftp 工具

# 1. 连接到 FTP 服务器,将 server_address 替换为实际的服务器地址
ftp server_address

# 输入用户名和密码登录

# 2. 切换到本地文件所在目录,假设 test.txt 在当前用户的家目录下
lcd ~

# 3. 切换到服务器上的 sw_ftp 目录
cd sw_ftp

# 4. 上传本地的 test.txt 文件到服务器的 sw_ftp 目录
put test.txt

# 5. 退出 FTP 会话
quit

普通删除文件

如果你确定要删除当前目录下的 test.txt 文件,使用 rm 命令是最常见的做法。在终端中输入以下命令并回车:

rm test.txt

执行该命令后,test.txt 文件会被直接删除,且不会放入回收站,而是被永久移除。

强制删除文件

一般情况下不建议使用,但如果你遇到文件具有特殊权限,普通删除可能提示权限不足或遇到只读文件时,可以使用 -f 选项进行强制删除:

rm -f test.txt

使用 -f 选项时,系统不会提示确认信息,会直接删除文件。不过使用该选项需要谨慎,因为可能会在你未充分确认的情况下删除重要文件。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值