linux-文件及目录权限管理

linux-文件权限管理

说明

在服务器上运行的数据越重要(如游戏数据),价值越高(如电子商城数据、银行数据),那么对权限的设定就要越详细,用户的分级也要越明确。所以,在服务器上,绝对不是所有的用户都使用root 身份登录,而且我们要尽量减少root或者杜绝root用户登录.


权限对象

文件及目录的权限主要针对三个对象
drwxr-xr-x  23 root root  4096 Apr 10 10:38 bin

属主:owner 简写:u        第2~4字母
属组:group 简写:g        第5~7字母
其他:other 简写:o        第8~10字母

文件及目录权限

 
文件及目录针对访问者都定义了三种权限:
r : Readable
w : Writeable
x : eXcutable

权限对文件的作用

1.读(r): 对文件有读(r)权限,代表可以读取文件中的数据。如果把权限对应到命令上,那么一旦对文件有读(r)权限,就可以对文件执行 cat、more、less、head、tail 等文件查看命令。


2.写(w):对文件有写(w)权限,代表可以修改文件中的数据。如果把权限对应到命令上,那么一旦对文件有写(w)权限,就可以对文件执行 vim、echo 等修改文件数据的命令。
<span style="color:red">注意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果要想删除文件,则需要对文件的上级目录拥有写权限。</span>


3.执行(x): 对文件有执行(x)权限,代表文件拥有了执行权限,可以运行。在 Linux 中,只要文件有执行(x)权限,这个文件就是执行文件了。只是这个文件到底能不能正确执行,不仅需要执行(x)权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行(x)权限是最高权限。

权限对目录的作用

1.读(r): 对目录有读 (r)权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些子文件和子目录。如果把权限对应到命令上,那么一旦对目录拥有了读(r)权限,就可以在目录下执行 ls 命令,查看目录下的内容了。


2.写(w): 对目录有写(r)权限,代表可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写(w)权限,就可以在目录下执行touch、rm、cp、mv 命令。对目录来说,写(w)权限是最高权限。


3.执行(x):目录是不能运行的,那么对目录拥有执行(x)权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行(x)权限,就可以对目录执行cd 命令,进入目录。

命令列表

命令列表:chmod chown chgrp umask

chmod

1.chmod:更改文件及目录权限(change file mode bits)
2.所在路径:/bin/chmod。 执行权限:所有用户

[root@localhost ~]# chmod [选项] 权限模式 文件名
选项
-R:递归设置权限,也就是给子目录中的所有文件设定权限

权限模式:
chmod 命令的权限模式的格式是"[ugoa] [[+-=] [perms]]",也就是"[用户身份][[赋予方式][权限]]"的格式,我们来解释一下。

用户身份:
-u:代表所有者(user)。
-g:代表所属组(group)。
-o:代也人(other)。
-a:代表全部身份(all)。

赋予方式:
-+:加入权限。
--:减去权限。
-=:设置权限。

权限:
-r:读取权限(read)。
-w:写权限(write)。
-x:执行权限(execute)。
这里我们只讲解基本权限,至于特殊权限(如 suid 、sgid 和 sbit 等),我们会在后续章节详细讲解。

数字权限:
4:代表"r"权限。
2:代表"w"权限。
1:代表"x"权限。

代码:

1.给所属用户+权限
[root@localhost ~]# chmod u+x text.log
2.给多个身份同时加入权限
[root@localhost ~]# chmod u+x,g+x text.log
3.给所有身份同时加入权限
[root@localhost ~]# chmod a+x text.log
4.用"-"减去权限
[root@localhost ~]# chmod u-x text.log
5.用"="设置权限
[root@localhost ~]# chmod u=x text.log
6.数字权限使用
[root@localhost ~]# chmod 755 text.log
表示属主为读写执行权限,属组为读执行权限,其他为读执行权限

chown

1.chown 修改文件和目录的所有者和所属组(change file owner and group)
2.所在路径:/bin/chown。 执行权限:所有用户

[root@localhost ~]# chown [选项] 所有者:所属组文件或目录
-R: 递归设置权限,也就是给子目录中的所有文件设置权限
代码:
1.设定文件属主为张三
[root@localhost ~]# chown zhangsan text.log
2.设定文件属主为张三,属组为root
[root@localhost ~]# chown zhangsan:root text.log
3.设定文件属组为root
[root@localhost ~]# chown :张三 text.log

chgrp

chgrp 更改所属组(change group)

[root@localhost ~]# chgrp [-R] 所属组 文件名(目录名)
 -R(注意是大写)选项长作用于更改目录的所属组,表示更改连同子目录中所有文件的所属组信息。
更改文件所属组:
chgrp zhangsan text.log

umask

umask 设置新建文件和目录拥有默认权限

[root@localhost ~]# umask
0022
#root用户默认是0022,普通用户默认是 0002

umask 默认权限确实由 4 个八进制数组成,但第 1 个数代表的是文件所具有的特殊权限(SetUID、SetGID、Sticky BIT),此部分内容放到后续章节中讲解,现在先不讨论。也就是说,后 3 位数字 "022" 才是本节真正要用到的 umask权限值,将其转变为字母形式为 ----w--w-。


文件和目录的真正初始权限,可通过以下的计算得到:
1.文件(或目录)的初始权限 = 文件(或目录)的最大默认权限 - umask权限
2.文件的最大默认权限是 666,换算成字母就是 "-rw-rw-rw-",umask 的值是 022,换算成字母为 "-----w--w-"。把两个字母权限相减,得到 (-rw-rw-rw-) - (-----w--w-) = (-rw-r--r--),这就是新建文件的初始权限,644
3.目录的默认权限最大可以是 777,换算成字母就是 "drwxrwxrwx",umask 的值是 022,也就是 "-----w--w-"。把两个字母权限相减,得到的就是新建目录的默认权限,即 (drwxrwxrwx) - (-----w--w-) = (drwxr-xr-x)  755

设置初始权限:

umask 033 临时设置

不过,这种方式修改的 umask 只是临时有效,一旦重启或重新登陆系统,就会失效。如果想让修改永久生效,则需要修改对应的环境变量配置文件 /etc/profile。例如:

[root@localhost ~]# vim /etc/profile
...省略部分内容...
if [ $UID -gt 199]&&[ "'id -gn'" = "'id -un'" ]; then
    umask 002
    #如果UID大于199(普通用户),则使用此umask值
else
    umask 022
    #如果UID小于199(超级用户),则使用此umask值
fi
…省略部分内容…
        

结尾

这一个黑夜的孩子,沉浸于冬天,倾心死亡不能自拔,热爱着空虚而寒冷的乡村--《春天,十个海子》

添加新评论