linux 特定用户ssh,linux - 如何在登录后将SSH用户限制为一组预定义的命令?
你为什么不写自己的login-shell? 为此使用Bash会非常简单,但您可以使用任何语言。
Bash中的示例
使用您喜欢的编辑器创建文件;(这可以是任何名称或路径,但应该是&和&&):
#!/bin/bash
commands=("man" "pwd" "ls" "whoami")
timestamp(){ date +'%Y-%m-%s %H:%M:%S'; }
log(){ echo -e "$(timestamp)\t$1\t$(whoami)\t$2" > /var/log/rbash.log; }
trycmd()
{
# Provide an option to exit the shell
if [[ "$ln" == "exit" ]] || [[ "$ln" == "q" ]]
then
exit
# You can do exact string matching for some alias:
elif [[ "$ln" == "help" ]]
then
echo "Type exit or q to quit."
echo "Commands you can use:"
echo " help"
echo " echo"
echo "${commands[@]}" | tr ' ' '\n' | awk '{print " " $0}'
# You can use custom regular expression matching:
elif [[ "$ln" =~ ^echo\ .*$ ]]
then
ln="${ln:5}"
echo "$ln" # Beware, these double quotes are important to prevent malicious injection
# For example, optionally you can log this command
log COMMAND "echo $ln"
# Or you could even check an array of commands:
else
ok=false
for cmd in "${commands[@]}"
do
if [[ "$cmd" == "$ln" ]]
then
ok=true
fi
done
if $ok
then
$ln
else
log DENIED "$cmd"
fi
fi
}
# Optionally show a friendly welcome-message with instructions since it is a custom shell
echo "$(timestamp) Welcome, $(whoami). Type 'help' for information."
# Optionally log the login
log LOGIN "$@"
# Optionally log the logout
trap "trap=\"\";log LOGOUT;exit" EXIT
# Optionally check for '-c custom_command' arguments passed directly to shell
# Then you can also use ssh user@host custom_command, which will execute /root/rbash.sh
if [[ "$1" == "-c" ]]
then
shift
trycmd "$@"
else
while echo -n "> " && read ln
do
trycmd "$ln"
done
fi
您所要做的就是将此可执行文件设置为登录shell。 例如,编辑;文件,并将该用户&的当前登录shell替换为&&。
这只是一个简单的例子,但您可以根据需要将其设置为高级,这个想法就在那里。 小心不要通过更改自己和唯一用户的登录shell来锁定自己。 并始终测试奇怪的符号和命令,看它是否真的安全。
你可以用以下方法测试它:;。
注意,确保匹配整个命令,并注意通配符! 最好排除Bash符号,如;,&,&&,||,$,并确认反引号。
根据您给用户的自由度,它不会比这更安全。 我发现通常我只需要让一个只能访问少量相关命令的用户,在这种情况下,这确实是更好的解决方案。但是,您是否希望提供更多自由,监狱和权限可能更合适。 很容易犯错误,只有在已经太晚的时候才会注意到。
linux 特定用户ssh,linux - 如何在登录后将SSH用户限制为一组预定义的命令?相关推荐
- ssh设置免密登录后登录仍需密码可能的原因,以及 ssh 出问题或的调试方法
免密登录失败 ssh设置免密登录后登录仍需密码可能的原因,home 路径下的对应用户权限不对,或者 .ssh 文件夹权限不对,/home/$user 和 /home/$user/.ssh 路径必须是 ...
- 调用API接口登录后,获取用户信息保存到Vuex中并渲染到Vue页面
文件封装 步骤 核心请求文件 在 apiUse 文件夹中的 index.js 文件写 API接口方法 baseURL + url 后台完整地址 将信息写入 store 文件夹中的 index.js 文 ...
- node 后台重定向_登录后重定向到用户原本要访问的页面《 Node.js 应用:重构与改进 #3 》...
现在我是未登录的状态 ... 可以先试着打开一个内容的编辑界面 ... 会被重定向到登录页面 ... 输入用户名 ... 密码 .. 确认登录 ... 成功以后会把用户重定向到这个用户页面上 ... ...
- Linux中ssh访问与ftp登录
一.实验环境 centos7虚拟机:用做被登录者 kali 2022虚拟机:用做登录者 1.ftp centos7需要安装vsftpd.ftd服务 执行yum -y install vsftpd-* ...
- linux 重读环境变量,关于linux中使用source /etc/profile重新读取配置后,新的环境变量只能在当前终端里面有效,新开的终端提示 command not found...
文章目录 问题 知识点 问题分析及解决 补充 问题 在使用linux桌面环境(通常是ubuntu/debian/deepin等版本的linux)的时候,新增环境变量后,会使用source /etc/p ...
- Linux(三)Linux常用命令
目录 补充 查看帮助 文件管理 查看文件信息ls 文件属性 切换工作目录cd 显示当前工作目录pwd 创建新目录mkdir 创建新文件touch 删除文件或目录rm 拷贝cp 移动/重命名mv 建立连 ...
- 在不同域中各个系统拥有自已独立的用户系统时的单点登录问题
我们在实现业务中经常会碰到多个系统各自有各自的用户登录系统,而且这些系统是各自运行在各自的域下,所以要实现这些系统用户的单点登录就是个问题了,所以自己想了一个方案希望看看是否可行. 1.sso站点必须 ...
- 华为交换机和路由器AAA和ssh、telnet远程登录~
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 华为交换机和路由器AAA和ssh.telnet远程登录~ 提华为交换机和路由器AAA和ssh.telnet远程登录~ 一.ssh登录 ...
- ssh localhost免密登录
设置ssh localhost免密登录 安装好ssh后.使用ssh localhost 登录本机会输入密码,每次输入密码会比较麻烦,那么就需要设置免密登录了. 1.进入.ssh目录 cd ~/.ssh ...
最新文章
- 我的心愿秀、大家也来秀(show)一下
- python序列化和反序列化
- [软件更新]Adobe Photoshop Elements 8.0.0
- 2021年李永乐6套卷一道无穷小定义的题目
- 【机器学习入门笔记2:OpenCV图片读取和展示】20190203
- MyBatis源码解析(二)——Environment环境
- 好程序员Web前端教程分享JavaScript开发技巧
- linux服务器黑屏_xshell连接Linux系统(小红帽7.3)服务器,导致服务器黑屏
- debian源码安装bind9.10.6
- npm publish 发布一个 Angular 库的时候报错以及解决方法
- pic单片机c语言读eeprom,PIC16F877单片机内部EEPROM读写实例
- 技术交底软件_【干货分享】软件类产品如何进行专利挖掘与技术交底书撰写?...
- 《天天数学》连载25:一月二十五日
- 华为5g鸿蒙折叠,华为5G折叠概念新机:麒麟9000+鸿蒙OS 这才是华为的实力
- 27个提升效率的iOS开源库推荐
- 这个严重 0day 可导致79款 Netgear 路由器遭远程接管,无补丁
- 修改本地管理员密码脚本
- 专业美妆磨皮大师扩展插件支持PS2021版效果
- 2020年蓝桥杯省赛 C++ B组
- 点燃创业引擎的天使投资
热门文章
- linux 笔记之一mysql源码包安装
- Android系统中通过shell命令实现wifi的连接控制
- c++ 舞伴配对问题_挑战新物体描述问题,视觉词表解决方案超越人类表现
- python注释及语句分类
- django-rest-swagger显示接口备注内容
- MySQL查询select实例 【笔记】
- c++ sleep函数_Linux 多线程应用中如何编写安全的信号处理函数
- 普通人学python有意义吗_学python难吗
- MATLAB中MEX文件的编写与调试
- java 日期 年数_java 日期加减天数、月数、年数的计算方式