centos 7.5环境搭建ftp及账户管理
1.账户管理
账户管理通过httpd服务调用cgi脚本实现
首先查看是否安装httpd服务
rpm -qa | grep httpd
/etc/httpd/conf/httpd.conf配置文件增加
ScriptAlias /cgi-bin "/var/www/cgi-bin"
然后将chpwd脚本放到/var/www/cgi-bin/目录,并添加执行权限
通过chpwd创建用户密码通过bdbtool执行文件,bdbtool生成的vftpuser.db文件及生成的用户vsftpd的配置文件放到/etc/vsftpd/目录,因为chpwd被调用是通过apache用户(httpd.conf配置文件配置),将他们的用户组设置为apache以便访问
赋权限通过sid,因为chpwd被调用是通过apache用户(httpd.conf配置文件配置),所以要将sid增加设置用户id位
bdbtool代码:
sid代码:
改变不同用户权限读不同用户文件,需要用户id为0,有效用户id为0不行(程序执行时会将有效用户id置成保存的设置用户id),故需要setuid(0), 而setuid(0)需要有效用户id为0,故需要将文件增加设置用户id位。
因为改变权限是通过system调用,他的子进程执行exec时,会重置程序的有效id为实际用户id,所以要获得root权限,需要设置程序的实际用户id为0,即要setuid(0)。
而setuid(0)需要有效用户id为0,故需要将文件增加设置用户id位。
验证代码:
可以看到,sidtest设置了设置用户id位,执行时有效用户id为0,但exec时,有效用户id为1001(id命令会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。)
chpwd脚本依赖python2,openssl,mkpasswd,jq等,需要安装
配置好centos源,位于/etc/yum.repos.d/目录, 其中jq需要配置epel源。
配置好源后,再
yum clean all
yum makecache
然后可以通过yum repolist查看。
安装依赖bin
可以从其他机器查询文件所属的包,如
rpm -qf /usr/bin/mkpasswd
expect-5.45-14.el7_1.x86_64
安装包
yum install expect
yum install openssl
yum install jq
另外,卸载可以通过rpm -qa|grep yum|xargs rpm -e --allmatches --nodeps
关闭防火墙
查看防火墙状态:firewall-cmd --state
关闭防火墙:systemctl stop firewalld.service
禁用防火墙开机启动:systemctl disable firewalld.service
关闭selinux
setenforce 0
永久关闭:
/etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
设置后需要重启才能生效。
开启httpd的mod_ssl 模块及配置
安装ssl模块
yum install mod_ssl
通过openssl创建私钥和证书
将私钥和证书放到/etc/pki/tls/目录下
修改/etc/httpd/conf.d/ssl.conf配置文件 ,将文件中这二行信息修改为:
SSLCertificateFile /etc/pki/tls/server.crt
SSLCertificateKeyFile /etc/pki/tls/server.key
参考:
在CentOS7中开启httpd的mod_ssl 模块及配置
重启httpd:
systemctl restart httpd.service
至此,就可以通过curl测试,用户管理了
2.搭建ftp服务
首先查看是否安装vsftpd服务
rpm -qa | grep vsftpd
创建vftpuser用户用于ftp服务用户
useradd vftpuser
修改/etc/vsftpd/vsftpd.conf配置文件
anonymous_enable=NO
chroot_local_user=YES
pam_service_name=vsftpd //用户密码校验服务名
增加配置
#ftp服务读写用户
guest_username=vftpuser
#登录名对应的配置文件所在目录
user_config_dir=/etc/vsftpd/vconf
ftp用户登录时读取/etc/vsftpd/vconf目录下对应用户配置文件
用户校验通过/etc/pam.d/vsftpd里面配置的vftpuser.db文件校验
重启vsftpd
systemctl restart vsftpd.service
这样就可以ftp访问了。
设置开机自启动
执行systemctl list-unit-files|grep vsftpd,查看vsftpd是否自启动,suse 用chkconfig --list | grep vsftpd
如果没有vsftpd服务可执行chkconfig --add vsfptd,如果有该服务,则执行chkconfig vsftpd on
 
搭建ftp及账户管理:等您坐沙发呢!