跟着老万学linux运维(4)-文件权限

版权声明:本文为博主原创文章,创作不易,转载请注明出处。 https://blog.csdn.net/w1014074794/article/details/87100538

关于文件权限

由于Linux的设备和文档都是以文件的形式存在,因此Linux最基本的安全控制就是对文件的访问控制。Linux文件或文件夹权限是用来控制用户访问文件、文件夹或执行程序的一套机制。

三种基本权限:
根据用户对文件或目录操作种类的不同,linux定义了三种基本的权限:
读,用r标识,对文件来说,表示可以查看文件内容,对文件夹来说,表示可以查看文件夹下的文件,可以用数值4来表示;
写,用w标识,对文件来说,表示可以向文件中写入或者插入内容,对文件夹来说,表示可以在文件夹下删除、添加或者修改文件名称,可以用数值2来表示;
执行,用x标识,对文件来说,表示文件可以以程序来执行,对文件夹来说,表示可以访问子目录及文件及shell中cd到此目录,可以用数值1来表示。

三种权限范围控制:
同时,用户和文件存在以下关系:
文件所有者(owner):拥有文件的用户。创建文件时是创建文件的用户(可用whoami命令查看)。
所属组(group):文件所属的组。创建文件时用户的组(可用id命令查看)。
其他用户(other):既不是文件所有者,也不是文件所属的组的成员的其他用户。
一个文件或文件夹的权限,其实就是对这三种关系的用户规定是否具有可读,可写,可执行的权限,通常文件或文件夹的权限可以通过ls -l命令来查看:
在这里插入图片描述

mode:标识了owner、group及other用户对该文件的操作权限;
owner:规定文件的拥有者;
group:规定文件归属的用户组。
mode用长度为10的字符串来表示 “-rw-rw-r–”,第一位字符表示类型“-”表示文件,“d”表示目录,“l”表示链接文件。后面9位需要每三位为一组来理解:
在这里插入图片描述

如上图所示,每一组的第一位标识是否具有读权限,‘r’表示具有读权限,‘-’表示禁止读权限,第二位标识是否具有写权限,‘w’表示具有写权限,‘-’表示禁止写权限,第三位标识是否具有可执行权限,‘x’表示具有可执行权限,‘-’表示禁止可执行权限。从左往右分为三组,第一组标识owner的权限,第二组表示group的权限,第三组标识其他用户的权限。

举个例子,如上图所示的文件 public_excutable权限为”-rwxr-xr-x”, 怎么理解呢?首先拆开来看,owner的权限是”rwx”,表示对文件具有可读可写可执行的权限,group的权限是”r-x”,表示对该文件只有可读和可执行的权限,other用户的权限也是”r-x”,表示对该文件只有可读和可执行的权限。

文件权限除了用字符串表示外,也可使用八进制数来表示权限,即用一个四位八进制数来表示,其中最高位表示特殊权限,随后的三位依次是所有者权限、组权限和其他人权限。每一个八进制位的权限数值是文件具有的相应权限所对应的数值之和,还是以文件public_excutable为例子:

0755 = rwxr-xr-x = 0(4 + 2 + 1)(4 + 1)(4 + 1)

权限 字符 数值
读权限 r 4
写权限 w 2
执行权限 x 1

如果要查看文件的数值权限,可以通过stat命令进行查看:

root@d076cf119be7:/ $ stat test_file
File: test_file
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 29h/41d Inode: 13429 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-07-26 02:26:26.723187697 +0000
Modify: 2018-07-26 02:26:26.723187697 +0000
Change: 2018-07-26 02:26:26.723187697 +0000
Birth: -

系统默认的文档权限控制?

umask
当我们登录系统,创建一个新的文件或者目录时,会被分配一个默认权限,这个最初的权限是如何被分配的呢?在Linux系统中,通常管理员通过设置umask值来定义创建目录和文件时的默认权限。

什么是umask?系统管理员必须要为你设置一个合理的 umask值,以确保你创建的文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限。一般来说,umask命令是在/etc /profile文件中设置的,每个用户在登录时都会引用这个文件,所以如果希望改变所有用户的umask,可以在该文件中加入相应的条目。如果希望永久 性地设置自己的umask值,那么就把它放在自己$HOME目录下的.profile或.bash_profile或.bashrc文件中。

umask值类似于文件的权限值,使用三位八进制数来表示,比如002,设置范围(000~777),以掩码的形式,定义需要禁止那些用户的何种权限,第一位表示禁止owner的权限值,第二位表示禁止group用户的权限值,第三位表示禁止other用户的权限值。

以umask值为002为例,翻译成权限字符串 “— — -w-“,表示禁止other用户使用写权限

使用umask命令:

root $ umask
0022
设置umask

root $ umask 033
root $ umask
0033

修改文件或文件夹权限

核心命令chmod,chown

上文讲述了如何通过umask来定义文件或者文件夹的默认权限,那文件创建后,权限如何变更呢?Linux提供了chmod命令来修改文件权限,chmod可以给文件或者目录的指定用户增加或者降低权限,比如给owner和group增加执行权限:

chmod ug+x test_file
以上的例子中u和g分别表示user,group,是用户类型:

u – user
g – group
o – other
a – all
‘+’ 表示增加权限,是执行的动作:

+ 增加权限
降低权限
‘x’ 表示要增加的文件权限:

r 读
w 写
x 可执行
一些常见的例子:

给所有用户增加写权限:

chmod a+w test_file

给other用户增加执行权限:

chmod o+x test_file

禁止group和other用户的执行权限:

chmod go-x test_file

禁止所有用户的执行权限:

chmod a-x test_file

也可以直接修改文件的权限值:

chmod 644 test_file

修改文件或文件夹的归属

文件的归属可以被root账户修改,chown 命令修改文件的owner,chgrp 修改文件归属的group,

root:/home/user5 $ chown user4 test
root:/home/user5 $ ls -la
-rw------- 1 user4 user5 0 Aug 2 01:11 test

root:/home/user5 $ chgrp user2 test
root:/home/user5 $ ls -la
-rw------- 1 user4 user2 0 Aug 2 01:11 test

#通过chown命令同时分配所属用户和属组
root:/home/user5 $ chown user2:user2 test
root:/home/user5 $ ls -la
-rw------- 1 user2 user2 0 Aug 2 01:11 test

至此,基本介绍完了文件权限,我自己也从头到尾又梳理了一遍,Linux文件权限的控制相对松散,要保证系统的安全性,系统管理员必须制订严格复杂的策略,同时需要控制对root权限的使用范围,尤其是对一些系统服务或进程,要避免使用root账户。

参考:

https://ithorseman.wordpress.com/2018/07/09/linux-账户及安全管理(二)/

猜你喜欢

转载自blog.csdn.net/w1014074794/article/details/87100538