1. 文件的类型与权限

命令行输入ls -al

1
2
3
4
5
6
7
8
9
10
root@ubuntu-512mb-nyc1-01:~# ls -al
total 28
drwx------ 4 root root 4096 Feb 9 00:34 .
drwxr-xr-x 23 root root 4096 Feb 9 00:31 ..
-rw------- 1 root root 10 Feb 9 00:34 .bash_history
-rw-r--r-- 1 root root 3106 Oct 22 2015 .bashrc
drwx------ 2 root root 4096 Feb 9 00:33 .cache
-rw-r--r-- 1 root root 0 Feb 9 00:31 .cloud-locale-test.skip
-rw-r--r-- 1 root root 148 Aug 17 2015 .profile
drwx------ 2 root root 4096 Feb 9 00:31 .ssh

第一个字符代表这个文件的类型(如目录、文件或链接文件等等):

  • 当为[ d ]则是目录
  • 当为[ - ]则是文件
  • 若是[ l ]则表示为连结档(link file);
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)

接下来的字符中,以三个为一组,且均为「rwx」 的三个参数的组合

[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute) 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]

  • 第一组为『文件拥有者的权限』
  • 第二组为『同群组的权限』
  • 第三组为『其他非本群组的权限』

-rw-r--r--为例:

  • - 表示是个文件
  • rw- 当前用户 可读可写不可执行
  • r-- 用户所在用户组 可读 不可写 不可执行
  • r-- 其他用户 可读 不可写 不可执行

2. 如何修改文件的属性和权限

记住三个命令:

  1. chgrp:改变用户所在用户组
  2. chown: 改变文件所有者
  3. chmod: 改变文件的权限

chgrp 命令

1
chgrp [-R] dirname/filename ...

[-R] : 递归修改,即该目录下所有文件

chown 命令

1
2
3
chgrp [-R] 账号名 文件或者目录
chgrp [-R] 账号名:组名 文件或者目录
chgrp [-R] 账号名.组名 文件或者目录

账号名.组名 如果账号名中有点会造成误判 比如Yun.kou.group 建议用 冒号

chmod 命令

Linux中用九位三组来表示文件的权限
三组:own ,group, other
权限:read, write,execute(rwx)
如果没有对应的权限用-代替
rwx正好和可以用二进制表示,有权限记1 没有记0
-rwxrwxrwx 对应 -[111][111][111]三位转成十进制 为 -777
这样就可以用数字来改变文件的权限

1
chmod [-R] 644 dirname/filename ...

644 每个数位转成二进制数 110100100 再转成rwx模式,rw-r—r—

有几个例子加强记忆
-rw——- (600) 只有所有者才有读和写的权限
-rw-r–r– (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx—— (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx–x–x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限

chmod 也可以制定修改

u 代表当前用户
g 代表所在群组
o 表示其他用户
a 表示所有

+ 表示增加权限
- 表示删除权限
= 表示赋值权限

具体用法

1
2
3
4
5
6
7
chmod [-R] u=rwx,g=rx,o=r dirname/filename ...
ls -al dirname/filename ...
-rwxr-xr-- ...
chmod [-R] a+w dirname/filename ...
-rwxrwxrw- ...
chmod [-R] a-x dirname/filename ...
-rw-rw-rw- ...

= 赋值将影响 rwx 的值 而 - + 只改变修改值 对其他没有影响