로컬 컴퓨터에서 원격 컴퓨터로 파일을 전송해야 합니다. 원격 컴퓨터 설정은 다음과 같습니다.
[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 프로세스를 다시 시도하십시오.