1、Linux权限基础与

1.1 ugoa基础概念

u 代表所有者(user)
g 代表所有者所在的组群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o

1.2 文件目录权限

1.2.1 文件和目录权限描述

文件的存取权限
读权限(r)表示只允许指定用户读取相应文件的内容,而禁止对它做任何的更改操作。将所访问的文件的内容作为输入的命令都需要有读的权限。例如cat、more等。
写权限(w)表示允许指定用户打开并修改文件。例如命令vi、cp等。
执行权限(x)表示允许指定用户将该文件作为一个程序执行。
目录的存取权限
读权限(r)表示可以列出存储在该目录下的文件,即读目录内容列表。这一权限允许Shell使用文件扩展名列出相匹配的文件名。
写权限(w)表示允许用户从目录中删除或添加新的文件,通常只有文件主才有写权限。
执行权限(x)表示允许用户在目录中查找,并能用cd命令将工作目录改到该目录。如果一个目录只有读权限,那么只能读取该目录下面的所有文件

1.2.2 Linux四种权限

可读(r)read r
可写(w)write w
可执行(x)execute x
无权限(-) -

1.2.3 权限rwx-

利用ls -l命令可以看到某个文件或目录的权限,它以显示数据的第一个字段为准。第一个字段由10个字符组成,如下:
第一位表示文件类型,-表示文件,d表示目录
image.png

1.2.4 rwx用数字代替

r ——————4
w —————-2
x ——————1
- ——————0

1.2.5 权限举例

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

2、Linux修改权限命令

2.1 chgrp、chown和chmod

chgrp :改变文件所属群组
chown :改变文件拥有者
chmod :改变文件的权限

2.2 chgrp 改变文件所属群组

  1. chgrp
  2. 选项与参数:
  3. -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录
  4. 都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。

用例:
image.png
其中test1为用户组

2.3 chown 改变用户拥有者

chown   用户:组   文件
chown –R 用户名:用户所在用户组的用户组名 目录名 (R表示递归)

比如要修改文件test.txt的拥有者为user1 则用:chown user1 test.txt
要修改文件test.txt的拥有组为user1则用:chown :user1 test.txt
要同时修改拥有者和拥有组,则用:chown user1:user1 test.txt

举例:
image.png

2.4 chmod :改变文件的权限

用法

  • 通过符号组合的方式更改目标文件或目录的权限。
  • 通过八进制数的方式更改目标文件或目录的权限。
chmod  [八进制|符号组合]  文件/目录

# 添加组用户的写权限。
chmod g+w ./test.log
# 删除其他用户的所有权限。
chmod o= ./test.log
# 使得所有用户都没有写权限。
chmod a-w ./test.log
# 当前用户具有所有权限,组用户有读写权限,其他用户只有读权限。
chmod u=rwx, g=rw, o=r ./test.log
# 等价的八进制数表示:
chmod 754 ./test.log
# 将目录以及目录下的文件都设置为所有用户拥有读写权限。
# 注意,使用'-R'选项一定要保留当前用户的执行和读取权限,否则会报错!
chmod -R a=rw ./testdir/
# 根据其他文件的权限设置文件权限。
chmod --reference=./1.log  ./test.log

image.png
image.png

2.3 ls -l详细解释

image.png
image.png
第一栏
第一个字符字母含义:
d:目录
-:文件
l:连结档(link file);
b:装置文件里面的可供储存的接口设备(可随机存取装置);
c:装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。
第一组:文件拥有者的权限
第二组:同群组的权限
第三组:其他非本群组的权限
第二栏表示有多少链接数(文件夹数+2)
第三栏表示这个文件(或目录)的『拥有者账号』
第四栏表示这个文件的所属群组
第五栏为这个文件的容量大小,默认单位为bytes;
1G = 1024M && 1M = 1024kb && 1Kb = 1024bites
第六栏为这个文件的建档日期或者是最近的修改日期:

3、反掩码

3.1 概述

我们都知道在linux下创建一个文件或者目录之后是可以通过chmod等命令进行权限设置,来达到给当前用户、用户组用户以及其他用户分配不同的访问权限。那么,我们新创建的目录和文件本身也是有它的默认权限的,这个默认权限是什么,就是由权限掩码umask所确定的。它的功能可以说与chmod刚好相反的,代表默认拿走的也就是说不要的权限。

3.1 命令:umask

[root@my-local ~]# umask 
0022
  - 第一位0: 文件特殊权限
  - 002 : 文件默认权限
[root@my-local ~]# umask -S
u=rwx,g=rx,o=rx
# -S 以符号的形式显示

image.png

3.2 文件和目录默认权限

在目录和文件的默认权限属性是不同的,因为对于一个目录来说它的x权限也就是执行权限是很重要的,进入目录等操作都是需要目录具有执行权限的,而对于文件来说,一般情况都是用于数据的记录操作,所以一般不需要执行权限。从而,在linux下默认的情况是这样的:

▶ 如果用户创建的是目录,则默认所有权限都开放,为777,默认为:drwxrwxrwx<br />    ▶ 如果创建的是文件,**默认没有x权限**,那么就只有r、w两项,最大值为666,默认为:-rw-rw-rw-

那么之前所说的拿走的权限就是这里这个默认值要减掉的权限,r、w、x分别是4、2、1,要拿掉读权限就输入4,拿掉写权限就输入2,以此类推。
umask为022,也就是说,对于当前用户没有拿掉权限,group用户和other用户都被拿走了w权限,所以此时如果用户进行创建目录和文件的时候,默认权限是会进行如下的减法操作:
新建文件:666-022=644(-rw-r—r—)
新建目录:777-022=755(-rwx-r-xr-x)

3.3 修改umask值

临时修改: umask 0002
永久修改: vi /etc/profile
source /etc/profile

3.4 隐藏权限

3.4.1 隐藏权限概念

有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了。chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux系统都是2.6以上内核了。通过chattr命令修改属性能够提高系统的安全性
不适合的目录:/、/dev、/tmp、/var目录

3.4.2 隐藏权限命令

3.4.2.1 chattr 修改隐藏权限命令
这两个命令是用来查看和改变文件、目录特殊属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的

chattr  参数  文件
常用参数:
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
lsattr命令是显示chattr命令设置的文件属性。

image.png
image.png
3.4.2.2 lsattr 查看隐藏权限命

lsattr /etc/resolv.conf