【问题标题】:SVN: Force svn daemon to run under different userSVN:强制 svn 守护进程在不同的用户下运行
【发布时间】:2012-06-25 11:50:29
【问题描述】:

我有一个小型 NAS 服务器 (QNAP TS-210),板载有限的 Linux。我在本地 SVN 守护程序中运行挂钩时遇到问题。如果我直接从命令行运行它们,一切正常。如果 SVN 尝试将它们作为钩子运行,或者将它们添加到 crontab 中,然后 CRON 尝试运行它们,则两者都会失败。

有人告诉我,这是由于运行这些脚本/挂钩的用户之间存在差异。我以“admin”身份通过 SSH 登录到我的 nas,并假设 CRON 和 SVN 都在“root”下运行。似乎 root 对目标文件夹没有足够的权限(我使用 SVN post-commit-hook 将存储库导出到某个本地文件夹)或运行 SVN / CRON(SVN 在 pre-revprop-change 挂钩上也失败,即使它只包含exit 0,所以我假设 SVN 根本无法运行钩子)。或者这可能是不同的东西?

编辑:如何强制 SVN 在“admin”下运行,或者如何为“root”设置足够的权限,以便它可以像我一样(“admin”)运行 SVN 挂钩?

编辑:我的钩子脚本在/share/Sys/svn/tools_and_examples/hooks 所以,调用

ls -lh /share/Sys/svn/tools_and_examples/hooks

结果如下:

-rwxrwx--x    1 trejder  everyone      147 Jun 24 14:33 post-commit.cron*
-rw-rw----    1 admin    administ     1.9k Jun 25 12:20 post-commit.tmpl
-rw-rw----    1 admin    administ     1.6k Jun 25 12:20 post-lock.tmpl
-rw-rw----    1 admin    administ     2.2k Jun 25 12:20 post-revprop-change.tmpl
-rw-rw----    1 admin    administ     1.5k Jun 25 12:20 post-unlock.tmpl
-rw-rw----    1 admin    administ     3.3k Jun 25 12:20 pre-commit.tmpl
-rw-rw----    1 admin    administ     2.4k Jun 25 12:20 pre-lock.tmpl
-rw-rw----    1 admin    administ        6 Jun 25 12:29 pre-revprop-change
-rw-rw----    1 admin    administ     2.1k Jun 25 12:20 pre-unlock.tmpl
-rw-rw----    1 admin    administ     2.7k Jun 25 12:20 start-commit.tmpl

ls -lh /share/Sys/svn/tools_and_examples/hooks/post-commit.cron 给了我这个:

-rwxrwx--x    1 trejder  everyone      147 Jun 24 14:33 /share/Sys/svn/tools_and_examples/hooks/post-commit.cron*

希望,这会有所帮助。

【问题讨论】:

    标签: linux svn command-line


    【解决方案1】:

    对于以管理员身份启动的 cron,而不是编辑

    /etc/crontab
    

    你应该使用

    crontab -e
    

    以管理员身份登录,然后将您想要由管理员启动的任何命令/脚本放入其自己的 crontab。如果我没记错的话,它应该以“管理员”用户身份启动它

    【讨论】:

    • 没有。这不是一个纯粹的 Linux,只是一个特定的系统(QNAP 的网络附加存储 TS-210)。 Linux 板载它真的很有限,有时很奇怪。例如,我一直在编辑 /etc/config/crontab(忽略 crontab 的其他位置),以管理员身份登录,并且在重新启动 crond 之前,必须调用一个特定的脚本来“记住”我放在那里的所有内容。如果没有这个,我对 crontab 的更改将在下次系统重新启动时被覆盖并忘记。在常规 Linux 上不会发生奇怪的事情(我想),这是我在那里处理的奇怪 Linux 的一个明显例子。
    • 在“我的”crontab (/etc/config/crontab) 中,我还可以将“admin”作为额外字段,强制 CRON 在特定用户下运行特定作业。但这也改变不了任何事情。尽管脚本是由 CRON 以管理员身份运行的,但此脚本中的 svn export 命令不是而且根本不会调用。所以我需要确定,如何强制 svn 守护进程在“admin”下运行,或者如何为其当前用户添加更多权限。
    • 只是一个小通知。如果我使用crontab -e,那么我正在编辑同一个文件——即存储在我的 NAS 设备上的 /etc/config/crontab 上的文件。
    • ps -ef | grep svnserve 的输出是什么?
    • 9134 admin 568 R grep svnserve。我是 Linux 新手,但我感觉这有点不对劲。
    猜你喜欢
    • 2023-03-02
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多