linux 属性权限命令 | 使用方法

实验环境:Red Hat Enterprise Linux release 8.0 (Ootpa)

Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限,为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

 

文件基本属性

主要通过两条命令修改linux的文件属性

  • chown (change ownerp) : 修改所属用户与组
  • chmod (change mode) : 修改用户的权限。

用图片来表示就是,通过 chown 来授权用户,通过 chmod 为用户设置可以开门的权限。

 通过使用ll和ls命令来显示一个文件的属性以及文件所属的用户和组
[root@server test]# ls -l
总用量 0
drwxr-xr-x. 2 root root 6 4月 24 00:36 test
-rw-r--r--. 1 root root 0 4月 24 00:35 test.txt
有些文件或者文件夹为隐藏的,用ls -a查看
[root@server test]# ll -a
总用量 0
drwxr-xr-x. 3 root root 49 4月 24 01:07 .
dr-xr-xr-x. 18 root root 236 4月 24 00:35 ..
-rw-r--r--. 1 root root 0 4月 24 01:07 .a.test
drwxr-xr-x. 2 root root 6 4月 24 00:36 test
-rw-r--r--. 1 root root 0 4月 24 00:35 test.txt
linux中创建隐藏文件或文件夹的方法则是在文件或文件夹名字前加. 比如touch .a.test/mkdir .test

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

  • 当为d时则是目录
  • 当为-时则是文件
  • 若是 l 则表示为链接文档(link file)
  • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置)
  • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

 

文件基本权限

接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)(4)、 w 代表可写(write)(2)、 x 代表可执行(execute)(1)。!!!

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

由以上图片可以知,文件主要分为4个部分,第1个部分为文件属性,剩余则是为权限的部分

第2部分确定属主(该文件的所有者)拥有该文件的权限。

第3部分确定属组(所有者的同组用户)拥有该文件的权限。

第4部分其他用户拥有该文件的权限。

图片中所代表的则是,文件的拥有者有读,写,执行权限;所拥有的组有读,执行的权限;其他用户有读,执行的权限;-代表的则是没有对应的权限

其中读,写,执行有自己代表的数字,下面更改权限时会用到

  • 读=r=4
  • 写=w=2
  • 执行=x=1

 

 

更改文件属性

1.chgrp:更改文件属组

  chgrp [-R] 属组名 文件名
# chgrp -R mysql test

将test的文件所属组改为mysql,检验;-R: 递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

 [root@server test]# ll
总用量 0
drwxr-xr-x. 2 root mysql 6 4月 24 00:36 test

可看到已经改成了mysql组了

2.chown:更改文件属主,也可以同时更改文件属组

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

介绍用法,第一种单纯更改文件所属主,将test文件属主改成mysql

 # chown mysql test

第二种,将文件属主改成root,同时将文件属组改成mysql

 # chown root:mysql test

3.chmod:更改文件权限

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

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

1.用数字更改权限:

再复习下,每个权限所代表的数字:

  • 读=r=4
  • 写=w=2
  • 执行=x=1

每种身份(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 [-R] 权限代表的数字 文件或目录

例子:将test文件递归更改权限为属主为读,写,执行;属组为读,执行;其他用户为读,执行;

按照需求,属主就是4+2+1=7,属组就是4+1=5,其他用户就是4+1=5

 # chmod -R 755 test

2.用符号代表权限

还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:

  • user:用户
  • group:组
  • others:其他
  • all   (代表全部:user+group+others)

例子,更之前一样将test文件递归更改权限为属主为读,写,执行;属组为读,执行;其他用户为读,执行;

 # chmod -R u=rwx,g=rx,o=rx test

效果跟上面数字一样,只不过代码方式改变

也可以用加减法来配置属性

如:我不想给所属组和其他用户的读权限了

 # chmod g-r,o-r test

想给回去属组和其他用户读权限,用加法即可,g+r,o+r

若我想给全部人test文件都有写权限则是

 # chmod a+w test

 

 

T权限位

在Linux中,如果对一个目录具有写权限,那么我们就可以在这个目录下创建删除文件。

如果要创建这样一个目录,我们每个人都可以创建自己的文件,但是别人都不能删除或者更改自己的文件。只有自己才能更改自己的东西。

则我们要用到特殊权限位:T

可以在属主,属组,其他用户开启T权限位,更具需求自行开启

例子:给test文件属主,属组,其他用户开启T权限位

 [root@server test]# chmod a+t test
[root@server test]# ll
总用量 0
drwx-wx-wt. 2 root mysql 6 4月 24 00:36 test

可以开到权限位置已经有个t,代表已经开启了,要去掉用减号即可,a-t

 

 

ACL权限

我们想要让某个用户不具备某个权限,直接不给他分配这个目录的相应权限就行了。那么对应到Linux系统也是这样,我们给指定的用户指定目录分配指定的权限,也就是 ACL 权限分配。

简单来说,就跟window一下图片效果一样

使用介绍

setfacl [选项] [文件名]
选项:
-m        设定ACL权限
-x        删除指定的ACL权限
-b        删除所有的ACL权限
-d        设定默认ACL权限
-k        删除默认ACL权限
-R        递归设定ACL权限
  • 给用户设定 ACL 权限:setfacl -m u:用户名:权限 指定文件名
  • 给用户组设定 ACL 权限:setfacl -m g:组名:权限 指定文件名

例子,给wl用户设定acl权限只有可读

 # setfacl -m u:wl:r-- test.txt

验证

# chmod 777 test.txt
# su wl
# vi test.txt

可看到,尽管设置了777最高权限,可是因为acl权限的关系,wl用户只有可读权限,不能修改与删除这个文件

查看已经设置的ACL权限

 # getfacl test.txt

删除ACL的操作如下

删除指定用户的 ACL 权限

setfacl -x u:用户名 文件名
例子: 
# setfacl -x u:wl test.txt

删除指定用户组的 ACL 权限

 setfacl -x g:用户名 文件名
例子: 
# setfacl -x g:wl test.txt

删除文件的所有 ACL 权限

# setfacl -b test.txt

如果给父目录设定了默认的 ACL 权限,那么父目录中所有新建的子文件会继承父目录的 ACL 权限:setfacl -m d:u:用户名:权限 文件名

 

chattr权限

在linux系统中,权限最大的是root账号,但凡修改涉及到系统本身的重大权限的操作,都需要root的权限才能操作。但是有些时候也有root干不了的事情

比如:

[root@server test]# rm -rf test.txt
rm: 无法删除'test.txt': 不允许的操作

Linux chattr命令用于改变文件属性。

这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:

  • a:让文件或目录仅供附加用途。
  • b:不更新文件或目录的最后存取时间。
  • c:将文件或目录压缩后存放。
  • d:将文件或目录排除在倾倒操作之外。
  • i:不得任意更动文件或目录。
  • s:保密性删除文件或目录。
  • S:即时更新文件或目录。
  • u:预防意外删除。

比如:

让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:

# chattr +a test.txt

这样子root用户都删除不了这文件,除法再通过chatter 将a参数删除

查看是否生效

[root@server test]# lsattr test.txt
-----a------------ test.txt

可看出已经有a权限存在,成功。

若要删除这个文件了则是

# chattr -a test.txt
# rm -rf test.txt
可以成功删除了

 

 

 

 

作者: 红烧悠鸽
本文采用 CC BY-NC-SA 4.0 协议

评论

  1. ddd
    6月前
    2021-6-14 21:34:08

    师兄厉害啊

    • 悠鸽
      6月前
      2021-6-14 22:46:00

      哈哈哈,谢谢夸奖

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