새로운 vsftpd 사용자를 생성하고 홈 / 로그인 디렉토리에 고정 (지정)


31

vsftp가 설치된 CentOS Linux 서버의 다양한 디렉토리에 임시 및 제한된 액세스 권한을 주기적으로 제공해야합니다.

를 사용하여 사용자를 useradd [user_name]만들고을 사용하여 비밀번호를 제공했습니다 passwd [password].

디렉토리를 만든 /var/ftp다음 액세스를 제한하려는 디렉토리에 바인딩합니다.

이 사용자가 FTP에 로그인 할 때이 디렉토리에만 액세스 할 수 있도록하려면 어떻게해야합니까?


죄송하지만 vsftpd.conf 확인을 고려한 적이 있습니까?
jirib

예. 나는 가지고있다. 특정 사용자에게 특정 디렉토리에 로그인하도록 지시하는 방법을 알려주지 않습니다 ...?
zigojacko

1
확실한? chroot_list_enable 옵션 ... 아니면 $ HOME과 다른 디렉토리를 무시 하시겠습니까?
jirib

1
특정 사용자에 대한 특정 홈 디렉토리를 선언하는 방법을 알고 싶습니다. 활성화 chroot_list_enable하고 만들었습니다 /etc/vsftpd/chroot_list. 나는 단지 다음에 무엇을 해야할지 몰랐다.
zigojacko

그런 다음 usermod는 사용자의 homedir을 변경합니다.
jirib

답변:


44

단계별 연습을 거친 다른 사람들을 위해 내 질문을 해결 한 완전한 대답 ...

이것을 안내서로vsftpd 사용하여 설치하십시오 .

  • 로 사용자를 만듭니다 useradd [user_name].
  • 로 사용자 비밀번호를 만듭니다 passwd [user_name]. (암호를 지정하라는 메시지가 표시됩니다).
  • 에 FTP 디렉토리 /var/ftp를 작성한 다음이 사용자에 대해 지정하려는 'home'디렉토리에 바인드하십시오 mount --bind /var/www/vhosts/domain.com/ /var/ftp/custom_name/.
  • 로 사용자의 홈 디렉토리 변경 usermod -d /var/ftp/custom_name/ user_name

    에서 /etc/vsftpd/vsftpd.conf, 모든 다음의 모든 보장이 설정됩니다 : -

    • chroot_local_user = YES
    • chroot_list_enable = YES
    • chroot_list_file = / etc / vsftpd.chroot_list

vsftpd.chroot_list서버의 모든 위치에 대한 전체 액세스 권한을 가지려면 파일의 사용자 만 나열 하십시오. 이 파일에 이들을 나열하지 않으면 모든 vsftpd사용자를 지정된 홈 디렉토리로 제한 한다는 의미입니다.

다시 말해 (참고로) :-

  1. 기본적으로 파일의 사용자를 제외한 모든 사용자가 chroot됩니다.
    • chroot_local_user = YES
    • chroot_list_enable = YES
  2. 기본적으로 파일의 사용자 만 chroot됩니다.
    • chroot_local_user = NO
    • chroot_list_enable = YES

해당 사용자의 홈 디렉토리를 직접 설정하지 않는 이유는 무엇 /var/www/vhosts/domain.com/입니까? 잠재적 위험과 같은 문제가 있습니까?
leemes

2
방금 vsftp가 보안상의 이유로 ftp 사용자에게 chroot 최상위 레벨에 대한 쓰기 권한을 부여하는 것을 금지하는 것으로 나타났습니다 (그러나 100 % 확실하지는 않습니다). 따라서 형제 폴더 를 볼 수는 없지만 ftp 사용자에게 특정 폴더에 대한 쓰기 액세스 권한을 부여하기 위해이 "간접"이 필요한 이유 일 수 있습니다. 언급 된 문제를 피하십시오). ( ubuntuforums.org/… 참조 )
leemes

2
@zigojacko 사용자에게 할당 된 홈 디렉토리 만 보입니까? 나에게 이것은 기본적 으로 사용자를 할당 된 디렉토리로 설정하지만 여전히 읽기 폴더 만 있지만 다른 폴더를 볼 수 있으며 루트까지 스누핑 할 수 있습니다.
GraehamF

1
이 답변은 unix.stackexchange.com/questions/208960/… 과 함께 전체 답변이었습니다. 결국 그룹에서 사용자를 작성하고 그룹 액세스를 원하는 디렉토리로 제한했습니다.
GraehamF

10

나를 위해 위의 후에도 작동하지 않았습니다. local_root가 이미 디렉토리로 설정되어 있으며 내가 무엇을 하든지 사용자의 디렉토리가 감옥에 없습니다. 마지막으로 변경된 후에 만 ​​작동합니다.

chroot_local_user = YES

그리고 다음 절차

  1. vi /etc/vsftpd.conf
  2. 'user_config_dir = / etc / vsftpd_user_conf'줄을 추가하십시오 (따옴표 제외).
  3. mkdir / etc / vsftpd_user_conf;
  4. cd / etc / vsftpd_user_conf
  5. vi user_name;
  6. 'local_root = / srv / ftp / user_name'줄을 입력하십시오

다른 사람이 같은 문제를 겪고 있다면 내 2 센트.


이 절차에 따라 gnaanaa의 추가 단계를 포함하여 vsftpd의 루트 디렉토리를 변경했습니다. 불행히도 아직 작동하지 않습니다. Filezilla에서 530 로그인이 잘못되었다고보고합니다. 사용자와 비밀번호는 위의 절차 (user_name)에 따릅니다. 테스트 사용자 ftp2를 작성하고 비밀번호를 설정했습니다. Filezilla 일반 로그온은 해당 사용자 이름과 비밀번호를 사용합니다. 또한 루트 디렉토리를 읽기 전용으로 설정 하고이 게시물에 따라 쓰기 권한이있는 하위 디렉토리를 만들었습니다.
tim11g

@gnaanaa가 우분투라면 우분투 16.04를 사용하고 있습니다. 또한 / var에 ftp 디렉토리가없는 것이 이상하다고 생각했습니다. 그래서 / var / ftp를 만든 다음 / var / ftp / user_name을 만들어야했습니다. code<br/> 응답 : 220 (vsFTPd 3.0.3) <br/> 명령 : USER ftp2 <br/> 응답 : 331 암호를 지정하십시오. <br/> 명령 : PASS ***** <br/> 응답 . : (530) 로그인 잘못된 <BR/> 오류 : 심각한 오류가 : 서버 <BR/>에 연결할 수 없습니다code
tim11g

먼저 서버에 로그인 할 수없는 이유를 살펴보십시오. 로그인이 성공한 후에 만 ​​재이 링으로 문제를 디버깅 할 수 있습니다. 건배.
gnaanaa 2016 년

vsftp는 컴퓨터의 계정과 다른 사용자 / 암호를 사용합니까? smb 암호는 smbpasswd -a와 별도로 설정해야한다는 것을 알았습니다. vsftpd도 같은 방식으로 작동합니까?
tim11g

아니요, 시스템 사용자 계정입니다. 이 답변을 확인하십시오 : askubuntu.com/questions/413677/vsftpd-530-login-incorrect
gnaanaa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.