linux权限管理

linux权限管理

1 权限设置

1.1 基础权限

主要是u、g及o,即拥有着、属组及其他用户,读权限、写权限及执行权限设置

1.1.1 常见示例


-rw-r--r-- 1 root root 483997 Ju1 l5 17:3l sobsrc. Tgz
1.1.1.1 说明

-rw-r–r--

-,第一个杠,表示是个文件

rw-,表示文件拥有者的权限,有读写的权限

r–,第一个,表示属组用户权限,只有读的权限

r–,第二个,表示其他用户的权限,只有读的权限

1.1.2 十位权限表示

常见的权限表示形式有:

-rw------- (600)      只有拥有者有读写权限。
-rw-r--r-- (644)      只有拥有者有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700)     只有拥有者有读、写、执行权限。
-rwxr-xr-x (755)    拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711)    拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666)   所有用户都有文件读、写权限。
-rwxrwxrwx (777)  所有用户都有读、写、执行权限。
 

后九位解析: 我们知道Linux权限总共有三个属组,这里我们给每个属组使用三个位置来定义三种操作(读、写、执行)权限,合起来则是权限的后九位。 上面我们用字符表示权限,其中 -代表无权限,r代表读权限,w代表写权限,x代表执行权限。

实际上,后九位每个位置的意义(代表某个属组的某个权限)都是固定的,如果我们将各个位置权限的有无用二进制数 1和 0来代替,则只读、只写、只执行权限,可以用三位二进制数表示为

r-- = 100
-w- = 010
--x = 001
--- = 000

转换成八进制数,则为 r=4, w=2, x=1, -=0(这也就是用数字设置权限时为何是4代表读,2代表写,1代表执行)

实际上,我们可以将所有的权限用二进制形式表现出来,并进一步转变成八进制数字:

rwx = 111 = 7
rw- = 110 = 6
r-x = 101 = 5
r-- = 100 = 4
-wx = 011 = 3
-w- = 010 = 2
--x = 001 = 1
--- = 000 = 0

由上可以得出,每个属组的所有的权限都可以用一位八进制数表示,每个数字都代表了不同的权限(权值)。如 最高的权限为是7,代表可读,可写,可执行。

故 如果我们将每个属组的权限都用八进制数表示,则文件的权限可以表示为三位八进制数

-rw------- =  600
-rw-rw-rw- =  666
-rwxrwxrwx = 777

关于第一位最高位的解释: 上面我们说到了权限表示中后九位的含义,剩下的第一位代表的是文件的类型,类型可以是下面几个中的一个:

d代表的是目录(directroy)
-代表的是文件(regular file)
s代表的是套字文件(socket)
p代表的管道文件(pipe)或命名管道文件(named pipe)
l代表的是符号链接文件(symbolic link)
b代表的是该文件是面向块的设备文件(block-oriented device file)
c代表的是该文件是面向字符的设备文件(charcter-oriented device file)

1.1.3 更改文件权限 (chmod命令)

1.1.3.1 一般使用格式

用来修改某个目录或文件的访问权限。

语法:chmod [-cfvR][–help] [–version][who] [+ | - | =][mode] 文件名

命令中各选项的含义为: 

-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 与其他用户拥有一样的权限。
文件名:以空格分开的要改变权限的文件列表,支持通配符。
1.1.3.1.1 范例
  • 设置所有用户可读取文件 a.conf
chmod ugo+r a.sh

chmod a+r a.conf
  • 设置 c.sh 只有 拥有者可以读写及执行
chmod u+rwx c.sh
  • 设置文件 a.conf 与 b.xml 权限为拥有者与其所属同一个群组 可读写,其它组可读不可写
chmod a+r,ug+w,o-w a.conf b.xml
  • 设置当前目录下的所有档案与子目录皆设为任何人可读写
chmod -R a+rw *
1.1.3.2 数字权限使用格式

上面我们提到,每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。即我们可以用用三个8进制数字分别表示 拥有者 、群组 、其它组( u、 g 、o)的权限详情,并用chmod直接加三个8进制数字的方式直接改变文件权限。语法格式为 :

