- 用户简介
- 组简介
- 文件的权限
- 目录的权限
1. 用户简介
Linux是一个多用户、多用户的操作系统。一个系统同时可能有几个用户访问系统,如果我们给这些用户同一个用户名去登录系统,可能会带来不便,因为不同的用户有不同的需求,例如你自己总有一些信息不想让他人看到,或者有些个性化的系统设置,还有作为系统的管理员想限制一些用户的访问等,为不同的用户创建不同的账号,赋予不同的权限,这是为例计算机安全。
那么Linux是通过是通过什么来区分用户的?
Linux是通过uid来标示用户的,root(超级管理员)的uid是0,普通用户的uid是1-65535,系统用户uid:1-499(CentOS6),1-999(CentOS7),这个是对守护进程获取资源进行权限分配;登录用户uid:500+(CentOS6),1000+(CentOS7),用于交互式登录用。
2. 组简介
用户组是具有相同特征的用户集合体;例如我们有时需要让多个用户具有相同的权限,比如查看、修改某个文件或者目录,或者有些文件只能看不能修改等,我们可以创建个满足这个要求的组,然后把这些用户加到组里去,这样批量管理用户权限,而不用针对每个用户赋予相应的权限。
Linux是通过gid来标示组的,root组(组管理员)的gid是0,普通用户的gid是1-65535,系统用户gid:1-499(CentOS6),1-999(CentOS7);登录用户gid:500+(CentOS6),1000+(CentOS7).
3. 文件的权限
首先,我们先看下下面这个例子。
[miouqi@centos6 /]$ ls -ld app.log
-rw-r--r--. 1 miouqi miouqi 173 May 25 14:54 app.log
上面例子解析:
从左到右每项:
【权限属性列表】【引用计数】【所有者】【所属组】【大小】 【创建时间】【文件名】
权限属性列表(如上例drwxr-xr-x)为10字符:
第一个字符表示文件的类型:-:普通文件;d:目录文件;b:块设备;c:字符设备;l:符号链接文件;p:管道文件;s:套接字文件。
第2,3,4位字符依次表示文件所有者的读、写、执行权限(若无此权限,该位用-表示);
第5,6,7位字符依次表示文件所属组的读、写、执行权限(若无此权限,该位用-表示);
第8,9,10位字符依次表示其他用户的读、写、执行权限(若无此权限,该位用-表示);
例如对上例app.log文件的解读是:文件的所有者对此文件有可以读写,但是不可执行,属于文件所属组的用户对此文件只能读,非文件所有者或所属组的其他用户对此文件只能读。
修改文件所属组命令chgrp [选项] 组名 文件名;修改文件所有者:chown [选项]用户名[:用户组] 文件名 ;修改文件访问权限命令:chmod [选项] 0755 文件名,详细的命令解析后面博客补上。
4.目录的权限
文件是存放实际数据的所在,目录主要的内容是记录文件名列表,文件名与目录有强烈的关联。
r(读):可以查看此目录中文件列表,不能访问文件(即不能查看目录下的文件,不能删除目录下的文件(此目录属于用户的家目录除外),不能进入(cd)目录);
例1:用root账号为普通用户xh创建如下的实验环境
[root@centos6 tmp]# ls -al test/
total 8
dr--------. 2 xh xh 4096 May 30 14:13 .
drwxrwxrwt. 32 root root 4096 May 30 14:10 ..
-rw-r--r--. 1 xh xh 0 May 30 14:13 a
-rw-r--r--. 1 xh xh 0 May 30 14:13 b
-rw-r--r--. 1 xh xh 0 May 30 14:13 c
用xh的账号登录Linux系统,对文件夹test及其目录下文件进行如下操作:
[xh@centos6 ~]$ ls -al /tmp/test
ls: cannot access /tmp/test/c: Permission denied
ls: cannot access /tmp/test/..: Permission denied
ls: cannot access /tmp/test/.: Permission denied
ls: cannot access /tmp/test/a: Permission denied
ls: cannot access /tmp/test/b: Permission denied
total 0
d????????? ? ? ? ? ? .
d????????? ? ? ? ? ? ..
-????????? ? ? ? ? ? a
-????????? ? ? ? ? ? b
-????????? ? ? ? ? ? c
[xh@centos6 ~]$ cd /tmp/test
-bash: cd: /tmp/test: Permission denied
[xh@centos6 ~]$ rm /tmp/test/a
rm: cannot remove `/tmp/test/a': Permission denied
w(写):可以让使用者删除、更新、新建文件或目录(这些实现的前置条件是必须有x权限);
例2:对例1的实验环境修改,用root账号将test目录的权限通过chmod u=w /tmp/test命令修改,其他不变
[xh@centos6 ~]$ ls -al /tmp/test
ls: cannot open directory /tmp/test: Permission denied
[xh@centos6 ~]$ cd /tmp/test
-bash: cd: /tmp/test: Permission denied
[xh@centos6 ~]$ rm -r /tmp/test/a
rm: cannot remove `/tmp/test/a': Permission denied
[xh@centos6 ~]$ rename /tmp/test/a /tmp/test/f
[xh@centos6 ~]$ mv /tmp/test/a /tmp/a
mv: cannot stat `/tmp/test/a': Permission denied
x:可以使用ls -l查看此目录中文件列表,也可以cd进入此目录(执行权限是基本权限);
例3:对例1的实验环境修改,用root账号将test目录的权限通过chmod u=wx /tmp/test命令修改,其他不变,
[xh@centos6 ~]$ cd /tmp/test
[xh@centos6 test]$ ls
ls: cannot open directory .: Permission denied
[xh@centos6 test]$ cat a
abc
[xh@centos6 test]$ echo 1234 | tee a
1234
[xh@centos6 test]$ rm a
[xh@centos6 test]$ cat a
cat: a: No such file or directory
[xh@centos6 test]$ mv b ../
[xh@centos6 test]$ cd ..
[xh@centos6 tmp]$ ls -ld b
-rw-r--r--. 1 xh xh 0 May 30 14:13 b
X(大写X):只给目录x权限,不给文件x权限(与-R配合使用,针对目录及其子目录增加x权限,对文件无执行的文件,不会增加x权限,任意三种人有执行权限,也会增加x权限)
例4:用root账号为普通用户xh创建如下的实验环境
[root@centos6 tmp]# ls -al test
total 12
drwx------. 3 xh xh 4096 May 30 15:09 .
drwxrwxrwt. 32 root root 4096 May 30 15:01 ..
-rwxr--r--. 1 xh xh 0 May 30 15:06 a
-rw-r--r--. 1 xh xh 0 May 30 15:06 b
-rw-r--r-x. 1 xh xh 0 May 30 14:13 c
drw-r--r--. 2 xh xh 4096 May 30 15:09 dir
用xh的账号登录Linux系统,对文件夹test及其目录下文件进行如下操作:
[root@centos6 ~]# chmod -R g+X /tmp/test/
[root@centos6 ~]# ls -al /tmp/test/
total 12
drwx--x---. 3 xh xh 4096 May 30 15:09 .
drwxrwxrwt. 32 root root 4096 May 30 15:01 ..
-rwxr-xr--. 1 xh xh 0 May 30 15:06 a
-rw-r--r--. 1 xh xh 0 May 30 15:06 b
-rw-r-xr-x. 1 xh xh 0 May 30 14:13 c
drw-r-xr--. 2 xh xh 4096 May 30 15:09 dir