RHEL 中的 FTP 错误“553 无法创建文件”

RHEL 中的 FTP 错误“553 无法创建文件”

我们需要将文件从本地计算机传输到远程计算机。远程机器设置如下:

[540607@hsldevoradb ~]$ su - Saphr002
Password:
[Saphr002@hsldevoradb ~]$ pwd
/odi/CSV/in
[Saphr002@hsldevoradb ~]$ ls -ld /odi/CSV/in
drwxrwxr-x. 2 oraedw oedw 4096 Oct 28 18:33 /odi/CSV/in
[Saphr002@hsldevoradb ~]$ groups
Saphr002 oedw
[Saphr002@hsldevoradb ~]$ touch a
[Saphr002@hsldevoradb ~]$ ls
a

/odi/CSV/in是用户 Saphr002 的主目录。用户 Saphr002 对该目录具有完全权限/odi/CSV/in,我们可以在该目录中远程创建文件。但每当我们尝试从 传输文件时ftp,它都会抛出“553 无法创建文件”错误。

C:\Users\osprbs01>ftp 192.168.5.52
Connected to 192.168.5.52.
220 (vsFTPd 2.2.2)
User (192.168.5.52:(none)): Saphr002
331 Please specify the password.
Password:
230 Login successful.

ftp> put test.csv.odt
200 PORT command successful. Consider using PASV.
553 Could not create file.
ftp>

请帮助通过 传输文件ftp

答案1

为了让 SELinux 允许 ftpd 访问这些文件,它们必须具有适当的上下文。

以下示例来自 RHEL。您的路径等可能会有所不同:

要查找您可以使用的适当内容ls -Zd /var/ftp/pub(或为 ftp 配置的适当目录)。您应该在文件名之前看到 SELinux 上下文。
例子:drwxr-xr-x. root root system_u:object_r:public_content_t:s0 /var/ftp/pub

public_content_t 是 ftp 内容的适当类型。

然后,您可以通过 --reference 或指定类型本身来使用 chcon 命令。
示例:
chcon -Rt public_content_t /odi/CSV/in或者您可以使用
chcon --reference /var/ftp/pub /odi/CSV/in

您使用哪一种取决于您的 SELinux 策略。完成后,重试 FTP 过程。

相关内容