vsftpd 사용자 추가 및 권한 분배

6017 단어 서버
최근에 요구된 것은 서로 다른 ftp 사용자가 서로 다른 디렉터리를 조작할 수 있기 때문에 파일이 함부로 움직이는 것을 방지할 수 있다는 것이다.
centos6.5 서버에 vsftpd가 설치되어 있습니다.
vsftpd 설치
1. vsftpd 구성 요소 설치
yum -y install vsftpd

설치가 완료되면/etc/vsftpd/vsftpd가 있습니다.conf 파일, vsftp 설정 파일입니다.
2. 방화벽 21포트 켜기
ftp의 기본 포트는 21이고centos는 기본적으로 열리지 않기 때문에 IPtables 파일을 수정합니다
 vim /etc/sysconfig/iptables

줄 위에는 22-j ACCEPT 아래에 다른 줄의 입력이 있는데 그 줄과 차이가 많지 않다. 단지 22를 21로 바꾸고: wq 저장, iptables 다시 시작하기
service iptables restart

3. selinux 수정
외부 네트워크는 접근할 수 있지만 디렉터리를 되돌릴 수 없음 (ftp의 주동 모드를 사용하지만 수동 모드는 접근할 수 없음) 을 발견하고 업로드할 수 없습니다.selinux가 이상한 짓을 했기 때문입니다.selinux를 수정하려면 다음과 같이 하십시오.
getsebool -a | grep ftp

위 명령에 selinux is disabled가 나타나면 selinux를 SELINUX=enforcing으로 변경하고 아래 명령을 사용하십시오
vim /etc/selinux/config

이어서 selinux를 수정하고 외부 네트워크 접근을 켜서 이 두 옵션을 모두 on으로 변경합니다
setsebool -P allow_ftpd_full_access on
setsebool -P ftp_home_dir on

2. 작업 시작
1. 실험 목표
같은 디렉터리에서admin, upload,download 세 가상 사용자의 다른 권한을 제어합니다.특정 권한 제어 목록은 다음과 같습니다.
사용자 이름
권한 설명
admin
관리자는 파일 및 폴더 이름을 업로드, 다운로드, 새 폴더, 삭제 및 변경할 수 있습니다.
upload
다운로드할 수 없고 업로드, 새 폴더를 만들 수 있지만 파일과 폴더를 삭제할 수 없고 기존 파일과 폴더의 이름을 바꿀 수 없습니다.
download
다운로드만 가능하며 다른 조작은 할 수 없습니다.
상기 세 명의 가상 사용자는 시스템에 로그인할 수 없고 ftp를 사용할 때 지정한 디렉터리에 잠겨 시스템의 다른 디렉터리에 들어갈 수 없습니다.
2. vsftpd 설정
#             ,         
[root@localhost vsftpd] useradd -s /sbin/nologin -d /home/CodeTiger -M CodeTiger
[root@localhost vsftpd] passwd CodeTiger
#        ,   upload、download admin
[root@localhost vsftpd] touch /etc/vsftpd/vu_list.txt
[root@localhost vsftpd] echo upload >>/etc/vsftpd/vu_list.txt
[root@localhost vsftpd] echo 111111 >>/etc/vsftpd/vu_list.txt
[root@localhost vsftpd] echo download >>/etc/vsftpd/vu_list.txt
[root@localhost vsftpd] echo 111111 >>/etc/vsftpd/vu_list.txt
[root@localhost vsftpd] echo admin >>/etc/vsftpd/vu_list.txt
[root@localhost vsftpd] echo 111111 >>/etc/vsftpd/vu_list.txt
#      
[root@localhost vsftpd] cat /etc/vsftpd/vu_list.txt
upload
111111
download
111111
admin
111111
#                         ,           db  
[root@localhost vsftpd] db_load -T -t hash -f /etc/vsftpd/vu_list.txt /etc/vsftpd/vu_list.db
#  db    db4  ,          
[root@localhost vsftpd] yum -y install db4 db4-devel db4-utils
#  db     ,         
[root@localhost vsftpd] chmod 600 /etc/vsftpd/vu_list.db

