Linux 协同工作小记
背景和需求
- 多人在一台 Linux 服务器上协同工作
- 权限、责任分明
- 存在私有目录和公共目录
- 成员各自本地开发,均具备发布到测试环境的权限
- 只有组长具备发布到生产环境的权限
- 一键发布,省时安全
- 需要妥善处理覆盖文件可能存在的问题
创建工作组和用户
创建一个工作组,以及若干个用户,使得每个用户都在并且仅在该工作组下。
1 | ## 创建名为 worker 的工作组 |
修改 umask
将 umask 值修改为 002,这样,所创建的文件/目录权限默认就是 664/775,使同组成员可以修改。
默认值若不是 002,可修改 /etc/profile
,也可以在 ~/.bash_profile
中添加 umask 002
同步脚本
思想: 使用 tar
命令将需要同步的文件进行打包,通过 scp
上传到服务器,再登录上服务器进行解压覆盖原工程(这里有个前提,本地和服务器已经建立好免密码登录),然后将本地和服务器端的压缩包删除。
关键代码
1 | tar --exclude ".svn" \ |
服务端
服务端方面,需要对共有目录设置相关权限。
共有的测试目录下,所有的文件所在组都应该是此前设定的组,如 worker;并且,权限均为 775 或者 664。
而生产目录下,权限则应该设定为 755 或者 644。
命令参考
1 | sudo chown -R someone.worker my_proj |
参考链接: https://wiki.archlinux.org/index.php/Users_and_groups_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)