善变的服务器云:无节:“路径”必须运行的“汞”用户(mercurial-server says: N

2019-10-18 16:01发布

我通过这个(官员)的教程尽量调汞柱: http://dev.lshift.net/paul/mercurial-server/docbook.html

当我尝试:

sudo -u hg /usr/share/mercurial-server/refresh-auth

它说:

No section: 'paths'
Must be run as the 'hg' user

所以,这是一个问题

UPD:

方法解决,并真正的教程安装水银服务器:

远程服务器上:

0) save your repos to homedir
1) <username>@<remote_server>:$ sudo apt-get purge mercurial mercurial-server
2) <username>@<remote_server>:$ sudo userdel -r hg
3) <username>@<remote_server>:$ sudo rm -r /var/lib/mercurial-server
4) <username>@<remote_server>:$ sudo rm -r /etc/mercurial-server
5) <username>@<remote_server>:$ sudo rm -r /usr/share/mercurial-server
6) <username>@<remote_server>:$ sudo apt-get install mercurial mercurial-server
7) <username>@<remote_server>:$ exit

在localhost:

8) ssh -A <remote_hg_server_domain>

远程服务器上:

9) <username>@<remote_server>:$ ssh-add -L > id_rsa.pub
10) <username>@<remote_server>:$ sudo mkdir -p /etc/mercurial-server/keys/root/<username>
11) <username>@<remote_server>:$ sudo cp my-key /etc/mercurial-server/keys/root/<username>/localhost (if you work from local terminal)
12) <username>@<remote_server>:$ sudo -u hg /usr/share/mercurial-server/refresh-auth - OOPS

我们得到

Traceback (most recent call last):
  File "/usr/share/mercurial-server/refresh-auth", line 22, in <module>
    refreshauth.refreshAuth()
  File "/usr/share/mercurial-server/mercurialserver/refreshauth.py", line 49, in refreshAuth
    kf = open(ffn)
IOError: [Errno 13] Permission denied: '/etc/mercurial-server/keys/root/<username>/localhost'

解析:

13) <username>@<remote_server>:$ sudo chmod 644 /etc/mercurial-server/keys/root/<username>/localhost
14) <username>@<remote_server>:$ sudo -u hg /usr/share/mercurial-server/refresh-auth
15) <username>@<remote_server>:$ sudo chmod 600 /etc/mercurial-server/keys/root/<username>/localhost

做工不错

Answer 1:

最初的问题意味着你有你的善变服务器安装陷入了迷茫状态。 创建“HG”用户后,安装脚本将在其主目录下名为“.mercurial服务器”的配置文件。 这个文件不知何故您的系统上移除 - 也许你创建手工“HG”的用户? 这就是为什么删除并重新安装所有固定一切,因为它运行的安装脚本和创建该文件。

第二个问题是简单的“汞”的用户无法读取您所创建的“localhost”的文件。 777给写权限的所有 - 从来没有做到这一点! 644文件和755的目录就足够了。 它看起来像你有你“的umask”设置为一个不同寻常的限制性面具。



Answer 2:

Gentoo用户可以得到同样的错误。 我发现下面的有益的建议, 在这里 :

检查/home/home/hg ,如果不存在的话,你可以创建它(下根):

mkdir /home/hg
chown -R hg:users /home/hg
chmod -R 700 /home/hg

身份登录的用户汞

sudo -s -u hg

确保在汞柱的主目录是:

cd

并运行初始化脚本:

/usr/share/mercurial-server/init/hginit /usr/share/mercurial-server/

这将创造下必要的文件和目录/home/hgrefresh-auth命令现在应该工作。



Answer 3:

从sudo的手册页 :

-u user     The -u (user) option causes sudo to run the specified
            command as a user other than root.

所以,如果你运行sudo -u hg ,这意味着“运行以下命令为用户命名的hg ”。 是的, 这就是善变的服务器是如何工作的 :

......开发商登录为“HG”的用户,当他们使用SSH连接到存储库的主机...

这是不幸的是,“步步”指令不告诉你创建一个用户名为hg ,但是这是你需要做什么。 我不知道是什么权限的用户都需要有。

或者,你可以尝试运行sudo /usr/share/mercurial-server/refresh-auth ,并看看是否可以访问到正确的用户,因为它应该 。 但是,这可能会打破东西后,因为水银服务器的其他部分将依靠用户hg



文章来源: mercurial-server says: No section: 'paths' Must be run as the 'hg' user