3. PAM 파일 구성
서버는 시스템 PAM 모듈을 호출하여 클라이언트를 인증하기 때문에 지정한 프로필을 수정하여 인증 방식을 조정해야 합니다.PAM 모듈의 구성 파일 경로는/etc/pam입니다.d/, 이 디렉터리에는 사용자 인증과 관련된 많은 프로필만 저장됩니다.
[root@localhost pam.d] ls
chfn                 login             remote             smtp          sudo-i
chsh                 newrole           run_init           smtp.postfix  su-l
config-util          other             runuser            sshd          system-auth
crond                passwd            runuser-l          ssh-keycat    system-auth-ac
fingerprint-auth     password-auth     smartcard-auth     su            vsftpd
fingerprint-auth-ac  password-auth-ac  smartcard-auth-ac  sudo

vsftpd 파일 편집
32비트 시스템 추가:
auth          required     /lib/security/pam_userdb.so     db=/etc/vsftpd/vu_list
account    required     /lib/security/pam_userdb.so     db=/etc/vsftpd/vu_list

64비트 시스템 추가:
auth       required     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vu_list
account    required     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vu_list

원래의 내용을 주석하고 위의 두 줄로 대체합니다. 그렇지 않으면 로컬에서 xftp로 연결할 수 없습니다. 수정이 끝난 후 vsftpd 파일의 내용은 다음과 같습니다.
[root@localhost pam.d] cat vsftpd 
#%PAM-1.0
#session    optional     pam_keyinit.so    force revoke
#auth       required	pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required	pam_shells.so
#auth       include	password-auth
#account    include	password-auth
#session    required     pam_loginuid.so
#session    include	password-auth
auth       required     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vu_list
account    required     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vu_list

가상 사용자 프로파일 만들기
#  conf   
[root@localhost pam.d] cd /etc/vsftpd
[root@localhost vsftpd] mkdir conf
[root@localhost vsftpd] cd conf
#  admin       
[root@localhost conf] cat >>admin<< EOF
> anon_world_readable_only=NO
> write_enable=YES
> anon_mkdir_write_enable=YES
> anon_other_write_enable=YES
> anon_upload_enable=YES
> local_root=/home/CodeTiger
> EOF
#  upload       
[root@localhost conf] cat >>upload<< EOF
> write_enable=NO
> anon_upload_enable=YES
> anon_mkdir_write_enable=YES
> anon_world_readable_only=NO
> download_enable=NO
> local_root=/home/CodeTiger
> EOF
#  download       
[root@localhost conf] cat >>download<< EOF
> anon_world_readable_only=NO
> local_root=/home/CodeTiger
> EOF

vsftpd 수정.conf 파일
우선 기본 프로필을 백업한 다음에 프로필 안의 내용을 모두 삭제하고 아래의 내용으로 바꾸다
# Example config file /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_enable=YES
chroot_local_user=YES
listen=YES

pam_service_name=vsftpd

guest_enable=YES
guest_username=CodeTiger
user_config_dir=/etc/vsftpd/conf

여기까지 하면 큰 공을 이룬다.
테스트
먼저 디렉터리 홈/CodeTiger를 만들고 로컬 xftp 연결을 사용하지만 수동 모드를 닫아야 합니다
테스트, 연결 성공, 각 사용자의 권한 정상
현재 테스트된 것은 여러 사용자가 같은 디렉터리를 조작하는 것입니다. 서로 다른 사용자가 다른 디렉터리를 조작하려면 가상 사용자 프로필의local 을 바꾸기만 하면 됩니다.root 속성만 있으면 됩니다.
4. 닥친 문제
1.xftp 프롬프트 사용자 인증 실패
pam을 수정해서 그래요.d/vsftpd 때 다른 내용을 주석하지 않아서 일어난 일입니다.
2.xftp는 연결할 수 있지만 디렉터리가 표시되지 않습니다
패시브 모드를 끄면 됩니다.

좋은 웹페이지 즐겨찾기