git
› Pro Git
› Atlassian Git Tutorial
› Pro Git 简体中文翻译
› GitX
anyforever
V2EX  ›  git

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

  •  
  •   anyforever · Jan 2, 2013 · 12017 views
    This topic created in 5054 days ago, the information mentioned may be changed or developed.
    使用A帐户提交的Git到中心仓库,再部署到网站目录,文件的权限还是A的,但是网站文件权限一般设置一个www帐户,只用来做这个,如果这个A帐户是root的话,那么这些文件的权限就都是最高权限了,可能会严重影响到安全问题。是专门给Git配置个git用户来干这个事呢,还是直接用www?还是其它方式?
    18 replies  •  2018-03-02 16:01:12 +08:00
    cabbala
    cabbala
    Jan 2, 2013 via Android
    1
    rsync + git hooks
    cute
    cute
    Jan 2, 2013 via iPhone
    2
    也遇到这个问题
    summic
    summic
    Jan 2, 2013
    3
    我是用 git hooks 这么做的:

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

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

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

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

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

    如果sudo可以设置SUID , 那么用上一种方法即可。
    sdlearn
    sdlearn
    Mar 1, 2018
    17
    老铁,这个问题杂解决的,我也在这里蛋疼了
    anyforever
    anyforever
    OP
    Mar 2, 2018
    18
    @sdlearn 用 www 用户 git push,或者在钩子里 pull 完,更改文件权限
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1754 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 17:19 · PVG 01:19 · LAX 09:19 · JFK 12:19
    ♥ Do have faith in what you're doing.