搭建ftp及账户管理

centos 7.5环境搭建ftp及账户管理

1.账户管理

账户管理通过httpd服务调用cgi脚本实现

首先查看是否安装httpd服务

rpm -qa | grep httpd

/etc/httpd/conf/httpd.conf配置文件增加

ScriptAlias /cgi-bin "/var/www/cgi-bin"

搭建ftp及账户管理

然后将chpwd脚本放到/var/www/cgi-bin/目录,并添加执行权限

通过chpwd创建用户密码通过bdbtool执行文件,bdbtool生成的vftpuser.db文件及生成的用户vsftpd的配置文件放到/etc/vsftpd/目录,因为chpwd被调用是通过apache用户(httpd.conf配置文件配置),将他们的用户组设置为apache以便访问

搭建ftp及账户管理

赋权限通过sid,因为chpwd被调用是通过apache用户(httpd.conf配置文件配置),所以要将sid增加设置用户id位

搭建ftp及账户管理

bdbtool代码:

搭建ftp及账户管理

搭建ftp及账户管理

sid代码:

搭建ftp及账户管理

改变不同用户权限读不同用户文件,需要用户id为0,有效用户id为0不行(程序执行时会将有效用户id置成保存的设置用户id),故需要setuid(0), 而setuid(0)需要有效用户id为0,故需要将文件增加设置用户id位。

搭建ftp及账户管理

因为改变权限是通过system调用,他的子进程执行exec时,会重置程序的有效id为实际用户id,所以要获得root权限,需要设置程序的实际用户id为0,即要setuid(0)。

而setuid(0)需要有效用户id为0,故需要将文件增加设置用户id位。

验证代码:

搭建ftp及账户管理

可以看到,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 模块及配置

CentOS服务器下安装配置SSL

centos7 openssl 生成证书给自己使用

Centos7创建CA和申请证书

重启httpd:

systemctl restart httpd.service

至此,就可以通过curl测试,用户管理了

搭建ftp及账户管理

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及账户管理

#ftp服务读写用户

guest_username=vftpuser 

#登录名对应的配置文件所在目录

user_config_dir=/etc/vsftpd/vconf

ftp用户登录时读取/etc/vsftpd/vconf目录下对应用户配置文件

搭建ftp及账户管理

用户校验通过/etc/pam.d/vsftpd里面配置的vftpuser.db文件校验

搭建ftp及账户管理

重启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

centos7.5 设置开机启动vsftpd

 

 

 
喜欢 0
分享