一章让你明白什么是权限

目录

🌏什么是Linux 权限?

🌏文件:

🌏目录: 

🌏查看文件的权限 

🌏权限针对的三类用户:

🌏ls -l 命令显示的意义

🌏修改文件的属性和权限

🌏隐藏权限

🌏默认权限与隐藏权限

🌏默认权限:umask

🌏隐藏权限

🪐三、特殊权限和Facl

🪐SUID:

🪐SGID: 

🪐Sticky (BIT):

🪐FACL  


什么是Linux 权限?

在Linux系统中,权限用于控制对文件和目录的访问和操作。每个文件和目录都有一个与之关联的权限设置

每个部分都有三个权限:读取(r)、写入(w)和执行(x)

不同文件类型的有意义:针对普通文本文件和目录,相同的写法,但代表的意义不同

文件:

r:可读,可以使用类似cat等命令查看文件内容;
w:可写,可以编辑或删除此文件;
x: 可执行,executable,可以命令提示符下当作命令提交给内核运行
r 单独存在,可查看文件内容
w 单独存在,看不到文件内容,但是可以强制修改文件内容,会覆盖原文件内容,单独存在,意义不大
x 单独存在,毫无意义

目录: 

r: 可以对此目录执行ls以列出内部的所有文件;
w: 可以在此目录创建、修改、删除文件;
x: 可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息;
只有 r 权限时,可以读 ( 有报错 ) ,不能写,也不能进入目录
只有 w 权限时,毫无意义
只有 x 权限时,只能进入,不能读,不能写
目录的 rw 权限:可以查看内容,不可以进入目录,不能删除目录或它里面的文件
目录的 rx 权限:可以查看内容,可以进入目录,不可以修改目录的内容
目录的 wx 权限:不可以查看目录内容,可以进入目录,可以删除
目录下的文件,前提是你需要知道目录下有什么文件

查看文件的权限 

 可以使用 ls -l ,如果是目录需要加上 -d选择,否则值限制此目录下有什么文件 

[root@mysql tmp]# ls
test test.txt
[root@mysql tmp]# ll test.txt
-rw-r--r-- 1 root root 0 Apr 20 09:01 test.txt
[root@mysql tmp]# ll -d test
drwxr-xr-x 2 root root 6 Apr 20 09:01 test

权限针对的三类用户:

权限由三个部分组成:所有者、组和其他用户
u: user 属主
g: group 属组
o: other 其它用户

ls -l 命令显示的意义

 

[root@mysql tmp]# ls -l test.txt
-rw-r--r-- 1 root root 0 Apr 20 09:01 test.txt

第一栏代表这个文件的类型与权限