chmod abc file…

其中

a,b,c各为一个数字,分别代表User、Group、及Other的权限。

相当于简化版的

chmod u=权限,g=权限,o=权限 file…

而此处的权限将用8进制的数字来表示User、Group、及Other的读、写、执行权限

1.1.3.2.1 范例
  • 设置所有人可以读写及执行
chmod 777 file  (等价于  chmod u=rwx,g=rwx,o=rwx filechmod a=rwx file)
  • 设置拥有者可读写,其他人不可读写执行
chmod 600 file (等价于  chmod u=rw,g=---,o=--- filechmod u=rw,go-rwx file )

1.1.4 chown命令

chown命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。

1.1.4.1 语法

使用权限 : root

格式

chown [-cfhvR] [--help] [--version] user[:group] file...

说明 : Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥 有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以 改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才 有这样的权限。

参数 :

  • user : 新的文件拥有者的使用者 ID
  • group : 新的文件拥有者的使用者群体(group), 当省略“:组”,仅改变文件所有者;
  • -c : 若该文件拥有者确实已经更改,才显示其更改动作
  • -f : 若该文件拥有者无法被更改也不要显示错误讯息
  • -h : 只对于连结(link)进行变更,而非该 link 真正指向的文件
  • -v : 显示拥有者变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
  • –help : 显示辅助说明
  • –version : 显示版本
1.1.4.2 实例

将文件 file1.txt 的拥有者设为 users 群体的使用者 jessie :

chown users:jessie file1.txt

将目前目录下的所有文件与子目录的拥有者皆设为 users 群体的使用者 lamport :

chown -R lamport:users *

1.2 特殊权限

1.2.1 ACL 权限(具体权限设置)

1.2.1.1 名词定义

ACL 是由一系列的Access Entry所组成的. 每一条Access Entry定义了特定的类别可以对 文件拥有的操作权限. Access Entry有三个组成部分: Entry tag type, qualifier (optional), 权限

我们先来看一下最重要的Entry tag type, 它有以下几个类型

  • ACL_USER_OBJ: 相当于Linux里file_owner的权限

  • ACL_USER: 定义了额外的用户可以对此文件拥有的权限

  • ACL_GROUP_OBJ: 相当于Linux里group的权限

  • ACL_GROUP: 定义了额外的组可以对此文件拥有的权限

  • ACL_MASK: 定义了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大权限

  • ACL_OTHER: 相当于Linux里other的权限

说白了我们给指定的用户指定目录分配指定的权限,也就是 ACL 权限分配。

1.2.1.2 setfacl

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

1.2.1.2.1 示例
[root@localhost chmod]# ll
总用量 4
-rwx------ 1 yun liu 31 12月 10 18:31 test.txt
[root@localhost chmod]# setfacl -m u:fei:rw test.txt  //给用户fei设置读写权限
[root@localhost chmod]# getfacl -e test.txt   //查看有效的权限信息
# file: test.txt
# owner: yun
# group: liu
user::rwx
user:fei:rw-                    #effective:rw-
group::---                      #effective:---
mask::rw-
other::---
[root@localhost chmod]# ll
总用量 4
-rwxrw----+ 1 yun liu 31 12月 10 18:31 test.txt
[root@localhost chmod]# setfacl -m g:liu:rx test.txt    //给用户组liu设置读、执行权限
[root@localhost chmod]# getfacl -e test.txt //查看有效的权限信息
# file: test.txt
# owner: yun
# group: liu
user::rwx
user:fei:rw-                    #effective:rw-
group::---                      #effective:---
group:liu:r-x                   #effective:r-x
mask::rwx
other::---
1.2.1.3 注意

基础权限设置即chomd命令与setfacl权限设置存在冲突,目前还没具体了解冲突解决,最好不要两个一起交叉使用。如果有具体研究可留言,谢谢!

1.3 文章参考

参考

Linux系列教程(十六)——Linux权限管理之ACL权限

【Linux】 Linux权限管理与特殊权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值