永久关闭selinux
[root@localhost cc]# vim /etc/selinux/config
# enforcing 严格模式 进程的规则和安全上下文及文件访问权限不匹配就会拒绝
# permissive 宽容模式 进程的规则和安全上下文及文件访问权限不匹配也可以访问 但是会记录警告日志
# disabled 关闭沙盒
SELINUX=enforcing
重启系统才能生效 reboot
setenfore 0 --- 宽容模式
# targeted 是对绝大多数的网络程序进行访问控制
# minimum 对指定的程序进行访问控制 一般不用
# mls 对所有的程序进行控制 除非安全级别非常高 才会用最后一个
SELINUXTYPE=targeted
[root@localhost cc]# ls -Zd /var/ftp
drwxr-xr-x. root root system_u:object_r:public_content_t:s0 /var/ftp
第一个部分 用户u system_u(受到沙盒的管制 )和unconfined_u(不受沙盒的管制)
第二个部分 角色r object_r
第三个部分 类型t 安全上下文 samba_share_t
public_content_rw_t
[root@localhost ~]# ls -Zd /home/cc
drwx------. cc cc unconfined_u:object_r:user_home_dir_t:s0 /home/cc
[root@localhost ~]# chcon -R -u system_u -t public_content_rw_t /home/cc
[root@localhost ~]# ls -Zd /home/cc
drwx------. cc cc system_u:object_r:public_content_t:s0 /home/cc
修改布尔值(规则)
查看沙盒控制服务的布尔值
[root@localhost ~]# getsebool -a | grep ftp
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off
[root@localhost ~]# setsebool -P ftpd_anon_write 1
client
ftp> put anaconda-ks.cfg
local: anaconda-ks.cfg remote: anaconda-ks.cfg
227 Entering Passive Mode (192,168,2,10,114,195).
150 Ok to send data.
226 Transfer complete.
1760 bytes sent in 0.0805 secs (21.86 Kbytes/sec)
昨天 selinux 开启沙盒 开启防火墙
手动放行ftp
firewall-cmd
chcon -R -u 。。 -t 安全上下文 目录名 临时
规则:setsebool client上传
恢复文件默认的安全上下文
[root@localhost ~]# restorecon -i /home/cc
[root@localhost ~]# ls -Zd /home/cc
drwx------. cc cc system_u:object_r:user_home_dir_t:s0 /home/cc
设置永久 设置默认的安全上下文
[root@localhost cc]# semanage fcontext -a -t public_content_rw_t '/home/cc/(/.*)?' #目录以下的
[root@localhost cc]# semanage fcontext -a -t public_content_rw_t '/home/cc' #当前目录
[root@localhost ~]# restorecon -i /home/cc
[root@localhost cc]# semanage fcontext -l | grep /home/cc
samba
chcon -R -t samba_share_t 共享目录
布尔值 规则
setsebool -P samba_export_all_ro on
setsebool -P samba_export_all_rw on
setsebool -P samba_enable_home_dirs on
虚拟用户访问 虚拟用户---基于本地用户---在基于本地用户的家目录下
本地用户用户是可以登录系统的
虚拟用户---ftp---不能登录系统的
创建虚拟用户
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
[root@localhost vsftpd]# vim users.list
aaa
123
bbb
456
ccc
789
转换成二进制文件 db
[root@localhost vsftpd]# db_load -T -t hash -f users.list users.db
创建本地用户 虚拟用户要基于本地用户
[root@localhost vsftpd]# useradd -d /qq -s /sbin/nologin qq
[root@localhost vsftpd]# chown qq:qq /qq
[root@localhost vsftpd]# chmod 755 /qq
#编写pam认证的文件 用户能够认证登录
[root@localhost vsftpd]# cd /etc/pam.d/
[root@localhost pam.d]# vim user.vu
#!PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/users #登录模块
account required pam_userdb.so db=/etc/vsftpd/users #登录测试的模块
[root@localhost pam.d]# vim /etc/vsftpd/vsftpd.conf
local_enable=YES
anon_upload_enable=YES #允许用户能够上传
pam_service_name=user.v u #pam文件
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES #开启虚拟用户访问
guest_username=qq #依赖的本地用户
allow_writeable_chroot=YES #虚拟用户有可写的权限
[root@localhost pam.d]# systemctl restart vsftpd
client验证
[root@localhost ~]# ftp 192.168.2.10
Connected to 192.168.2.10 (192.168.2.10).
220 (vsFTPd 3.0.2)
Name (192.168.2.10:root): aaa
331 Please specify the password.
Password:123
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
server:
[root@localhost pam.d]# cd /qq
[root@localhost qq]# touch rrr
client
ftp> ls
ftp> get rrr
local: rrr remote: rrr
如果直接把服务端的沙盒关闭 就可以可以上传