ubuntu22.04安装ftp教程,测试上传文件
ubuntu22.04安装ftp教程,测试上传文件
学习目标:
ubuntu22.04安装ftp教程,测试上传文件
学习内容:
Ubuntu 系统默认是没有自带 FTP 服务的。不过,Ubuntu 提供了多种 FTP 服务器软件供你选择并安装使用,下面为你介绍一些常见的 FTP 服务器及其安装方式:
vsftpd
vsftpd(Very Secure FTP Daemon)是一款在 Ubuntu 系统中广泛使用的 FTP 服务器软件,它以安全、稳定和高性能著称。
安装步骤
- 打开终端,使用以下命令更新软件包列表:
sudo apt update
- 安装
vsftpd:
sudo apt install vsftpd
- 安装完成后,启动
vsftpd服务:
sudo systemctl start vsftpd
- 可以设置
vsftpd服务在系统启动时自动启动:
sudo systemctl enable vsftpd
访问 vsftpd 服务
在成功启动 vsftpd 服务后,你可以使用 FTP 客户端软件来访问该服务,具体步骤如下:
1. 确定服务器的 IP 地址
在 Ubuntu 系统中,你可以使用 ip addr 或 ifconfig(如果已安装)命令来查看服务器的 IP 地址。例如:
ip addr
从输出结果中找到对应的网络接口(如 eth0 或 ens33),查看其 inet 后面的 IP 地址。
2. 选择合适的 FTP 客户端
- Linux 系统:可以使用
ftp或lftp等命令行工具。例如使用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 选项时,系统不会提示确认信息,会直接删除文件。不过使用该选项需要谨慎,因为可能会在你未充分确认的情况下删除重要文件。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)