Linux权限配置及ACL权限

sunfeng 2023-08-02 06:34 阅读数 144 #Linux

一、linux用户权限设置有哪些

1.用户

  • linux中默认有两类用户:

    超级用户:可以再linux系统下做任何事情,不受限制 

    普通用户:在linux下做受限制,adduser创建的用户

  • 用户切换:

    普通→超级用户: su - (需要输入密码) 

    root→普通用户: su - 用户名 (无需输入密码)

  • 改密码: 

            在当前用户下修改 passwd

            如果是root 后面跟用户名 passwd username

  • exit or CTRL + D 可以退出普通用户身份到root


            每次使用su都会创建一个进程,尽量减少使用su跳转到root

2、linux中角色类别

  • 拥有者 owner    u

  • 所属组 group    g

  • 其他     other     o

  • 全部                  a

3、权限

   

  • 第1列一共十个字符

       第一个字符,表示文件类型

    d: 文件夹;目录,字母”d”,是dirtectory(目录)的缩写

    -:普通文件(文本,动静态库,可执行程序,源程序)

    l:软链接(类似Windows的快捷方式)

    b:块设备文件(例如硬盘、光驱等)

    p:管道文件 (通信)

    c:字符设备文件(例如屏幕等串口设备、鼠标键盘)

    s:套接口文件(软链接)         

        剩下9个字符         

        3+3+3为一组,拥有者 所属组 其他人 所具有的文件权限属性         

        rwx 必须按顺序,可读 可写 可执行 -为否

  • 第2列,表示文件个数。如果是文件的话,那这个数目自然是1了,如果是目录 的话,那它的数目就是该目录中的文件个数了。

  • 第3列,表示该文件或目录的拥有者。若使用者目前处于自己的Home,那这一 栏大概都是它的账号名称。

  • 第4列,表示所属的组(group)。每一个使用者都可以拥有一个以上的组,不过 大部分的使用者应该都只属于一个组,只有当系统管理员希望给予某使用者特殊权限时, 才可能会给他另一个组。

  • 第5列,表示文件大小。文件大小用byte来表示,而空目录一般都是1024byte, 当然可以用其它参数使文件显示的单位不同,如使用ls –k就是用kb莱显示一个文件的大 小单位,不过一般我们还是以byte为主。

  • 第6列,表示最后一次修改时间。以“月,日,时间”的格式表示,如Aug 15 5:46表示8月15日早上5:46分。

  • 第7列,表示文件名。我们可以用ls –a显示隐藏的文件名。

002

读(read),写(write),执行r(execute),简写即为(r,w,x),亦可用数字来(4,2,1)表示,- 没有权限  权限位占位符。 

举例:如果某文件权限为7则代表可读、可写、可执行(4+2+1).

若权限为6(4+2)则代表可读、可写。

权限为5代表可读(4)和可执行(1).

权限为3代表可写(2)和可执行(1)。

普通文件即实际保存数据的地方,其并不具备删除自身的权限:

r:可读取文件的实际内容

w:可编辑、新增、修改该文件的实际内容

x:可被执行

目录文件即保存有目录结构和文件权限:

r:可读取目录结构和权限

w:可更改目录结构列表、新建、删除、重命名、转移子文件、目录

x:表示用户可进入到该目录中

4、修改权限chmod

chmod用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。 该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。 

①文字设定法 

语法:chmod [who] [+ | - | =] [mode] 文件名

命令中各选项的含义为: 

操作对象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 与其他用户拥有一样的权限。

文件名:以空格分开的要改变权限的文件列表,支持通配符。 在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:

chmod g+r,o+r public

使同组和其他用户对文件public有读权限。 

②数字设定法 

我们必须首先了解用数字表示的属性的含义:

0表示没有权限,

1表示可执行权限, 

2表示可写权限,

4表示可读 权限,

然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。 

例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。 

数字设定法的一般形式为: 

语法:chmod [mode] 文件名 

指令实例:chmod a+x file.txt

即设定文件file.txt的属性为: 文件属主(u) 增加执行权限 

与文件属主同组用户(g) 增加执行权限 

