我需要让用户创建 mysql 转储,但我想限制其他任何操作。我必须通过 ssh 进入服务器来执行此操作,因为 mysql 服务器只监听内部 ip 地址,阻止我直接访问 mysql 服务器。
我曾尝试将 ssh 用户关进监狱,但是没有起到什么作用,因为即使我将套接字目录复制到监狱中,它也无法通过 mysql 套接字连接到数据库。
然后我读到了一些关于/sbin/nologin
允许用户在不启动 shell 的情况下进行身份验证的内容。我想也许我可以以某种方式传递命令来创建转储/隧道直接到 mysql。
是否有人有允许用户通过 ssh 创建数据库转储,但限制其他任何操作的经验?
用户也可以使用 Sequel Pro / MySQL Workbench 之类的工具进行连接,但他们仍然需要通过 ssh 进行连接,因为否则无法访问数据库服务器。
他们需要下载转储,但我可以通过 SFTP 访问转储。
答案1
两种可能的解决方案。
SSH 监狱, http://allanfeid.com/content/creating-chroot-jail-ssh-access
另类,Jailkit, 简单易行的监禁用户的方法
或者如果用户使用 ssh 密钥,则通过授权命令限制用户,
答案2
将执行转储所需的代码添加到 .bashrc/.zshrc,然后退出。
# .bashrc
echo "Creating DB Dump..."
dumpdumpdump
echo "Done"
exit
但这非常不安全。任何在退出前按 ctrl-c 都会让用户进入 shell。你可以添加一个陷阱,在 INT 和 TERM 上也退出,以避免这种情况
trap exit INT TERM;
echo "Creating DB Dump..."
dumpdumpdump
echo "Done"
exit