Bor*_*bev 6 linux permissions file-permissions
我有一个我似乎无法解决的无聊问题。
我想做什么?
post-review --repository-url=http://xxx.xxx.xxx.xxx/svn/testRepo2 --revision-range=6:7 --server=http://reviews.example.test/ --username=reviewposter --password=mydullpass --submit-as=admin -p --target-groups=reviewers
Run Code Online (Sandbox Code Playgroud)
当我从以我的用户身份登录的 bash 中尝试此操作时,一切正常。评论发布,发布等 ==> 所有权限和其他杂项设置都可以。
当我从 SVN 的 post-commit 钩子尝试这个时会发生什么?
资源已提交但 svn 操作挂起 - 实际上 post-commit 钩子没有完成。
问题缩小到什么?
post-review 以执行 post-commit 挂钩的用户身份执行 - 在本例中为 www-data Apache 的用户。即当我将命令作为 www-data 运行时:
sudo -u www-data post-review --repository-url=http://xxx.xxx.xxx.xxx/svn/testRepo2 --revision-range=6:7 --server=http://reviews.example.test/ --username=reviewposter --password=mydullpass! --submit-as=admin -p --target-groups=reviewers -d
Run Code Online (Sandbox Code Playgroud)
我得到(注意 post-review 命令中的 -d 参数 - DEBUG):
RBTools 0.4.1
Home = /home/borislav
Password for 'www-data':
Run Code Online (Sandbox Code Playgroud)
这是它挂起等待输入密码的地方。提交操作无法完成,它只是停留在那里。我已经在这篇文章中与ReviewBoard 的谷歌小组的人讨论过这个问题。
另一方面,当我对调试输出执行相同的命令但作为 myuser 我得到:
RBTools 0.4.1
Home = /home/borislav
HTTP GETting api/
HTTP GETting http://reviews.example.test/api/info/
Using the new web API
TTP GETting http://reviews.example.test/api/repositories/
HTTP GETting http://reviews.example.test/api/repositories/1/
HTTP GETting http://reviews.example.test/api/repositories/1/info/
HTTP GETting http://reviews.example.test/api/repositories/2/
HTTP GETting http://reviews.example.test/api/repositories/2/info/
HTTP GETting http://reviews.example.test/api/repositories/3/
HTTP GETting http://reviews.example.test/api/repositories/3/info/
HTTP GETting http://reviews.example.test/api/repositories/4/
HTTP GETting http://reviews.example.test/api/repositories/4/info/
Attempting to create review request on http://xxx.xxx.xxx.xxx/svn/testRepo2 for None
Submitting the review request as admin
HTTP POSTing to http://reviews.example.test/api/review-requests/: {'submit_as': 'admin', 'repository': 'http://xxx.xxx.xxx.xxx/svn/testRepo2'}
Review request created
Attempting to set field 'target_groups' to 'reviewers' for review request '22'
HTTP PUTting to http://reviews.example.test/api/review-requests/22/draft/: {'target_groups': 'reviewers'}
Uploading diff, size: 2316
HTTP POSTing to http://reviews.example.test/api/review-requests/22/diffs/: {'basedir': '/'}
Publishing
HTTP PUTting to http://reviews.example.test/api/review-requests/22/draft/: {'public': 1}
Review request #22 posted.
http://reviews.example.test/r/22/
Run Code Online (Sandbox Code Playgroud)
所以实际上所有与发布/发布等相关的工作都是有效的。
ReveiwBoard 的一位开发人员表示,“我们不显示字符串“Password for ''”。所以这完全来自其他东西。”
我确信这是某种执行许可。它应该在 Ubuntu Server 上运行,所以想想 Debian。
我想知道它是否与 Ubuntu 中的“无 root 登录”范例有任何联系。
我还没有尝试过其他 Linux 发行版,这不是一个真正的选择,因为 SVN 服务器托管在 Ubuntu 服务器上。
您可以查看我与 ReviewBoard 护目镜小组的人进行的讨论。在后检查二进制位于:/usr/local/bin/post-review
我尝试为www-data添加权限,以便能够在 sudoers 文件中执行后期审查,但没有运气。
你能想到什么解决办法?
提前致谢,鲍里斯拉夫。
密码提示实际上来自svn,而不是来自post-review。post-review 调用 svn 二进制文件来检索存储库中的更改。
作为您的用户,您看不到密码提示,因为您已经通过身份验证并且 svn 已存储您的身份验证信息。您还没有以 www-data 用户身份执行此操作,因此 svn 会要求您输入密码。
解决此问题的最简单方法是 su 作为 www-data 用户并向存储库进行身份验证,以便缓存凭据。
归档时间: |
|
查看次数: |
1241 次 |
最近记录: |