php 基于Linux权限登录

关于/etc/shadow 与 /etc/group的关系,我就不说了,上网搜出来一大箩!


今天,我想如何通过这两个文件的关系来做一个登录的界面。

首先,/etc/shadow里是存储了用户的信息包括密码等,其密码的加密模式有多种,每一种的Linux操作系统都不一样,我这次用的操作系统是Ubuntu 64位,其加密模式是sha512。

那么,我们如何把手上的密码,用PHP语言编写的程序进行加密呢?在php里,有一个crypt的函数
,其使用方法是:crypt(str,salt),解释下:str:加密的字符串;salt:格式与长度。
如:crypt('123456','$6$abcde'),最后得到的是一串加密的字符串。这串字符串就是我们shadow中用户的密码。
现在我们来看看,关键的一步如何通过PHP的权限来获取/etc/shadow的相应用户。经过我在网上搜索了大量的资料,发现最后的方法还是通过调用C程序来获取权限。下面的一段C程序是我已经验证过的代码:
	
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
uid_t uid ,euid;
uid = getuid() ;
euid = geteuid();
printf("my uid :%u/n",getuid()); //这里显示的是当前的uid 可以注释掉.
printf("my euid :%u/n",geteuid()); //这里显示的是当前的euid
if(setreuid(euid, uid)) //交换这两个id
perror("setreuid");
printf("after setreuid uid :%u/n",getuid());
printf("afer sertreuid euid :%u/n",geteuid());
system("less /etc/shadow | grep root"); //执行脚本
return 0;
}

注意:上面代码可以根据自已的需求来改写,如参数传进cmd外部命令等。

录入后,编译代码后叫test,我们还要经过最重要的一步:
su root
chmod u+s test
OK,接下来我们通过PHP的exce函数来调用了。附件是我这次做的实验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值