/etc/selinux/config를 엽니다.
selinux=enforcing 또는 permissive를 비활성화로 변경합니다.
서버를 다시 시작하는 것을 잊지 마세요!
물론 다음 질문도 결정해야 합니다.
1. 사용자는 vsftpd에 의해 로그인이 제한됩니까? 예를 들어 사용자 이름은 /etc/ftpusers에 있으며 로그인이 차단됩니다.
2. vsftpd.conf에 pam 인증 옵션이 켜져 있는지(직접 컴파일하고 설치할 때 종종 실수를 합니다.) (vsftpd.conf에 pam_service_name=ftp 또는 vsftpd가 있는지 확인하세요. 어느 것에 따라 다릅니다.
PAM 모듈의 /etc/pam.d 서비스 파일 아래에는 누가 있습니까? 내 파일은 ftp이고 해당 구성은 다음과 같습니다.
#%PAM-1.0
인증 필요 /lib/security/pam_listfile.so 항목=사용자 sense=거부 파일=/etc/ftpusers onerr=성공
인증 필요 /lib/security/pam_unix.so 섀도우 nullok
인증 필요 /lib/security/pam_shells.so
계정 필요 /lib/security/pam_unix.so
세션 필요 /lib/security/pam_unix.so
/etc/ftpusers의 일부 사용자가 거부되는 경우
3. 해당 폴더의 권한이 올바른가요?
"일부 로컬 사용자는 vsftpd에 로그인할 수 없지만 일부는 로그인할 수 있습니다" 문제에 대해
시스템의 기존 로컬 계정 중 어느 것도 로그인할 수 없습니다. /etc/vsftpd/vsftpd.conf 파일의 구성은 다음과 같습니다:
local_enable=YES
write_enable=예
chroot_local_user=YES
pam_service_name=vsftpd
/etc/pam.d/vsftpd가 존재하며 정상입니다.
로그인 시 나타나는 오류 메시지는 다음과 같습니다.
500 OOPS: 디렉토리를 변경할 수 없습니다:/home/xxxx
로그인에 실패했습니다.
421 서비스를 사용할 수 없습니다. 원격 서버가 연결을 닫았습니다.
그들의 홈 디렉토리는 모두 /home/xxxx입니다. /home 및 /home/xxxx의 권한은 모두 755입니다.
위 계정 중 어느 것도 ftp를 통해 로그인할 수 없습니다. 이들은 일반적으로 사용되며 쉘을 사용하여 로그인할 수 있습니다.
새로운 usr1 계정을 만들었습니다
# useradd -G 테스트 -d /tmp/usr1 usr1
FTP를 통해 로그인할 수 있으며 그의 집은 / 파티션에 있는 /tmp/usr1입니다. /home을 /dev/hda9에 마운트했습니다.
#산
/dev/hdb1 on/ext3 유형(rw)
/dev/hda9 on /home 유형 ext2(rw)
그래서 추측컨데, "홈 디렉터리가 /home 파티션에 있는 계정"이 로그인할 수 없는 것은 /home 파티션 때문인가요?
위의 가정을 확인하기 위해 다른 계정을 만들어 보았습니다.
useradd -G 테스트 -d /home/usr3 usr3
/home 및 /home/usr3의 권한은 모두 755입니다.
usr3 ftp 로그인에 실패했습니다.
500 OOPS: 디렉토리를 변경할 수 없습니다:/home/usr3
로그인에 실패했습니다.
421 서비스를 사용할 수 없습니다. 원격 서버가 연결을 닫았습니다.
현시점에서 "/home 파티션에 홈 디렉토리가 있는 계정"이 로그인할 수 없는 것은 /home 파티션 때문임이 확실하다고 생각됩니다.
참고 기사:
Fedora Core 4로의 두 번째 업그레이드를 마쳤습니다. 물론 빌드로 인해 모든 것이 해결되지는 않았습니다. 하지만 한 가지 확실한 것은 제가 이전에 알고 있던 RedHat에 많은 일이 일어났다는 것입니다.
모든 변경 사항 중에서 가장 좋은 추가 사항은 새로운 SELinux 확장입니다. SELinux의 이유와 이론에 대한 자세한 내용은 The Inevitability of Failure: The Flawed Assumption of Security in Modern Computing Environments를 참조하세요.
SELinux를 더 많이 사용할수록 SELinux에 대해 더 많이 알아야 하고 SELinux가 모든 작업을 정확히 수행하는 방법을 더 많이 깨닫게 됩니다. SELinux를 배우기 시작하면서 SELinux가 확실히 사용자, 디렉터리 및 액세스와 관련된 사항을 변경한다는 것을 확신합니다. 열심히 하고 있어요 :)
지금까지 Red Hat의 SELinux에서 가장 큰 차이점은 ftp가 처리되는 방식입니다. vsftpd는 여전히 훌륭한 서버이지만 xinet.d를 통해 호출되기보다는 데몬으로 실행되도록 설계된 것 같습니다. vsftpd용 xinet.d 파일의 작업 복사본을 가져오면 xinet.d 래퍼를 통해 호출할 수 있습니다. 저는 이런 방식으로 첫 번째 서버 업그레이드를 수행했습니다. 현재 데몬으로 시도하고 있는 것은 확실히 일부를 놓칠 것 같습니다. xinet.d 래퍼가 제공하는 기능 중 아직 반환될 수 없습니다.
내가 본 모든 문제 중 가장 주목할만한 것은 일반 /home/xxx vsftpd 외부에서 chroot 디렉토리를 활성화하려는 경우입니다.
500 OOPS: 디렉토리를 변경할 수 없습니다: /mnt/xxxxx
/home에 디렉터리가 있는 계정으로 로그인하면 ftp를 사용할 수 있었지만 일단 /home 외부에 홈 드라이브를 갖도록 사용자 계정을 설정하면(이 경우 마운트된 보조 디스크에 있음) vsftpd barfs 위의 내용 .
NSA에서 ftp 데몬의 SELinux 보호를 비활성화할 수 있다는 정보를 찾았습니다.
setsebool -P ftpd_disable_trans 1
하지만 지금은 확실히 효과가 있는 것 같습니다.
궁극적으로 문제는 정책에 있다고 생각합니다. 그러나 SELinux 정책은 저에게 새로운 것이기 때문에 모든 것이 정리되기까지는 시간이 걸릴 것입니다. Fedora Core 4의 새로운 SELinux 확장에 대해 계속해서 제 생각을 업데이트하겠습니다. 그리고 구성 수업.
해결책:
# setsebool ftpd_disable_trans 1
# 서비스 vsftpd 다시 시작
FC4를 사용하고 있으며 이전 게시물의 방법을 시도했는데 즉시 해결되었습니다. 따라서 원인은 SELinux에 있다고 판단할 수 있다.