Linux 权限管理的有关命令

chgrp   //修改文件和目录的所属组

chown    //修改文件和目录的所有者和所属组

chmod   //修改文件或目录权限

umask    //默认权限的设定和修改

setfacl和getfacl  //ACL权限设置

chattr    //修改文件或目录的隐藏属性

lsattr    //查看文件或目录的隐藏属性

setfacl              //细分LInux下的文件权限

getfacl              //显示文件或目录的ACL

 #点击命令可跳转到下方关于该命令的相关信息

 想了解相关命令请前往:Linux权限管理详解 (biancheng.net)

chgrp命令:修改文件和目录的所属组

格式:[root@localhost ~]# chgrp [-R] 所属组 文件名(目录名)

-R(注意是大写)选项长作用于更改目录的所属组,表示更改连同子目录中所有文件的所属组信息。

用此命令需要注意的一点是,要被改变的群组名必须是真实存在的,否则命令无法正确执行,会提示 "invaild group name"。

举例:

[root@localhost ~]# groupadd K2    #新建用于测试的组K1

[root@localhost ~]# chgrp K1 test.txt   #修改text.txt文件的所属组为K1

[root@localhost ~]# ll test.txt        #查看txst.txt文件

 

 

chown命令:修改文件和目录的所有者和所属组

格式:[root@localhost ~]# chown [-R] 所有者 文件或目录

-R(注意大写)选项表示连同子目录中的所有文件,都更改所有者。

如果需要同时更改所有者和所属组,chown 命令的基本格式为:

[root@localhost ~]# chown [-R] 所有者:所属组 文件或目录

另外需要注意的一点是,使用 chown 命令修改文件或目录的所有者(或所属者)时,要保证使用者用户(或用户组)存在,否则该命令无法正确执行,会提示 "invalid user" 或者 "invaild group"。

举例:

 

 

chmod命令:修改文件或目录的权限

chmod命令:使用数字修改文件的权限

格式:chmod [-R] 权限值 文件名

 

例子:

chmod -R 777 /home/linux

 

 

 

权限范围的表示法如下:

u User,即文件或目录的拥有者;
g Group,即文件或目录的所属群组;
o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
a All,即全部的用户,包含拥有者,所属群组以及其他用户;
r 读取权限,数字代号为“4”;
w 写入权限,数字代号为“2”;
x 执行或切换权限,数字代号为“1”;
- 不具任何权限,数字代号为“0”;
s 特殊功能说明:变更文件或目录的权限。

 

 

 

命令中各选项的含义为: 

 

    -c : 若该档案权限确实已经更改,才显示其更改动作 

 

    -f : 若该档案权限无法被更改也不要显示错误讯息 

 

    -v : 显示权限变更的详细资料 

 

    -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更) 

 

  --help : 显示辅助说明 

 

  --version : 显示版本

 

操作对象who可是下述字母中的任一个或者它们的组合:

 

   u 表示“用户(user)”,即文件或目录的所有者。

 

   g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。

 

   o 表示“其他(others)用户”。

 

   a 表示“所有(all)用户”。它是系统默认值。

 

操作符号可以是:

 

   + 添加某个权限。

 

   - 取消某个权限。

 

   = 赋予给定权限并取消其他所有权限(如果有的话)。

 

设置 mode 所表示的权限可用下述字母的任意组合:

 

   r 可读。

 

   w 可写。

 

    x 可执行。

 

   X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。

 

   s 在文件执行时把进程的属主或组ID置为该文件的文件属主。

 

       方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。

 

   t 保存程序的文本到交换设备上。

 

   u 与文件属主拥有一样的权限。

 

   g 与和文件属主同组的用户拥有一样的权限。

 

   o 与其他用户拥有一样的权限。

 

文件名:以空格分开的要改变权限的文件列表,支持通配符。

 

r 代表读,w 代表写,x 代表执行,

 

如果可读,权限是二进制的100,十进制是4;

 

如果可写,权限是二进制的010,十进制是2;

 

如果可运行,权限是二进制的001,十进制是1;

 

 

 

具备多个权限,就把相应的 4、2、1 相加就可以了:

 

若要 rwx 则 4+2+1=7

 

若要 rw- 则 4+2=6

 

若要 r-x 则 4+1=5

 

若要 r-- 则 =4

 

若要 -wx 则 2+1=3

 

若要 -w- 则 =2

 

若要 --x 则 =1

 

若要 --- 则 =0

 

实例

 

将文件 1.txt 设为所有人皆可读取 :

chmod ugo+r 1.txt

 

 

将文件 file1.txt 设为所有人皆可读取 :

chmod a+r 1.txt

 

 

 

将文件 1.txt 与 2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w 1.txt 2.txt

 

 

 

将 1.py 设定为只有该文件拥有者可以执行 :

chmod u+x 1.py

 

 

 

将目前目录下的所有文件与子目录皆设为任何人可读取 :

chmod -R a+r *

 

 

 

此外chmod也可以用数字来表示权限如 :

chmod 777 file

 

 

 

语法为:

chmod abc file

 

 

 

linux中chmod权限的用法

 

 

 

chmod ABC file

 

