在 CentOS 6.5(SElinux 关闭,chroot)中使用 Webmin/Virtualmin(最新版本),我想让开发人员在 /home/site 内访问 SSH,这样他只能使用git管理代码。我还想授予他访问 /home/site/ 的 FTP 权限以及访问 3 个数据库(站点和 2 个子服务器)的 MySQL 权限
SSH:我创建了一个名为 dev_ssh 的用户。SSH 是基于证书的登录,我已通过 SSH 连接到 /home/dev_ssh。我想授予此用户访问 /home/site 目录的权限,但除非我将他添加到sudoers。
FTP:我为网站 (dev.site) 创建了 1 个用户,他可以访问整个 /home/site。这部分运行正常。
MySQL:我创建了一个 mysql 用户 dev_mysql,并授予该用户访问所有 3 个数据库(主数据库和子服务器数据库)的权限。我可能必须保持 MySQL 访问权限,因为该用户只能访问这 3 个数据库的远程登录 MySQL(而 unix 用户只能从 MySQL 本地主机访问)。这部分工作正常。
如何解决 SSH 访问 /home/site 的问题?
此外,整个设置是否是在 Webmin 环境中设置的正确方法?
答案1
使用系统组授予目录访问权限。将组的所有权更改/home/site
为公共组,例如,git
并将用户添加dev_ssh
到该组。
chgrp -Rvf git /home/site
usermod -a -G git dev_ssh
答案2
在~/.ssh/authorized_keys
command="git",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-dss [...]
答案3
您可以使用 Git 附带的有限 shell 工具 git-shell 限制“git”用户仅执行 Git 活动。如果您将其设置为“git”用户的登录 shell,则“git”用户将无法正常访问您的服务器。要使用此功能,请为用户的登录 shell 指定 git-shell 而不是 bash 或 csh。为此,您可能需要编辑 /etc/passwd 文件。
答案4
setfacl -m d:u:dev_ssh:rx /home/site
确保包含/home/site
该选项的文件系统已挂载acl
。来源:CentOS 访问控制列表文档。