Linux权限基础知识

基本权限和归属

Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。

为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限:

● chown (change owner) : 修改所属用户与组。

● chmod (change mode) : 修改用户的权限。

下图中通过 chown 来授权用户,通过 chmod 为用户设置可以开门的权限。

查看文件属性

在 Linux 中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组:ls -l (可简写ll)或 ls -ld 数据

在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。

● 当为 d 则是目录

● 当为 - 则是文件;

● 若是 l 则表示为链接文档(link file);表示快捷方式 /tmp #有附加权限

● 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);

● 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。

● 读取:允许查看内容-read r

● 写入:允许修改内容-write w

● 可执行:允许运行和切换-excute x

1. tips:

● 对于文本文件[rwx] :

● r读取权限:cat、less、grep、head、tail

● w写入权限:vim、> 、 >>

● x可执行权限:Shell与Python

● 对于目录[rwx] :

● r读取权限:ls命令查看目录内容

● w写入权限:能够创建、删除、修改等目录的内容

● x 执行权限:能够cd切换到此目录下(进入此目录)

每个文件的属性由左边第一部分的 10 个字符来确定(如下图)。

从左至右用 0-9 这些数字来表示。

0 位确定文件类型,第 1-3位确定属主(该文件的所有者)拥有该文件的权限。

第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。其中,第1、4、7 位表示读权限,如果用 r 字符表示,则有读权限,如果用 - 字符表示,则没有读权限;

2、5、8 位表示写权限,如果用 w 字符表示,则有写权限,如果用 - 字符表示没有写权限;第 3、6、9 位表示可执行权限,如果用 x 字符表示,则有执行权限,如果用 -字符表示,则没有执行权限。

Linux文件属性有两种设置方法,一种是数字,一种是符号。

Linux 文件的基本权限就有九个,分别是owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。

Linux中判断用户具备的权限:

1.查看用户,对于该数据所处的身份,顺序所有者>所属组>其他人,原则是匹配及停止

2.查看相应身份的权限位

chown 修改归属关系

•chown命令 (change owner) : 修改所属用户与组。

–chown 属主 文件...

–chown 属主:属组 文件...

–chown :属组 文件...

-R:递归修改归属关系

修改所有者与所属组:

chown 所有者用户名称:所属组名称 /目录或文件

修改所有者:chown 所有者用户名 目录或文件

修改所属组:chown :所属组 目录或文件

递归修改归属关系:

chown -R 所有者:所属组 目录或文件

chmod更改文件9个属性

符号设置

命令格式1:chmod [ugoa] [+-=][rwx] 文件... #修改权限

归属关系[ugoa]

● 所有者(属主):拥有此文件/目录的用户-user

● 所属组(属组):拥有此文件/目录的组-group

● 其他用户:除所有者、所属组以外的用户-other

此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:

chmod

u

g

o

a

+(加入)

-(除去)

=(直接设定)

r

w

x

文件或目录

例如:如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:

# touch test1 #创建test1文件

# ls -l test1 #查看test1默认权限

-rw-r--r--. 1 root root 0 3月 12 19:27 test1

# chmod u=rwx,g=rx,o=r test1 #修改test1权限

# ls -l test1

-rwxr-xr--. 1 root root 0 3月 12 19:27 test1

chmod a-x test1 #拿掉全部人的可执行权限

chmod u-w /nsd #所有者去掉w权限

chmod u+w /nsd #所有者加上w权限

chmod g+w /nsd #所属组加上w权限

chmod g=r /nsd #所属组重新定义权限

chmod a=rwx /nsd #a表示所有人都有对该目录rwx权限

命令格式2:

chmod -R[ugoa] [+-=][rwx] 文件... #递归修改权限

1. [root@localhost ~]# mkdir -p /opt/aa/bb/cc

2. [root@localhost ~]# chmod -R o=--- /opt/aa #所有者设为没有可执行权限

3. [root@localhost ~]# ls -ld /opt/aa

4. [root@localhost ~]# ls -ld /opt/aa/bb

5. [root@localhost ~]# ls -ld /opt/aa/bb/cc

chown -R lisi:tmooc /opt/aa #递归修改所有者为lisi,所属组为tmooc

数字设置权限

• 权限位的8进制数表示,各权限的分数对照表如下:

r:4          w:2             x:1

数字类型

权限

rwx

7

读 + 写 + 执行

rwx

6

读 + 写

rw-

5

读 + 执行

r-x

4

只读

r--

3

写 + 执行

-wx

2

只写

-w-

1

只执行

--x

0

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx--- 分数则是:

● owner = rwx = 4+2+1 = 7

● group = rwx = 4+2+1 = 7

● others= --- = 0+0+0 = 0

所以等一下我们设定权限的变更时,该文件的权限数字就是 770

变更权限的指令 chmod 的语法是这样的:

chmod     xyz   文件或目录选项与参数

chmod    [-R]    xyz 文件或目录选项与参数

xyz: 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。

-R: 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更

ps:chmod 700 /目录 #修改目录权限

ls -ld /目录 #查看目录权限

附加权限

附加权限数字表示:

● 利用数字4表示suid

● 利用数字2表示sgid

● 利用数字1表示t

粘滞位,Sticky Bit 权限

Sticky权限是Linux特殊权限的一种,主要用来对公共目录的w权限进行限制。

注意事项:适用于目录,用来限制用户滥用写入权、其他人必须具备可执行权限、显示占用的是其他人的x位置。

–占用其他人(Other)的 x 位 x-可执行

–显示为 t 或 T,取决于其他人是否有 x 权限

–适用于目录,用来限制用户滥用写入权

–在设置了t权限的目录下,即使用户有写入权限,也不能删除或改名其他用户文档

tips:chmod o+t 目录 #限制用户权限

