有时不清楚某个 gitolite 用户的用户名是什么。如果人们想控制他们的狂野回购的访问权限,他们需要知道用户名。一个明显的解决方案是询问他们的用户名。在我们的环境中,最常见的情况是要求管理员输入用户名,因为有时用户自己不知道他们的用户名。
这有点不方便,我想知道是否是一个简单的解决方案,例如显示所有可用用户名的命令。如果没有,对如何编写这样的脚本以及如何访问它有什么建议吗?
有时不清楚某个 gitolite 用户的用户名是什么。如果人们想控制他们的狂野回购的访问权限,他们需要知道用户名。一个明显的解决方案是询问他们的用户名。在我们的环境中,最常见的情况是要求管理员输入用户名,因为有时用户自己不知道他们的用户名。
这有点不方便,我想知道是否是一个简单的解决方案,例如显示所有可用用户名的命令。如果没有,对如何编写这样的脚本以及如何访问它有什么建议吗?
我认为他想要的是一种列出分配给其他用户的用户名的方法。他的担心可能是管理员在添加 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 文件的某些访问规则中命名的用户。这不完全一样。
I added a new command 'usernames' that simply prints a text file that contains all usernames with respective real names. I put this file in the main directory of the gitolite-admin-repo. Only drawback is that this file requires manual updating after a new user is added.
Put this in ~/gitolite-source/src/commands/usernames
:
#! /bin/bash
cat $HOME/.gitolite/usernames.txt
Gitolite (V3) 有一个命令列表,包括
ssh git@host info -h
ssh git@host perms -h
这可以帮助获取 gitolite 配置的内容。
ssh git@host perms -l <repo>
将列出权限文件的当前内容。
这就是我正在使用的
perl -le 'while(<>) {$h{$1}=1 if /-shell (.*?)"/};foreach (sort(keys(%h))){print $_;}' < ~/.ssh/authorized_keys
它与 Sitaram 提供的片段非常相似,只是它删除了重复项和排序。