事件经过
某天,Pupuu第一次接触服务器资源部署,发现新上传的测试脚本没执行权限。 疑问:
- 1.同样一个工程里git拉下来,为什么其他文件有执行权限,这个文件没有。
- 2.有什么办法可以指定某个目录下
于是,去本地跑了一下,发现本地就没有权限,chmod添加权限后,去服务器上拉代码后也能执行了。
- 所以,git拉下来的文件的执行权限,和提交时的一致。
- 于是,上边的疑问就演变成了,有什么快捷的方式,可以让文件创建时就有执行权限。
调研结论
经过一圈谷歌,得出了以下几个结论:
- 1.设置umask(权限补码),可以统一修改新创建文件的默认权限
- 2.可惜的是,Linux新创建文件,并不允许直接拥有执行权限
- 3.只能,新建文件后,chmod修改权限。之后,git提交的文件,服务器上就不用再修改权限了。
Linux权限小知识点
字段
-rwxr--r--
| 第一位(文件/文件夹) | 用户u | 组用户g | 其他用户o |
|---|---|---|---|
| -/d | rw- | r-- | r-- |
chmod
chmod u+w filename->-rwxr--r--chmod u=rwx,go+x filename->-rwxr-xr-x
umask
- umask效果正好和chmod相反,设置的是权限补码(去掉的权限)
- 权限最高7=4+2+1
- 一般默认的umask是022,文件夹权限755,文件权限644(
-rw-r--r--) - 更改umask命令,设置补码000(最高权限,文件夹777,文件666
-rw-rw-rw-)
umask 000