其中A、B、C各为一个数字,分别表示User、Group、及Other的权限。

 

A、B、C这三个数字如果各自转换成由“0”、“1”组成的二进制数,则二进制数的每一位分别代表一个角色的读、写、运行的权限。比如User组的权限A:

 

如果可读、可写、可运行,就表示为二进制的111,转换成十进制就是7。

 

如果可读、可写、不可运行,就表示为二进制的110,转换成十进制就是6。

 

如果可读、不可写、可运行,就表示为二进制的101,转换成十进制就是5。

 

一些人说的“4=r,2=w,1=x”的意思是:

 

为不同的角色分配不同的权限,放在一起,就出现 777、677这样的数字了。 

 

你也可以用 chmod u+x  file  的方式为User组添加运行权限。

 

Linux 系统中,文件的基本权限由 9 个字符组成,以 rwxrw-r-x 为例,我们可以使用数字来代表各个权限,各个权限与数字的对应关系如下:

r--->4

w-->2

x-->1

由于这 9 个字符分属 3 类用户,因此每种用户身份包含 3 个权限(r、w、x),通过将 3 个权限对应的数字累加,最终得到的值即可作为每种用户所具有的权限。

拿 rwxrw-r-x 来说,所有者、所属组和其他人分别对应的权限值为:

所有者 = rwx = 4+2+1 = 7
所属组 = rw- = 4+2 = 6
其他人 = r-x = 4+1 = 5

所以,此权限对应的权限值就是 765

 

使用数字修改文件权限格式:

root@localhost ~]# chmod [-R] 权限值 文件名

-R(注意是大写)选项表示连同子目录中的所有文件,也都修改设定的权限。

举例:对 .bashrc 目录文件的权限修改

[root@localhost ~]# ls -al .bashrc
-rw-r--r--. 1 root root 176 Sep 22 2004 .bashrc
[root@localhost ~]# chmod 777 .bashrc
[root@localhost ~]# ls -al .bashrc
-rwxrwxrwx. 1 root root 176 Sep 22 2004 .bashrc

再举个例子,通常我们以 Vim 编辑 Shell 文件批处理文件后,文件权限通常是 rw-rw-r--(644),那么,如果要将该文件变成可执行文件,并且不让其他人修改此文件,则只需将此文件的权限该为 rwxr-xr-x(755)即可

chmod命令使用字母修改文件权限

既然文件的基本权限就是 3 种用户身份(所有者、所属组和其他人)搭配 3 种权限(rwx),chmod 命令中用 u、g、o 分别代表 3 种身份,还用 a 表示全部的身份(all 的缩写)。另外,chmod 命令仍使用 r、w、x 分别表示读、写、执行权限。

 

 

 

例如,如果我们要设定 .bashrc 文件的权限为 rwxr-xr-x,则可执行如下命令:

 

[root@localhost ~]# chmod u=rwx,go=rx .bashrc
[root@localhost ~]# ls -al .bashrc
-rwxr-xr-x. 1 root root 176 Sep 22 2004 .bashrc
 [root@localhost ~]# ls -al .bashrc


再举个例子,如果想要增加 .bashrc 文件的每种用户都可做写操作的权限,可以使用如下命令:

-rwxr-xr-x. 1 root root 176 Sep 22 2004 .bashrc
[root@localhost ~]# chmod a+w .bashrc
[root@localhost ~]# ls -al .bashrc
-rwxrwxrwx. 1 root root 176 Sep 22 2004 .bashrc

 

Linux ACL权限设置(setfacl和getfacl)

格式:[root@localhost ~]# getfacl 文件名          //用于查看文件或目录当前设定的 ACL 权限信息

   [root@localhost ~]# setfacl 选项 文件名       //可直接设定用户或群组对指定文件的访问权限

选项功能
-m 参数 设定 ACL 权限。如果是给予用户 ACL 权限,参数则使用 "u:用户名:权限" 的格式,例如 setfacl -m u:st:rx /project 表示设定 st 用户对 project 目录具有 rx 权限;如果是给予组 ACL 权限,参数则使用 "g:组名:权限" 格式,例如 setfacl -m g:tgroup:rx /project 表示设定群组 tgroup 对 project 目录具有 rx 权限。
-x 参数 删除指定用户(参数使用 u:用户名)或群组(参数使用 g:群组名)的 ACL 权限,例如 setfacl -x u:st /project 表示删除 st 用户对 project 目录的 ACL 权限。
-b 删除所有的 ACL 权限,例如 setfacl -b /project 表示删除有关 project 目录的所有 ACL 权限。
-d 设定默认 ACL 权限,命令格式为 "setfacl -m d:u:用户名:权限 文件名"(如果是群组,则使用 d:g:群组名:权限),只对目录生效,指目录中新建立的文件拥有此默认权限,例如 setfacl -m d:u:st:rx /project 表示 st 用户对 project 目录中新建立的文件拥有 rx 权限。
-R 递归设定 ACL 权限,指设定的 ACL 权限会对目录下的所有子文件生效,命令格式为 "setfacl -m u:用户名:权限 -R 文件名"(群组使用 g:群组名:权限),例如 setfacl -m u:st:rx -R /project 表示 st 用户对已存在于 project 目录中的子文件和子目录拥有 rx 权限。
-k 删除默认 ACL 权限。

 

 

