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
等工具来加强安全性,并定期检查账号登录日志,防患于未然。