1

有时不清楚某个 gitolite 用户的用户名是什么。如果人们想控制他们的狂野回购的访问权限,他们需要知道用户名。一个明显的解决方案是询问他们的用户名。在我们的环境中,最常见的情况是要求管理员输入用户名,因为有时用户自己不知道他们的用户名。

这有点不方便,我想知道是否是一个简单的解决方案,例如显示所有可用用户名的命令。如果没有,对如何编写这样的脚本以及如何访问它有什么建议吗?

4

4 回答 4

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 文件的某些访问规则中命名的用户。这不完全一样。

于 2012-12-23T15:17:06.233 回答
1

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
于 2013-03-04T13:58:11.563 回答
0

Gitolite (V3) 有一个命令列表,包括

ssh git@host info -h
ssh git@host perms -h

这可以帮助获取 gitolite 配置的内容。

ssh git@host perms -l <repo>

将列出权限文件的当前内容。

于 2012-10-30T16:57:36.207 回答
0

这就是我正在使用的

perl -le 'while(<>) {$h{$1}=1 if /-shell (.*?)"/};foreach (sort(keys(%h))){print $_;}' < ~/.ssh/authorized_keys

它与 Sitaram 提供的片段非常相似,只是它删除了重复项和排序。

于 2014-12-12T07:02:34.850 回答