我正在尝试使用Gitolite获得一个相当简单的部署过程,用于Node应用程序。我有Gitolite设置和在我的服务器上工作,我能够推动它很好。通过Gitolite部署节点应用程序和post-receive钩子
Gitolite正在用户git
下运行,我设置了一个node
用户,我希望用它来运行Node应用程序。
我的计划是将Node应用程序推送到Gitolite,然后使用post-receive挂钩脚本将应用程序文件移动到应用程序所在的目录,本例中为/var/local/node-apps/my-node-app/
。我创建这样的节点app文件夹:
sudo mkdir -p /var/local/node-apps/my-node-app
sudo chown node /var/local/node-apps/my-node-app
的问题是,我是一个Unix的小白,我没有得到我的头一轮的文件/文件夹的权限和wotnot。
/var/local/node-apps
(也/var/local/node-apps/my-node-app
)由node
用户所拥有的,所以当用户git
试图结帐到这个位置,我得到了一堆许可被拒绝错误。我使用的是在后得到的命令是:
GIT_WORK_TREE=/var/local/node-apps/my-node-app git checkout -f
而且我得到的错误是这样的:
remote: error: git checkout-index: unable to create file XXXX (Permission denied)
remote: fatal: cannot create directory at 'XXXX': Permission denied
什么是解决它的最好方法?我需要授予git
用户无密码sudo权限su
作为node
用户吗?或者可以通过更改组和文件夹权限以某种方式修复?或者完全不同的方法?我迷路了!
谢谢!
谢谢! 在你引用的例子中,这个人基本上通过添加sudoers文件来解决他的问题。用他的方法考虑是否有任何安全隐患? – WildService
@Wintamute脚本(在'suoders'文件中引用)需要由root进行控制(为了确保它不能被修改以执行其他任何操作)。除此之外,你有使用sudo通常的利弊:http://serverfault.com/questions/140633/security-issue-of-linux-sudo-command – VonC
啊,我明白了,是有道理的。在他的例子中,他实际上追加了三行“sudoers”。 'git ALL =(root)NOPASSWD:/ usr/local/sbin/prgetsimpleappscom','git ALL =(root)NOPASSWD:/ bin/sh'和'git ALL =(root)NOPASSWD:/ bin/sh/usr/local/sbin中/ prgetsimpleappscom'。这三个都是必要的吗? – WildService