利用expect修改Git的hooks更新的文件归属

上次利用Git的hooks实现了更新同步文件到web目录,又出了个问题,网站访问的用户是www用户组,而更新后文件的用户组变成了用户组git,导致访问无权限。

重新修改了更新脚本post-receive,实现跟新文件后再把web目录的用户组更改为www,最主要的是使用expect来完成。

post-receive脚本中增加一行:

    #!/bin/bash
    GIT_WORK_TREE=/home/project/servers/web git checkout -f
    ./chgrp-expect root 123456

编写chgrp-expect脚本:

    #!/usr/bin/expect
    set timeout 1

    set user [lindex $argv 0]

    set passwd [lindex $argv 1]

    spawn   su - $user
    expect  ":"
    send    "$passwd\r"
    expect  "]#"
    send    "chown -R www:www /home/project/servers/web\r"
    expect  "]#"
    exit
    expect  eof

在开发机上更新远端库,就会同步更改服务器上的文件归属了。访问正常。

标签: git, hooks, expect, chown

添加新评论