其他用户(o) 增加执行权限

chmod ug+w,o-x file.txt

即设定文件file.txt的属性为: 

文件属主(u) 增加写权限 

与文件属主同组用户(g) 增加写权限 

其他用户(o) 删除执行权限

chmod u+s install.run

假设执行 chmod 后 install.run 的权限为(可以用ls –l install.run命令来看): 

–rws–x–x 1 sunfeng users 3689 Nov 5 17:22 install.run 

并且这个执行文件要用到一个文本文件ceshi.c,其文件存取权限为“–rw——-”, 即该文件只有其属主具有读写权限。 

当其他用户执行 install.run 这个程序时,他的身份因这个程序暂时变成sunfeng(由于chmod 命令中使用了s选项),所以他就能够读取 ceshi.c 这个文件(虽然这个文件被设定为 其他人不具备任何权限),这就是s的功能。 

因此,在整个系统中特别是root本身,最好不要过多的设置这种类型的文件(除非 必要)这样可以保障系统的安全,避免因为某些程序的bug而使系统遭到***。 

chmod a -x hkc.txt 
chmod -x hkc.txt 
chmod ugo -x hkc.txt

以上这三个命令都是将文件hkc.txt的执行权限删除,它设定的对象为所有使用者。 

chmod 644 hkc.txt

即设定文件hkc.txt的属性为:-rw-r–r– 

文件属主(u)sunfeng 拥有读、写权限 

与文件属主同组人用户(g) 拥有读权限 

其他人(o) 拥有读权限 

chmod 750 Ai.txt

即设定 Ai.txt 这个文件的属性为:-rwxr-x— 

文件主本人(u)sunfeng 可读/可写/可执行权 

与文件主同组人(g) 可读/可执行权 

其他人(o) 没有任何权限

修改文件所属组:

chgrpchgrp:更改文件属组

语法:

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

参数选项:

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

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

语法:

chown[-R] 属主名 文件名
chown[-R] 属主名:属组名 文件名
#chown[-R] bin test
#chown[-R] bin:root test

进入 /home/sunfeng 目录,将install.run的拥有者改为zhangsan这个账号:

004

将install.run的拥有者与群组改回为sunfeng:root

005

二、Linux用户权限ACL权限

ACL文件权限管理也是UGO权限的加强版。 

UGO基本权限:只能一个用户、一个组合、其他人这三个对象进行授权 ACL文件权限管理:设置不同用户,不同的基本权限(r、w、x),对象数量不同 

UGO是针对用户、组、其他人三个对象的文件授权,

ACL是可以针对指定用户指定组和其他人的文件授权。

1、语法

setfacl -m u:用户或用户组:权限   文件     //给指定用户或组授权
getfacl 文件                           //查看文件有哪些ACL权限

2、创建文件、文件夹及用户

准备一个测试用的文件夹以及用户在文件夹内创建一个文件

mkdir /home/test           //创建文件夹
touch /home/test/测试.txt       //创建文件“测试.txt”
useradd wangwu             //创建用户wangwu
useradd lisi              //创建用户lisi
lslogins                 //列出系统中所有用户的信息

3、设置ACL权限

查看新创好的文件有哪些ACL权限

[root@localhost home]# getfacl test/测试.txt      //查看“测试.txt”的ACL权限
# file: test/测试.txt                      //文件的位置
# owner: root                            //文件拥有者
# group: root                            //文件所属组
user::rw-                              //用户的权限
group::r--                              //组的权限
other::r--                              //其他人的权限

设置wangwu、lisi权限

[root@localhost home]# setfacl -m u:lisi:rwx /home/test/测试.txt      //给lisi授予可以对文件读写执行的权利
[root@localhost home]# setfacl -m u:wangwu:rwx /home/test/测试.txt      //给wangwu授予可以对文件读写执行的权利
[root@localhost home]# getfacl test/测试.txt                   //查看“测试.txt”的ACL权限
# file: test/测试.txt
# owner: root
# group: root
user::rw-user:lisi:rwx    //权限增加成功
user:wangwu:rwx        //权限增加成功
group::r--
mask::rwx
other::r--

