Linux> 文件与存取权限
1. 用户和权限
Linux规定了4种不同类型用户:
- 文件主 owner;
- 同组用户 group;
- 可以访问系统的其他用户 others;
- 超级用户 root,具体管理系统的特权,拥有所有权限;
用户有3种访问文件/目录的方式的权限类型:读权限 r,写权限 w,可执行/查找权限 x。只有用户具备对应权限,才能允许进行相应操作。
每个文件的属组和权限类型对应关系,见下图
2. 查看Linux 权限
输入命令$ ls -l
,可以查看当前目录下所有文件权限信息。
$ ls -l
-rwxr-xr-x 1 martin martin 11016 3月 20 10:45 a.out
drwxr-xr-x 2 martin martin 4096 3月 21 10:26 makefile
-rw-r--r-- 1 martin martin 156 3月 20 10:45 test.log
-rw-r--r-- 1 martin martin 193 3月 20 10:37 test_memleak.c
-rw-r--r-- 1 martin martin 667 3月 20 16:37 test_timer.c
-rwxr-xr-x 1 martin martin 8480 3月 20 16:37 timer
3. Linux权限表示
Linux中如何表示权限?
从ls -l的输出结果来看,可以知道系统用了十位(如-rwxr-xr-x)来表示权限。对权限的表示形式做简单分析:
-rwxr-xr-x => -rwx r-x r-x 按属组分成3段,
第一段,"-"表示是文件类型,"rwx"表示拥有者有读、写、执行权限;
第二段,"r-x"表示同组用户具有读、执行权限,不具备写权限;
第三段,"r-x"表示其他组用户具有读、执行权限,不具备写权限;
drwxr-xr-x => 分成3段:
第一段,"drwxr"表示是目录类型,"rwx"表示拥有者具有读、写、执行权限;
第二段,"r-x"表示同组用户具有读、执行权限,不具备写权限;
第三段,"r-x"表示其他组用户具有读、执行权限,不具备写权限;
-rw-r--r-- => 分成3段:
第一段,"-"表示是文件类型,"rw-"表示拥有者有读、写权限,不具备执行权限;
第二段,"r--"表示同组用户具有读权限,不具备写、执行权限;
第三段,"r--"表示同组用户具有读权限,不具备写、执行权限;
- 8进制形式表示
经常看到0644,0755(八进制)这样的数字来表示权限。那么它们具体代表什么意思呢?
0644,0755经常用于open() 创建文件时指定权限。
--- -> 000 -> 0 (no read, write, execute)
--x -> 001 -> 1 execute, (no read, write)
-w- -> 010 -> 2 write, (no read, execute)
-wx -> 011 -> 3 write, execute, (no read)
r-- -> 100 -> 4 read, (no write, execute)
r-x -> 101 -> 5 read, execute, (no write)
rw- -> 110 -> 6 read, write, (no execute)
rwx -> 111 -> 7 read, write, execute
因此,
0644 - 文件拥有者具备读、写权限,不具有执行权限;同组用户具备读权限,不具有写、执行权限;其他组用户具备读权限,不具有写、执行权限;
0755 - 文件拥有者具备读、写、执行权限;同组用户具备读、执行权限,不具有写权限;其他组用户具备读、执行权限,不具有写权限;