文章目录
ftp文件共享服务
1.搭建只允许匿名用户访问文件共享服务器
1.1编辑配置文件/etc/vsftpd/vsftpd.conf
local_enable=NO
1.2测试
ftp 192.168.134.131
2.让本地用户登录时访问指定目录, 并不能跳出此目录
2.1编辑配置文件/etc/vsftpd/vsftpd.conf
写入(将注释去掉)
chroot_local_user=YES
并指定访问目录
local_root=data/
2.2测试
ftp 192.168.134.131
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection
遇到问题,原因是新版本的vsftpd增强了安全检查, 如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限 。
将主目录的写权限去除即可成功登陆
chmod a-x data/
无法切换目录
3.让匿名对某目录有权限上传文件
3.1创建目录并修改权限
mkdir /var/ftp/upload/
chmod o+w /var/ftp/upload/
3.2编辑配置文件
vi /etc/vsftpd/vsftpd.conf
anon_mkdir_write_enable=YES
anon_upload_enable=YES
3.3关闭selinux
setenforce 0
3.4测试
在128主机上用ftp连接131
连接之前清空下防火墙
ftp 192.168.134.131
[root@ansible_center ~] ftp 192.168.134.131
Connected to 192.168.134.131 (192.168.134.131).
220 (vsFTPd 3.0.2)
Name (192.168.134.131:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> ls
227 Entering Passive Mode (192,168,134,131,90,78).
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 6 Apr 01 04:55 pub
drwxr-xrwx 2 0 0 6 May 18 12:50 upload
226 Directory send OK.
ftp> cd upload
250 Directory successfully changed.
ftp> put ftptest
local: ftptest remote: ftptest
227 Entering Passive Mode (192,168,134,131,227,58).
150 Ok to send data.
226 Transfer complete.
6 bytes sent in 8.8e-05 secs (68.18 Kbytes/sec)
ftp> exit
221 Goodbye.
在131主机上查看
[root@localhost ~]# ls /var/ftp/upload/
ftptest
4.让某普通用户对某个目录具有上传权限
在3的基础上用普通用户身份登录
[root@ansible_center ~] ftp 192.168.134.131
Connected to 192.168.134.131 (192.168.134.131).
220 (vsFTPd 3.0.2)
Name (192.168.134.131:root): alice
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/alice"
ftp> cd /var/ftp/upload
250 Directory successfully changed.
ftp> put ftptest
local: ftptest remote: ftptest
227 Entering Passive Mode (192,168,134,131,206,72).
150 Ok to send data.
226 Transfer complete.
6 bytes sent in 5.9e-05 secs (101.69 Kbytes/sec)
ftp> exit
221 Goodbye.
131查看
[root@localhost ~]# ls /var/ftp/upload/
ftptest
5.虚拟用户
相关文件
- /var/tmp/vuser_ftp /var/tmp/vuser_ftp/cyy01 这是用户的登录目录,每个用户对应的子登录目录不同
- /etc/vsftpd/vuser 用户名字与密码信息—>/etc/vsftpd/vuser.db 生成的数据库文件
- /etc/vsftpd/vconf.d /etc/vsftpd/vconf.d/cyy-1 用户子配置文件
- /etc/pam.d/vftp pam登录验证文件
5.1修改配置文件
vi /etc/vsftpd/vsftpd.conf
guest_enable=YES #允许虚拟用户
guest_username=zhangsan #虚拟用户名 所有系统账号登录后都将映射为此虚拟账号
virtual_use_local_privs=NO# 禁止虚拟用户和本地用户权限一致
user_config_dir=/etc/vsftpd/vconf.d/#在这文件夹下,配置文件和登陆名相同即可。与后面配置文件对应
pam_service_name=vftp #pam配置文件
5.2创建虚拟账号及对应分登录目录
useradd -s /sbin/nologin -d /var/tmp/vuser_ftp zhangsan#增加用户。-s指定shell.-d指定登录起始目录
chmod 500 /var/tmp/vuser_ftp #设置主目录
mkdir /var/tmp/vuser_ftp/cyy01 #设置分目录,供不同ftp用户使用。
mkdir /var/tmp/vuser_ftp/cyy02
chmod 700 /var/tmp/vuser_ftp/ *
chown zhangsan.zhangsan /var/tmp/vuser_ftp -R #-R 递归处理,将指定目录下的所有文件及子目录一并处理
5.3建立用户数据库文件
vi /etc/vsftpd/vuser
cyy-1 #奇数行是ftp用户
123 #偶数行是密码
cyy-2
456
生成数据库文件
db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/vuser.db
chmod 600 /etc/vsftpd/vuser.db
db_load编译文件
-T允许应用程序能够将文本文件转译载入进数据库。
-t hash使用hash码加密
-f 指定包含用户名和密码文本文件。此文件格式要示:奇数行用户名、偶数行密码
5.4修改pam配置文件
vi /etc/pam.d/vftp
#在开头增加
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
5.5建立子配置文件(即为每个虚拟用户配置文件)
mkdir /etc/vsftpd/vconf.d
vi /etc/vsftpd/vconf.d/cyy-1
local_root=/var/tmp/vuser_ftp/cyy01#指定主目录(该用的家目录)
anon_upload_enable=YES#开放上传权限
anon_mkdir_write_enable=YES#开放创建目录权限
anon_other_write_enable=YES#开放删除和重命名目录的权限
vi /etc/vsftpd/vconf.d/cyy-2
local_root=/var/tmp/vuser_ftp/cyy02#指定主目录(该用户的家目录)
anon_upload_enable=YES#开放上传权限
anon_mkdir_write_enable=YES#开放创建目录权限
anon_other_write_enable=YES#开放删除和重命名目录的权限
5.6测试
在cyy-1的用户家目录下创建测试文件
cd /var/tmp/vuser_ftp/cyy01
touch 123
在cyy-2的用户家目录下创建测试文件
cd /var/tmp/vuser_ftp/cyy02
touch 456
在128主机上用cyy-1登录
[root@ansible_center ~] ftp 192.168.134.131
Connected to 192.168.134.131 (192.168.134.131).
220 (vsFTPd 3.0.2)
Name (192.168.134.131:root): cyy-1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,134,131,58,80).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 May 19 06:40 123
226 Directory send OK.
在128主机上用cyy-2登录
[root@ansible_center ~] ftp 192.168.134.131
Connected to 192.168.134.131 (192.168.134.131).
220 (vsFTPd 3.0.2)
Name (192.168.134.131:root): cyy-2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,134,131,55,241).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 May 19 06:41 456
226 Directory send OK.
[root@ansible_center ~] ftp 192.168.134.131
Connected to 192.168.134.131 (192.168.134.131).
220 (vsFTPd 3.0.2)
Name (192.168.134.131:root): cyy-2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,134,131,55,241).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 May 19 06:41 456
226 Directory send OK.