V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
anyforever
V2EX  ›  git

使用Git部署网站,大家是如何配置权限问题的?

  •  
  •   anyforever · 2013-01-02 17:33:41 +08:00 · 10972 次点击
    这是一个创建于 4345 天前的主题,其中的信息可能已经有所发展或是发生改变。
    使用A帐户提交的Git到中心仓库,再部署到网站目录,文件的权限还是A的,但是网站文件权限一般设置一个www帐户,只用来做这个,如果这个A帐户是root的话,那么这些文件的权限就都是最高权限了,可能会严重影响到安全问题。是专门给Git配置个git用户来干这个事呢,还是直接用www?还是其它方式?
    18 条回复    2018-03-02 16:01:12 +08:00
    cabbala
        1
    cabbala  
       2013-01-02 17:36:16 +08:00 via Android
    rsync + git hooks
    cute
        2
    cute  
       2013-01-02 19:15:42 +08:00 via iPhone
    也遇到这个问题
    summic
        3
    summic  
       2013-01-02 19:26:48 +08:00
    我是用 git hooks 这么做的:

    https://gist.github.com/4433947
    summic
        4
    summic  
       2013-01-02 19:27:12 +08:00
    怎么贴 gist 来着?
    summic
        5
    summic  
       2013-01-02 19:27:49 +08:00
    <script src="https://gist.github.com/4433947.js"></script>
    harmy
        6
    harmy  
       2013-01-02 19:32:32 +08:00
    用http开头就能正常显示gist
    panxianhai
        7
    panxianhai  
       2013-01-02 19:44:33 +08:00
    anyforever
        8
    anyforever  
    OP
       2013-01-02 20:58:23 +08:00
    以上各位,我明白是用git钩子来做的,我本帖的问题专门指的权限分配如何做更优
    @summic @panxianhai 你那里www-data的帐户与网站目录下的文件所属用户是同一个么?nginx下的,一般配置成www
    Kymair
        9
    Kymair  
       2013-01-02 21:55:05 +08:00
    试试专门弄一个group把git和www的用户都塞进去,然后用group权限来管理?
    *nix的文件权限系统确实有些古老了...
    summic
        10
    summic  
       2013-01-03 00:45:07 +08:00
    @anyforever 我的nginx 是给的 www-data 用户
    daweiba
        11
    daweiba  
       2013-01-03 03:54:57 +08:00
    root 用户不会影响安全问题
    只是有可能会令其他用户无法正常的操作这些文件

    我们这边目前是root用户提交的
    一切运行正常

    有洁癖的话 把设置www设置密码(没有密码的用户不能登录)
    然后把测试环境设置成公钥登陆
    最后取消密码

    以后都用www用户提交push到服务器上即可
    anyforever
        12
    anyforever  
    OP
       2013-01-03 09:00:17 +08:00
    @summic 突然又想到一个,如果是pull到远程服务器,就没办法cd了。还有就是部署到N台服务器的话。
    gamexg
        13
    gamexg  
       2013-01-03 09:16:41 +08:00
    @daweiba 会不会被人用 SUID 权限的可执行文件来获得root权限?
    anyforever
        14
    anyforever  
    OP
       2013-01-03 10:02:38 +08:00
    @daweiba www用户一般给设置nologin了,如果要让它登陆,那要多设置不少权限来控制吧
    summic
        15
    summic  
       2013-01-03 10:44:53 +08:00
    @anyforever 我们多台服务器,会有一台机器做发布服务器,pull之后rsync
    daweiba
        16
    daweiba  
       2013-01-03 15:41:50 +08:00
    @anyforever 没有密码,默认就是不能通过密码登录的,你可以建一个账号试一下。
    先建立密码只是为了设置公钥,设置完了就可以通过公钥登陆,而不用通过口令登陆了。
    这时候就可以删除密码了。
    这样其他人也是无法通过口令登陆www用户的。

    @gamexg 你可以试下ubuntu下sudo 能否设定SUID,我这边用的CentOS 新建用户默认没有sudo权限,无法测试。
    如果sudo无法设定SUID的话 ,那么就没有问题了。
    因为这样的话只有root用户才能设置SUID,如果人家得到你root用户权限了,也就没有必要再去设置SUID了

    如果sudo可以设置SUID , 那么用上一种方法即可。
    sdlearn
        17
    sdlearn  
       2018-03-01 02:24:43 +08:00
    老铁,这个问题杂解决的,我也在这里蛋疼了
    anyforever
        18
    anyforever  
    OP
       2018-03-02 16:01:12 +08:00
    @sdlearn 用 www 用户 git push,或者在钩子里 pull 完,更改文件权限
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3013 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 14:41 · PVG 22:41 · LAX 06:41 · JFK 09:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.