chattr命令详解:修改文件系统的权限属性

格式:[root@localhost ~]# chattr [+-=] [属性] 文件或目录名     //专门用来修改文件或目录的隐藏属性,只有 root 用户可以使用。 

 

属性选项功能
i 如果对文件设置 i 属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;
如果对目录设置 i 属性,那么只能修改目录下文件中的数据,但不允许建立和删除文件;
a 如果对文件设置 a 属性,那么只能在文件中増加数据,但是不能删除和修改数据;
如果对目录设置 a 属性,那么只允许在目录中建立和修改文件,但是不允许删除文件;
u 设置此属性的文件或目录,在删除时,其内容会被保存,以保证后期能够恢复,常用来防止意外删除文件或目录。
s 和 u 相反,删除文件或目录时,会被彻底删除(直接从硬盘上删除,然后用 0 填充所占用的区域),不可恢复。

 

lsattr命令:查看文件系统属性

格式:[root@localhost ~]# lsattr [选项] 文件或目录名     //用于显示文件或目录的隐藏属性

使用 chattr 命令配置文件或目录的隐藏属性后,可以使用 lsattr 命令查看

常用选项有以下 3 种:

  • -a:后面不带文件或目录名,表示显示所有文件和目录(包括隐藏文件和目录)
  • -d:如果目标是目录,只会列出目录本身的隐藏属性,而不会列出所含文件或子目录的隐藏属性信息;
  • -R:和 -d 恰好相反,作用于目录时,会连同子目录的隐藏信息数据也一并显示出来。


setfacl              //细分LInux下的文件权限

格式:setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...

setfacl命令可以用来细分linux下的文件权限。
chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限。
换句话说,setfacl可以更精确的控制权限的分配。
比如:让某一个用户对某一个文件具有某种权限。

这种独立于传统的u,g,o的rwx权限之外的具体权限设置叫ACL(Access Control List)
ACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。
如,某一个文件,不让单一的某个用户访问。


setfacl 参数
-m:设置后续acl参数
-x:删除后续acl参数
-b:删除全部的acl参数
-k:删除默认的acl参数
-R:递归设置acl,包括子目录
-d:设置默认acl


例子:在/mnt 下建立一个test文件 将权限改为777 并查看其ACL设置
[root@yang ~]# cd /mnt

[root@yang mnt]# touch test
[root@yang mnt]# chmod 777 test
[root@yang mnt]# getfacl test
# file: test //文件名
# owner: root //文件所属者
# group: root //文件所属组
user::rwx //文件所属者权限
group::rwx //同组用户权限
other::rwx /其它者权限

现在我们让kiosk用户只有读取的权限

[root@yang mnt]# setfacl -m u:kiosk:r test
[root@yang mnt]# ll test
-rwxrwxrwx+ 1 root root 0 Feb 5 18:22 test //权限的最后多了一个“+”
[root@yang mnt]# getfacl test
# file: test
# owner: root
# group: root
user::rwx
user:kiosk:r-- //kiosk的权限为r
group::rwx
mask::rwx
other::rwx

 

除了对某个文件的单个用户进行权限设置外,还可以对某个组进行同样的设置:g:[用户组]:[rwx]

还能对有效权限(mask)进行设置:有效权限(mask) 即用户或组所设置的权限必须要存在于mask的权限设置范围内才会生效
如上面的test文件,已经有了可读权限,如果我们把它的有效权限修改为只有写权限,则设置的ACL权限不在有效权限之内,
则用户kiosk就不可能再查看test文件中的内容了
操作: setfacl -m m:w /mnt/test

最后取消ACL权限:
setfacl -x u:kiosk /mnt/test
恢复有效权限:
setfacl -x m /mnt/test
————————————————
版权声明:本文为CSDN博主「Y_Groot」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qwq_qaq/article/details/54882203

 

 

getfacl              //显示文件或目录的ACL

格式:getfacl [参数] [目录或文件]

参数:

 

-a 显示文件的ACL
-d 显示默认的ACL
-c 不显示注释标题
-e 显示所有的有效权限
-E 显示没有的有效权限
-s 跳过文件,只具有基本条目
-R 递归到子目录
-t 使用表格输出格式
-n 显示用户的UID和组群的GID

例:

查看指定文件的ACL:

[root@linuxcool ~]# getfacl linuxcool.txt
# file: test               //文件名
# owner: root         //文件所属者
# group: root         //文件所属组
user::rw-           //文件所属者权限
group::r--          //同组用户权限
other::r--          //其他者权限

查看指定文件的ACL不显示注释信息:

[root@linuxcool ~]# getfacl -c linuxcool.txt
user::rw-
group::r--
other::r--

使用表格形式查看指定文件的ACL:

[root@linuxcool ~]# getfacl -t linuxcool.txt
file: linuxcool.txt
USER root rw-
GROUP root r--
other r--

 

posted @ 2022-03-12 14:53  请叫我孤客  阅读(238)  评论(0编辑  收藏  举报