千家信息网

PAM禁止root用户登录,限制普通su切换

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,系统环境是CEONOS6.4, 介绍下PAM(Pluggable Authentication Modules)在ssh服务上的简单配置过程。必须先添加普通用户,并属于wheel组,保证有除root之
千家信息网最后更新 2026年10月31日PAM禁止root用户登录,限制普通su切换

系统环境是CEONOS6.4, 介绍下PAM(Pluggable Authentication Modules)在ssh服务上的简单配置过程。


必须先添加普通用户,并属于wheel组,保证有除root之外的其它用户能登录到系统 !!!!!!!


useradd -g wheel admin

passwd admin


1 禁止root登录

vim /etc/ssh/sshd_config

添加 UsePAM yes


vim /etc/pam.d/sshd 行首添加:

auth required pam_listfile.so item=user sense=deny file=/etc/ssh/denyuser onerr=succeed


echo "root" >> /etc/ssh/denyuser

列在/etc/ssh/denyuser中的用户, 都会被拒绝使用密码登录!!


2 只允许wheel组用户(root默认也不属于wheel的)使用su:

vim /etc/pam.d/su 行首添加


auth required pam_wheel.so use_uid


3 附shell:

使用须知:

A. 需要你先安全地生成自己的密钥对,并妥善保管!!将"mykey"替换为你的公钥串

B. 脚本包括了创建普通用户"admin",可以修改为你自己需要的用户,它可以使用su切换到root

C.脚本执行结果为, 限制root使用密码登录系统,但若设置了使用密钥,仍可以登录(安全性好)

D.add_my_key root $1(脚本中标红色),后面参数为你想添加公钥认证的所有用户,可以自己补充。

E.脚本供大家学习交流,生产环境使用前,请先在测试环境中测试效果,作者不对任何结果负任何责任。

#!/bin/sh
LOG_FILE=$0.log
wr_log(){
TIME=`date +"%Y-%m-%d %H:%M:%S"`
if [ $1 -eq 0 ];then
echo "[$TIME] $2 success"
echo "[$TIME] $2 success" >> ${LOG_FILE}
else
echo "[$TIME] $2 error"
echo "[$TIME] $2 error">>${LOG_FILE}
exit 1
fi
}
gsed(){
#用于修改配置文件,后接3个参数:1.要修改的行2.修改后的行3.被修改的文件
#若找不到匹配的行, 会将$2添加到文件的首行
`/bin/grep -E "^$1" $3 >/dev/null`
ret1=$?
`/bin/grep -E "^$2" $3 >/dev/null`
ret2=$?
ret=10
if [ $ret1 -eq 0 ] ; then
/bin/sed -i -r 's/^'"$1"'/'"$2"'/g' $3
ret=$?
elif [ $ret1 -ne 0 -a $ret2 -ne 0 ];then
/bin/sed -i '1i '"$2"'' $3
ret=$?
else
ret=0
fi
return $ret
}
add_my_key(){
mykey='ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtCgu1KvU/YMkPSnlEB4hyVWCc9/a5X3rqafGr7dPMdiMXXcyBpBd2t8NE/4rQ33rnd6GGUIlv3+2wPI8hFc5zU13G//jKseVS0hbY8XIq8zq8NhKzk/uX8m5ZE'
for user in $@;
do
if test $user = 'root';then
dir='/root/.ssh'
else
dir="/home/$user/.ssh"
fi
if ! test -d $dir;then
/bin/mkdir -p $dir
fi
chmod 700 $dir&&echo $mykey >>$dir/authorized_keys&&chown -R $user $dir&&chmod 600 $dir/authorized_keys
wr_log $? "add ssh key for $user"
done

}
add_user(){

/usr/sbin/useradd -g wheel $1 &&echo "$2" |/usr/bin/passwd $1 --stdin
wr_log $? "add user $1 "
}
deny_root_login(){
#用于修改PAM的su和sshd配置,禁止root远程登录,禁止非wheel组用户登录(su)到root用户
if test $# -ne 2;then
echo "usage: deny_root_login normal_user user_password"
wr_log 1 "wrong usage:$@ "
fi
add_user $1 $2
add_my_key root $1

gsed "auth[ \t]+required[ \t]+pam_wheel\.so use_uid" "auth required pam_wheel\.so use_uid" /etc/pam.d/su &&\
gsed "UsePAM[ \t]+no" "UsePAM yes" /etc/ssh/sshd_config &&\
gsed "auth[ \t]+required[ \t]+pam_listfile\.so item=user sense=deny file=\/etc\/ssh\/denyuser onerr=succeed" "auth required pam_listfile.so item=user sense=deny file=\/etc\/ssh\/denyuser onerr=succeed" /etc/pam.d/sshd &&echo "root" >> /etc/ssh/denyuser&&/sbin/service sshd restart

wr_log $? "deny_root_login"
}


deny_root_login admin "yourpassword"

用户 登录 脚本 文件 环境 系统 配置 普通 安全 公钥 参数 密码 密钥 结果 测试 切换 限制 不对 作者 学习交流 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河南云网互联网络科技有限公司 互联网中国科技 华中科技大学互联网 互联网科技咨询 欧洲十大科技互联网公司 互联网和黑科技的看法 智腾互联网科技有限公司 深圳育鹏互联网科技有限公司招聘 互联网科技人工智能实验室 合肥互联网科技公司公章图片 科技互联网的核心竞争力 广州百诚互联网科技有限公司官网 从那以后互联网科技有限公司 互联网科技包装股 互联网科技大会大佬 宁波允成互联网科技有限公司 互联网企业和网络科技有限公司 科技互联网企业在行动 科技美学互联网 艺术 如何强化互联网金融科技 国智互联网科技 互联网汽车科技小镇 西藏七维空间互联网科技有限公司 成都互联网科技公司100强 畅思互联网科技 科技大学互联网 滨湖区互联网智能科技产品有哪些 中天科技中国工业互联网 科技互联网专业务虚会材料 前海云享互联网科技
0