如何授予开发人员 shell 权限来使用 GIT 和管理代码,而不进行其他操作?

如何授予开发人员 shell 权限来使用 GIT 和管理代码,而不进行其他操作?

在 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 访问控制列表文档

相关内容