我已经管理一个不是很大的系统几个月了,但仍然有一些问题我不喜欢现在的处理方式。
目前,实际上只有一个用户访问服务器,因此看起来似乎没有太多麻烦,但是,该用户(以及所有其他访问服务器的用户)可以访问不断变化的 git 存储库,我需要它始终处于最新版本。前段时间,我以 root 身份创建了一个 cron 作业来拉取所有现有用户的所有存储库,但是这破坏了存储库的权限,因为文件是由 root 写入的,因此普通用户无法执行诸如“git pull”之类的操作很快。
所以,我的问题是,是否有某种方法可以让我以 root 身份更新存储库,而无需实际更改 git repo 目录和子目录的权限,或者,如果我必须创建一些循环所有现有用户的脚本,以每个用户身份登录,然后更新存储库,这样就不会破坏他们的权限。
最终目标是尽可能自动化此任务,因为手动拉取每个存储库虽然确实有效,但我不打算长期保留这种解决方案。
答案1
是的,其中之一认为root
可以做到。是更改为任意用户。
所以
as root:
foreach user: # for user in …
create a sub-shell: # (stuff todo in sub-shell)
become that user # sudo
do the work # git pull
您会发现创建子 shell 更容易,这样您就可以恢复 root 身份(不是绝对必要的,但我不知道 shell 的任何其他方式)。