Linux用户文件权限
chmod
Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
只有文件所有者和超级用户可以修改文件或目录的权限。
权限的三种表示方法
| 十进制 | 权限 | rwx | 二进制 |
|---|---|---|---|
| 7 | 读 + 写 + 执行 | rwx | 111 |
| 6 | 读 + 写 | rw- | 110 |
| 5 | 读 + 执行 | r-x | 101 |
| 4 | 只读 | r– | 100 |
| 3 | 写 + 执行 | -wx | 011 |
| 2 | 只写 | -w- | 010 |
| 1 | 只执行 | –x | 001 |
| 0 | 无 | — | 000 |
对应的示意图:

语法
|
|
参数说明
mode : 权限设定字串,格式如下 :
|
|
其中:
u表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o表示其他以外的人,a表示这三者皆是。+表示增加权限,-表示取消权限,=表示唯一设定权限。r表示可读取,w表示可写入,x表示可执行,X表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他参数说明:
-c: 若该文件权限确实已经更改,才显示其更改动作-f: 若该文件权限无法被更改也不要显示错误讯息-v: 显示权限变更的详细资料-R: 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)--help: 显示辅助说明--version: 显示版本
实例
将文件 file1.txt 设为所有人可读取 :
|
|
或
|
|
将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
|
|
将 ex1.py 设定为只有该文件拥有者可以执行 :
|
|
将目前目录下的所有文件与子目录皆设为任何人可读取 :
|
|
此外chmod也可以用数字来表示权限如 :
|
|
用户组管理
|
|
查看当前目录下所有文件的用户组和权限
|
|
Git用户权限控制
赋予Git用户sudo权限
|
|
|
|
可以看到以下内容:
|
|
在 root ALL=(ALL:ALL) ALL 这一行下面添加 {Git用户名} ALL=(ALL:ALL) ALL
保存退出后,修改回文件权限:
|
|
关闭Git用户shell权限
|
|
将最后一行的 {git用户名}❌1001:1001:,,,:/home/git:/bin/bash 修改为 {git用户名}❌1001:1001:,,,:/home/git:/usr/bin/git-shell
,也即将/home/git:/bin/bash改为/home/git:/usr/bin/git-shell
使用密钥进行SSH登录(免密码)
|
|
然后将本地的公钥复制到服务器的 authorized_keys 文件里 (本地的公钥即本地执行 cat ~/.ssh/id_rsa.pub 查看的内容,若无法运行则需创建)。
注意:收集所有需要登录的用户的公钥,就是他们自己的 id_rsa.pub 文件,把所有公钥导入到 /home/git/.ssh/authorized_keys 文件里,一行一个。
配置好密钥后,就可以免密码直接用ssh登录账户了。
如果有必要,还应该关闭所有用户的密码登录,选择密钥登录,并使用跳板机,fail2ban等工具来加强安全性,并定期检查账号登录日志,防患于未然。