第一个字符代表这个文件是 目录、文件或链接文件等等
当为 [ d ] 则是目录,例如上表文件名为 “.config” 的那一行; 当为 [ - ] 则是文件,例如上表文件名为 “initial-setup-ks.cfg” 那一行;
若是 [ l ] 则表示为链接文件( link file );
若是 [ b ] 则表示为设备文件里面的可供储存的周边设备(可随机存取设备);
若是 [ c ] 则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设备)
接下来的字符中,以三个为一组,且均为 “rwx” 的三个参数的组合。其中,[ r ]代表可读( read )、 [ w ] 代表可写( write )、 [ x ] 代表可执行(execute ).要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ] 而已。
第一组为 文件拥有者可具备的权限
第二组为 加入此群组之帐号的权限
第三组为 非本人且没有加入本群组之其他帐号的权限
举例:
若有一个文件的类型与权限数据为“-rwxr-xr--” ,请说明其意义为何?
所有者:可读、可写、可执行( rwx
所属组:本例中为可读可执行( rx
其他人:只读

 

修改文件的属性和权限

chgrp 改变文件所属群组
chown 改变文件拥有者
chmod 改变文件的权限 , SUID, SGID, SBIT 等等的特性
举例:
1.  改变文件的拥有者。将 test.txt 文件的拥有者改为 test 用户。
[root@mysql tmp]# ll test.txt
-rw-r--r-- 1 root root 0 Apr 20 09:01 test.txt
[root@mysql tmp]# id test
uid=1001(test) gid=1001(test) groups=1001(test)
[root@mysql tmp]# chown test test.txt
[root@mysql tmp]# ll test.txt
-rw-r--r-- 1 test root 0 Apr 20 09:01 test.txt
2.   同样将文件的小组改为 test.
[root@mysql tmp]# ll test.txt
-rw-r--r-- 1 test test 0 Apr 20 09:01 test.txt
3.   同样也可以用 chown 同时改变拥有者和所属组
[root@mysql tmp]# useradd t2
[root@mysql tmp]# chown t2.t2 test.txt
[root@mysql tmp]# ll test.txt
-rw-r--r-- 1 t2 t2 0 Apr 20 09:01 test.txt

//或者换一种写法效果一样

[root@mysql tmp]# useradd t3
[root@mysql tmp]# chown t3:t3 test.txt
[root@mysql tmp]# ll test.txt
-rw-r--r-- 1 t3 t3 0 Apr 20 09:01 test.txt
修改文件权限, chmod 命令的使用
  chmod

u

g

o

a

+  (加入)

  -(除去)

     =  (设置)

r

w

x

文件或者目录

隐藏权限

默认权限与隐藏权限

除了基本 r, w, x 权限外,在 Linux 传统的 Ext2/Ext3/Ext4 文件系统下,我们还可以设置其他的系统隐藏属性,这部份可使用chattr 来设置,而以lsattr 来查看,最重要的属性就是可以设置其不可修改的特性!让连文件的拥有者都不能进行修改!这个属性可是相当重要的,尤其是在安全机制上面(security )!比较可惜的是,在 CentOS 7.x 当中利用 xfs 作为默认文件系统,但是 xfs 就没有支持所有的 chattr 的参数了!仅有部份参数还有支持而已

默认权限:umask

创建一个新的文件或目录时,它的默认权限会是什么?那就与 umask 有关 了!umask 是什么呢? umask 就是指定“目前使用者在创建文件或目录时候的权限默认值”,

[root@mysql tmp]# umask
0022
[root@mysql tmp]# umask -S
u=rwx,g=rx,o=rx

umask:遮罩码,反向掩码 影响用户新创建的文件和目录的默认权限

666-umask
777-umask
在默认权限的属性上,目录与文件是不一样的。我们知道 x 权限对于目录是非常重要的!但是一般文件的创建则不应该有执行的权限,因为一般文件通常是用在于数据的记录嘛!当然不需要执行的权限了。因此,默认的情况如下:
若使用者创建为 文件 则默认 没有可执行( x )权限 ,亦即只有 rw这两个项目,也就是最大为666 分,默认权限如下:
-rw-rw-rw-
若使用者创建为 目录 ,则由于 x 与是否可以进入此目录有关,因此默认为所有权限均开放,亦即为777 分,默认权限如下:
drwxrwxrw
因为 umask 022 ,所以 user 并没有被拿掉任何权限,不过 group 与others 的权限被拿掉了 2 (也就是 w 这个权限),那么当使用者:
创建文件时:( -rw-rw-rw- - -----w--w- ==> -rw-r--r-- ---
>644
创建目录时:( drwxrwxrwx - d----w--w- ==> drwxr-xr-x --
--->755

隐藏权限

//查看文件的隐藏权限,lsattr命令

[root@mysql tmp] # lsattr test.txt
---------------- test.txt
//chattr 更改文件的隐藏权限。
a :让文件或目录仅供附加用途;
b :不更新文件或目录的最后存取时间;
c :将文件或目录压缩后存放;
d :将文件或目录排除在倾倒操作之外;
i :不得任意更动文件或目录;
s :保密性删除文件或目录;
S :即时更新文件或目录;
u :预防意外删除

 最重要的当属 +i 与 +a 这个属性了。+i 可以让一个文件无法被更动,对于需要强烈的系统安全的人来说,真是相当的重要的!里头还有相当多的属性是需要 root 才能设置

举例:
-i 选择的运用
[root@mysql tmp]# pwd
/tmp
[root@mysql tmp]# touch t1.txt
[root@mysql tmp]# chattr +i t1.txt
[root@mysql tmp]# lsattr t1.txt
----i----------- t1.txt
[root@mysql tmp]# rm -f t1.txt
rm: cannot remove ‘t1.txt’: Operation not permitted //即使
是root也没有权限删除和移动
[root@mysql tmp]# mkdir testdir
[root@mysql tmp]# mv t1.txt testdir/
mv: cannot move ‘t1.txt’ to ‘testdir/t1.txt’: Operation
not permitted
2 -a 选项的运用。文件内容只能追加,不能覆盖。
[root@mysql tmp]# cat t1.txt
123
[root@mysql tmp]# chattr +a t1.txt
[root@mysql tmp]# lsattr t1.txt
-----a---------- t1.txt
[root@mysql tmp]# echo 456 > t1.txt
-bash: t1.txt: Operation not permitted
[root@mysql tmp]# echo 456 >> t1.txt

三、特殊权限和Facl

SUID:

运行某程序时,相应进程的属主是程序文件自身的属主,而不是用户本身了, 只对二进制程序有效 , 执行者对于程序需要有 x 权限
例子: passwd 命令 需要在 /etc/shadow 中写入密码
ls -l /bin/cat
ls -l /etc/shadow
chmod u+s file (如果本身具有 x ,为 s ,否则为 S
总结: 其他人,运行SUID的文件时,就临时拥有了SUID文件所属者的权限。

SGID 

对于文件: 运行某程序时,相应进程的属组是程序文件自身的属组,而不是用户本身的基本组
对于目录
用户对此目录有 rx 权限可以进入目录
用户进入此目录后,有效用户组会变成该目录的用户组
若用户在此目录有 w 权限,则用户创建的文件用户组与该目录用户组相同

Sticky (BIT):

只针对目录有效 , 当用户对目录拥有 wx 权限时,用户在该目录创建的文件或目录,只有自己与root 才可以删除。
在一个公共目录,每个人都可以创建文件,删除自己的文件,但是不能删除别人的文件(冒险位,粘贴位)

FACL  

文件系统访问控制列表
FACL:filesystem access control list
利用文件的扩展属性,保存了额外的访问控制权限
getfacl 查看、 setfacl 设置
语法: setfacl [-bkRd] [-m|-x acl 参数 ] 目标文件名
选项与参数:
-m: 设置后续的 acl 参数,不可与 -x 一起使用
-x: 删除后续的 acl 参数,不可与 -m 一起使用
-b: 删除所有的 acl 参数
-k: 删除默认的 acl 参数
-R: 递归设置 acl 参数
-d: 设置默认 acl 参数,只对目录有效

 

 

 

 

 

 

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值