Set GID权限(SGID权限)

SGID是Linux特殊权限的一种,其作用主要体现如下:

1) 在一个具有SGID权限的目录下,新建的文档会自动继承此目录的属组身份。

注意事项:对可执行的程序/目录有效、可执行程序所属组必须具备可执行权限、显示占用的是所属组的x位置。

–占用属组(Group)的 x 位

–显示为 s 或 S,取决于属组是否有 x 权限

s表示原先有x执行权限,S表示原先没有

–对目录有效

–在一个具有SGID权限的目录下,新建的文档会自动继承父目录的属组身份

chown :tmooc /nsd18 #修改所属组

ls -ld /nsd18

chmod g+s /nsd18 #赋予SGID特殊权限

mkdir /nsd18/abc01 #在/nsd18下新建目录

ls -ld /路径/目录/子目录 #文件文档与父目录同属组

附加权限Set UID(SUID)权限(了解)

占用属主(User)的 x 位

显示为 s 或 S,取决于属主是否有 x 权限

s表示原先有x执行权限,S表示原先没有

tips: chmod u+s /usr/bin/hahadir

仅对可执行的程序有意义

当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限

tips:mkdir -m 700 /opt/cbd03 #创建目录时,指定目录的权限

umask值 文件/目录的默认权限

需要记住并理解umask值的作用,它决定着这个Shell环境创建文件以及目录的默认权限。

• 新建文件/目录的默认权限

– 一般文件默认均不给 x 执行权限

– 其他取决于 umask(权限掩码) 设置

– 新建目录默认权限为755 ,777-umask值后三位

– 新建文件默认权限为644 ,666-umask值后三位

umask #查看umask

umask -s #显示新建目录的默认权限

mkdir -m 777 /nsd26 #-m无视umask值创建数据指定数据的权限

ls -ld /nsd26 #查看权限

ACL策略管理setfacl

•文档归属的局限性:

–任何人只属于三种角色:属主、属组、其他人

–针对特殊的人实现更精细的控制

ACL 权限可以针对节点设置相关读写等权限,保障数据安全性。

ACL策略应用的情况是,当所有者、所属组、其他人三个归属关系,三种身份的权限都不能满足某个用户或组的权限设置。这个时候ACL可以为这个用户或组单独设置权限,使Linux权限划分设置更加灵活。

permissions 可以指定不同的权限范围及角色。

•acl访问策略作用:

–能够对个别用户、个别组设置独立的权限

Linux中判断用户具备的权限:

1.首先查看该用户或者组是否有ACL策略

2.查看用户,对于该数据所处的身份,顺序所有者>所属组>其他人,原则是匹配及停止

3.查看相应身份的权限位

getfacl 文件或目录 #查看文件ACL策略

•setfacl命令

–格式:

setfacl [选项] u:用户名:权限文件... #修改文件用户acl策略

setfacl [选项] g:组名:权限 文件... #修改文件组acl策略

•常用命令选项

-m修改ACL策略

-x:清除指定的ACL策略

-b:清除所有已设置的ACL策略

-R:递归设置ACL策略

setfacl -m u:用户名:权限rwx 文件或目录 #单独修改赋予用户权限

setfacl -x u:用户名 文件或目录 #删除文档中指定用户ACL权限

setfacl -b 文件或目录 #清除目录所有用户ACL策略

setfacl -m u:需拉黑用户名:--- 文件或目录 #ACL策略-黑名单的使用(单独拒绝某些用户,将权限设置为---)

setfacl -Rm u:用户名:权限rwx /路径/文件或目录 #-R:递归设置ACL策略

文档权限常用命令

1. ls -ld /路径/目录 #查看文件权限及归属关系

2. chgrp [-R] 属组名 文件名 #递归更改文件属组

3. chown [–R] 所有者 文件名 #更改文件所有者(owner)

4. chown [-R] 所有者:属组名 文件或目录名 #同时更改文件所有者和文件所属组

5. chmod [-R] xyz(r4w2x1) 文件或目录 #使用属性数值变更文件权限

6. chmod [-R] [-ugoa] [+-=] [rwx] 文件或目录 #使用符号类型改变文件权限

7. getfacl 文件或目录 #查看文件ACL策略(优先级较高)

8. setfacl [选项] u:组名:权限 文件... 选项:m、x、b、R

9. setfacl [选项] g:组名:权限 文件... #修改文件组acl策略

10. setfacl -m u:用户名:权限rwx 文件或目录 #更改文件访问控制列表策略,u为单独修改赋予用户权限

11. setfacl -x u:用户名 文件或目录 #删除文档中指定用户ACL权限

12. setfacl -b 文件或目录 #清除目录所有用户已设置的ACL策略

13. setfacl -m u:需拉黑用户名:--- 文件或目录 #ACL策略-黑名单的使用(单独拒绝某些用户,将权限设置为---)

14. setfacl -Rm u:用户名:权限rwx /路径/文件或目录 #-R:递归设置ACL策略

15. umask #查看当前umask值,需用最大权限777减去022 即当前权限

16. umask –S #另外一种查看方式,-S选项是直接显示wrx默认权限

17. chmod u+s/bin/mymd1 #添加SUID权限,继承属主及权限

18. chmod g+s /nsdpublic/ #为nsdpublic添加SGID权限,继承所属组

19. chmod o+t 目录 #限制用户滥用写入权(Sticky权限)

20. lsattr /etc/passwd # 查看文件的特殊属性

# 扩展命令:修改文件属性

21. chattr +i 文件 # 修改属性,不允许对文件做任何操作,只能看

22. chattr -i 文件 # 去除文件i属性

23. chattr +a 文件 # 文件只允许追加

24. chattr -a 文件 # 去除文件a属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值