Linux权限配置及ACL权限

sunfeng 2023-08-02 06:34 阅读数 32 #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显示隐藏的文件名。
读(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) 没有任何权限 修改文件所属组:chgrp chgrp:更改文件属组 语法: 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这个账号: 将install.run的拥有者与群组改回为sunfeng:root

二、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 显示本帮助信息

发表评论:

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

搜索
标签列表