有时候不清楚某个gitolite用户的用户名是什么。如果人们想要控制其野生回购的访问权限,他们需要知道用户名。一个明显的解决方案是询问他们的用户名。 在我们的环境中,最常见的情况是管理员被要求输入用户名,因为有时用户自己不知道他们的用户名。
这有点不方便,我想知道是否是一个简单的解决方案,例如显示所有可用用户名的命令。如果没有,是否有关于如何编写此类脚本以及如何访问它的建议?
答案 0 :(得分:1)
我认为他想要的是列出分配给其他用户的用户名的方法。他担心的是管理员可能在添加pubkey文件时输入了名称。说我发给他“id_rsa.pub”。他将其存储为“sitram.pub”而不是“sitaram.pub”。只要conf文件中的权利也同样错误拼写,你甚至可能没有意识到这一点。
想要访问他的回购的人只有一个选择:询问他想要访问的每个人运行'ssh git @ host info'并报告他们看到的用户名。
部分是信息泄露问题,允许非管理员用户查询所有其他用户名。
另一部分是,如果您处于HTTP模式或其他状态,那么确实没有理智的方式来了解所有可能的经过身份验证的(可验证的!)用户是谁。对于ssh,你当然可以这样做:
perl -lne 'print $1 if /-shell (.*?)"/' < ~/.ssh/authorized_keys
Gitolite有一个“list-users”命令,但只知道已在conf文件中的某些访问规则中命名的用户。这不是一回事。
答案 1 :(得分:1)
我添加了一个新命令'usernames',它只打印一个包含所有具有相应实名的用户名的文本文件。我把这个文件放在gitolite-admin-repo的主目录中。唯一的缺点是,在添加新用户后,此文件需要手动更新。
将其放入~/gitolite-source/src/commands/usernames
:
#! /bin/bash
cat $HOME/.gitolite/usernames.txt
答案 2 :(得分:0)
Gitolite(V3)有一个commands列表,包括
ssh git@host info -h
ssh git@host perms -h
这有助于获取gitolite配置的内容。
ssh git@host perms -l <repo>
将列出权限文件的当前内容。
答案 3 :(得分:0)
这就是我正在使用的
perl -le 'while(<>) {$h{$1}=1 if /-shell (.*?)"/};foreach (sort(keys(%h))){print $_;}' < ~/.ssh/authorized_keys
它与Sitaram提供的代码段大致相同,只不过它会删除重复和排序。