【发布时间】:2016-04-05 16:11:12
【问题描述】:
我在我的 svn 链接目录中限制了某个文件 settings.py 的权限,以便它只能由 sudo 用户和 apache 读取,该用户名是 www-data。所以,在settings.py 上,我设置了sudo chmod 640 settings.py 和sudo chown www-data:www-data settings.py。我仍然希望我的非特权用户能够svn update 和svn commit,所以对于sudo visudo,我已经设置了
unprivileged_user ALL = /usr/bin/svn commit *, /usr/bin/svn update *, \
/usr/bin/svn update
这样该用户仍然可以执行sudo svn commit 和sudo svn update。由于settings.py 的权限有限,它将无法执行普通的svn commit 或svn update。如果非特权用户尝试这样做,svn 会发出一条消息,指出工作副本已锁定。但是我注意到,当我执行sudo svn update 时,unprivileged_user 正在以root 身份更新,因此从svn 存储库更新的文件现在由root:root 拥有,具有644 权限。这与我试图让settings.py 归www-data:www-data 拥有的想法背道而驰。我该怎么做才能使 www-data 始终是所有者并且 rwx 权限保持不变?
【问题讨论】:
-
我认为问题的根源在于你试图对在它所在的 repo 中工作的用户保密文件。如果你可以避免这样做,那么你就避免了你的问题.
-
@skyler 但这是我在这里要做的主要事情。但即使我将它分开,每当我
svn updatesvn 更改文件所有权和权限时......我想我需要阅读 umask 和 apache 的 uid。 -
问题是你的权限在svn中不存在,所以不能更改。此外,通过允许任何人执行
sudo svn commit,您实际上已经失去了所有安全性,因为有人可以使用它以 root 身份生成编辑器,从而允许他们读取和写入系统上的任何文件。 -
svn commit生成一个编辑器来编辑提交消息。 -
如果我们不再关注
svn commit,不如想办法让svn update在不更改所有者/权限的情况下发生?
标签: linux ubuntu svn version-control permissions