说明:在设置ACL权限之后使用 ls 查看文件权限会不一样,文件的权限会叠加上ACL的权限,具体的权限内容还是需要用getfacl来查看,ACL权限使用一getfacl命令查看的为主。

[root@localhost ~]# ls -l /home/test/测试.txt

-rw-rwxr--+ 1 root root 0 8月 2 17:43 /home/test/测试.txt

用ls命令查看发现权限多了一个+号,代表着有ACL权限,具体权限用getfacl命令查看。 

对组 user 群组进行ACL授权

[root@localhost home]# setfacl -m g:user:rw test/测试.txt   //给user组授予对文件“测试.txt”读写权限
[root@localhost home]# getfacl test/测试.txt          //查看“测试.txt”ACL权限
# file: test/测试.txt
# owner: root
# group: root
user::rw-
user:lisi:rwx
user:wangwu:rwx
group::r--
group:user:rw-              //权限设置完成
mask::rwx
other::r--

对其他人授权

[root@localhost home]# setfacl -m o::rwx test/测试.txt     //设置其他人对文件“测试.txt”的读写执行的权限
[root@localhost home]# getfacl test/测试.txt            //查看文件“测试.txt"权限
# file: test/测试.txt
# owner: root
# group: root
user::rw-
user:lisi:rwx
user:wangwu:rwx
group::r--
group:user:rw-
mask::rwx
other::rwx         //权限设置完成

注意:setfacl -m o::rwx test/测试.txt,o 后面有两个冒号,其他人不用写用户名,虽然不用写用户名但仍然要加冒号表示一个站位,不然命令无法执行。 

删除ACL权限 

命令setfacl  -x  对象:名称    文件名 

删除用户的权限

[root@localhost home]# setfacl -x u:lisi test/测试.txt     //删除用户lisi的文件权限
[root@localhost home]# getfacl test/测试.txt             //查看文件“测试.txt"权限
# file: test/测试.txt# owner: root
# group: root
user::rw-user:wangwu:rwx       //仅剩用户wangwu,lisi的权限被移除
group::r--
group:user:rw-
mask::rwx
other::rwx

删除组的权限

[root@localhost home]# setfacl -x g:user test/测试.txt       //删除组user的权限
[root@localhost home]# getfacl test/测试.txt              //查看文件“测试.txt"权限
# file: test/测试.txt
# owner: root
# group: root
user::rw-
user:wangwu:rwx
group::r--
mask::rwx
other::rwx

清空所有设置的ACL权限(将文件的ACL权限恢复到默认) 

命令:setfacl    -b   文件

[root@localhost home]# setfacl -b test/测试.txt        //清空ACL的所有扩展权限
[root@localhost home]# getfacl test/测试.txt          //查看文件“测试.txt"权限
# file: test/测试.txt
# owner: root
# group: root
user::rw-
group::r--
other::rwx
[root@localhost home]# ls -l test/测试.txt
-rw-r--rwx. 1 root root 0 8月   2 17:43 test/测试.txt    //原本的+号不在了,没有设置ACL权限

语法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...

选项说明
-m, --modify=acl更改文件的访问控制列表
-M, --modify-file=file从文件读取访问控制列表条目更改
-x, --remove=acl根据文件中访问控制列表移除条目
-X, --remove-file=file从文件读取访问控制列表条目并删除
-b, --remove-all删除所有扩展访问控制列表条目
-k, --remove-default移除默认访问控制列表
      –set=acl设定替换当前的文件访问控制列表
      –set-file=file从文件中读取访问控制列表条目设定
      –mask重新计算有效权限掩码
-n, --no-mask不重新计算有效权限掩码
-d, --default应用到默认访问控制列表的操作
-R, --recursive递归操作子目录
-L, --logical依照系统逻辑,跟随符号链接
-P, --physical依照自然逻辑,不跟随符号链接
     –restore=file恢复访问控制列表,和“getfacl -R”作用相反
     –test测试模式,并不真正修改访问控制列表属性
-v, --version显示版本并退出
-h, --help显示本帮助信息

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

搜索
标签列表