Centos / Linux 설치에서만 특정 / dir / 액세스 권한을 가진 FTP 사용자를 작성하는 방법


44

VPS-CentOS Linux 설치 중입니다. 서버에 vsFTPd가 있습니다. 현재 루트 사용자를 통해 서버에 SFTP 액세스 권한이 있지만 서버의 특정 디렉토리에만 FTP 액세스 권한을 가진 새 사용자를 만들려고합니다. 다음을 수행했습니다.

1. mkdir /var/www/mydomain.com
2. mkdir /var/www/mydomain.com/html
3. useradd <-username>
4. passwd <-username>
5. chown –R <-username> /var/www/mydomain.com
5. groupadd <-groupname>
6. gpasswd -a <-username> <-groupname>
7. chgrp -R <-groupname> /var/www/mydomain.com
8. chmod -R g+rw /var/www/mydomain.com

내가 고생하고있는 것은 사용자에게만 액세스 할 수 있도록 만드는 것입니다. 사용자가 /var/www/mydomain.com 올바른 폴더에 올바르게 로그인하는 것을 관찰했지만 사용자는 다른 디렉토리를 "다시 검색"할 수 있습니다. 사용자가 특정 폴더를 사용하고 "찾아보기"를 원하지 않기를 바랍니다 .

어떤 아이디어?

chrooting에 대한 다른 기사를 찾았지만 단순히 위에 포함 된 단계에서 사용하도록 파악하지 못했습니다.


digitalocean.com/community/tutorials/… 다음을 따라 문제를 해결할 수 있습니다.
Jack

우분투 18에있는 사람들을 위해 여기에 버전 특정 digitalocean.com/community/tutorials/…
Dung

답변:


39

아주 간단합니다.

vsftpd.conf 파일에 다음 옵션을 추가해야합니다

chroot_local_user=YES

구성 파일 내부의 설명서는 설명이 필요 없습니다.

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().

즉, 사용자는 사용자의 HOME으로 구성한 폴더에 대한 액세스 권한 만 갖게됩니다. 아래에 사용자 암호 항목의 예가 있습니다.

upload_ftp:x:1001:1001::/var/www/sites/:/bin/bash

다음 명령으로 사용자의 홈 디렉토리를 설정하십시오.

usermod -d /var/www/my.domain.example/ exampleuser

참고 : 이 예에서이 사용자는 Linux 내에서 예약 된 일부 작업에 대한 유효한 사용자이기도합니다. 필요하지 않은 경우 사용자의 셸을 /sbin/nologin대신로 변경하십시오 bash.


안녕 nwildner! 시간을내어 답변 해 주셔서 감사합니다. 따라서 vsftpd.conf 파일에 다음 줄 "chroot_local_user = YES"를 추가했습니다. 이해 한대로 사용자에게 표시 한 것과 비슷한 줄을 추가해야합니까? 당신이 제공 한 예를 가지고 무엇을 써야할지 확실하지 않다는 것을 인정해야합니다. "1001"등은 무엇입니까? 내 사용자가 "im_a_linux_noob"이라고하고 해당 사용자의 디렉토리가 "/var/www/mydomain.com"이라고 가정합니다. 어떻게 보입니까?
user1231561

그리고 내 게시물에서 ive가 수행 한 추가 단계 없이이 작업을 수행 할 수 있습니까? 그래서 1-8을하고 당신이 묘사 한 것을 추가하면 트릭을해야합니까?
user1231561

안녕하세요. 위의 예는 /etc/passwd파일 의 한 줄 (물론 수정 됨)입니다. upload_ftp라는 사용자를 나타냅니다. 1001 : 1001은 그의 사용자 ID 및 그룹 ID이며 / var / www / sites는 사용자의 홈 디렉토리입니다. vsftpd가 읽는 매개 변수) 및 / bin / bash (쉘). 아마도 귀하의 경우에 누락 된 것은 사용자의 홈 디렉토리이며 다음 명령으로 해결할 수 있습니다 usermod -d /var/www/mydomain.com <username>. 건배 :)

3
응 고마워 하나의 문제. SFTP로 로그인하면 어떤 아이디어라도 다시 찾아 볼 수 있습니까?
user1231561

1
sftp가 ftp 서버가 아닌 ssh 서버에 의해 처리되고 있기 때문입니다. "원유"방식으로 : SFTP = SSH + FTP; FTPS = FTP + SSL. 여기에 sftp에 대한 스레드가 있으며, 주제 중복에 대해 인용하겠습니다. ;) unix.stackexchange.com/a/64541/34720

6

포함하도록 구성을 변경 한 후 chroot_local_user=YES

/usr/sbin/nologin비밀번호가 유출되면 약간의 위험을 완화 할 수 있도록 사용자의 쉘을 변경할 수 있습니다 (홈 디렉토리도 설정). 쉘 /etc/shells도 함께 나열해야합니다 . 그렇지 않으면 인증이 실패합니다.

usermod -d /var/www/my.domain.example -s / usr / sbin / nologin exampleuser

-d, --home HOME_DIR 사용자의 새로운 로그인 디렉토리. -m 옵션이 제공되면 현재 홈 디렉토리의 내용이 새 홈 디렉토리로 이동되며, 아직 존재하지 않는 경우 작성됩니다.

-s, --shell SHELL 사용자의 새 로그인 쉘의 이름입니다. 이 필드를 공란으로 설정하면 시스템이 기본 로그인 쉘을 선택합니다.

https://security.appspot.com/vsftpd/FAQ.txt


4

다음은 사용자를 설정하고 사용자가 FTP를 통해서만 액세스하도록 허용하고 (예 : SSH 없음) proftpd 의 특정 (사용자 홈) 디렉토리에 대한 액세스를 제한하는 단계입니다 .

  1. 새로운 사용자 추가 : adduser newusername

  2. 암호를 설정하세요: passwd newusername

  3. 사용자 홈 디렉토리를 기본값에서 새 폴더로 수정하십시오.

    usermod -d /target/directory username

  4. shells파일 편집 : 끝에 vi /etc/shells추가/dev/null

  5. 항목을 다음과 같이 보이도록 파일의 newusername항목 수정 passwd: 앞에 vi /etc/passwd추가 하십시오././newusername

    newusername:x:502:502::/home/ftp/./newusernamehomedirectory/:/dev/null

    4 단계와 5 단계에 대한 세부 사항은 다음과 같습니다.

  6. /etc/proftpd/proftpd.conf파일 편집 및 줄 주석 해제DefaultRoot ~


-4

루트 계정으로 루트 폴더 권한을 711 로 설정하십시오.


-4

이 명령을 실행하십시오 :

useradd -d ftp_user:chown 711 /etc/init.d/

2
최소한 유용한 설명이나 문서가 포함되도록 게시물을 확장하는 것을 고려해야합니다.
HalosGhost

이것은 끔찍한 대답입니다. 본질적으로 ftp 사용자에게 /etc/init.d/ 디렉토리에 대한 완전한 액세스 권한을 부여합니다. (711)는 설명 - permissions-calculator.org/decode/0711
티쉬
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.