Linux文件系统基本权限和高级权限管理

目录

一、权限

对于文件来说

常见几种文件权限组成

 八进制数字表示权限

二、文件的特殊权限

文件的特殊权限:suid sgid sticky

文件拓展权限ACL


从REHL6 开始,新增加文件系统扩展属性:
命令:chattr   
参数:  a  只能追加内容   ;  i  不能被修改
+a: 只能追加内容  如: echo aaa  >> hack.sh
+i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
注:immutable  [ɪˈmju:təbl]  不可改变的  ;  append [əˈpend] 追加
-i :移除i参数。  -a :移除a参数

            chmod [可选项] <mode> <file...>用于改变属主
参数说明:
 
[可选项]
  -c, --changes          like verbose but report only when a change is made (若该档案权限确实已经更改,才显示其更改动作)
  -f, --silent, --quiet  suppress most error messages  (若该档案权限无法被更改也不要显示错误讯息)
  -v, --verbose          output a diagnostic for every file processed(显示权限变更的详细资料)
       --no-preserve-root  do not treat '/' specially (the default)
       --preserve-root    fail to operate recursively on '/'
       --reference=RFILE  use RFILE's mode instead of MODE values
  -R, --recursive        change files and directories recursively (以递归的方式对目前目录下的所有档案与子目录进行相同的权限变更)
       --help        显示此帮助信息
       --version        显示版本信息
[mode] 
    权限设定字串,详细格式如下 :
    [ugoa...][[+-=][rwxX]...][,...],
    其中
    [ugoa...]
    u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示所有(包含上面三者)。
    [+-=]
    + 表示增加权限,- 表示取消权限,= 表示唯一设定权限。
    [rwxX]
    r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
    使用字符设定
    修改权限用的命令:chmod
    作用:修改文件,目录的权限
    语法:chmod [对谁操作] [操作符] [赋于什么权限] 文件名
    对谁操作:
    u----> 用户user,表示文件或目录的所有者
    g---->用户组group,表示文件或目录所属的用户组
    o---->其它用户others
    a---->所有用户all
    操作符:
    +  #添加权限  ;  -  # 减少权限  ; =  #直接给定一个权限
    权限:r w x
     
[file...]
    文件列表(单个或者多个文件、文件夹)
        用户:
UGOA:所有者--用户组--其它用户--包括前面三者 a:所有用户   

一、权限

对于文件来说


r:读
w:写
x:执行
 对于目录来说:
r:读(看到目录里面有什么,可以列出目录的内容)   ls
w:在目录里面新建文件,删除,移动  touch dir  rm  mv cp
x:进入 cd,访问文件需要取决于里面文件的权限 

常见几种文件权限组成


- rwx --- ---:文件所有者对文件具有读取、写入和执行的权限。
- rwx r-- r--: 文件所有者具有读、写与执行的权限,用户组里用户及其他用户则具有读取的权限
- rw- rw- r-x:文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
drwx--x--x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。
drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。

说明:最前面一位不是权限,是文件类型,-为文件 d为文件夹
      往后三位为一组,第一组代表所有者,第二组代表相同用户组的用户,第三组代表其他用户(如果没有三个权限则采用“-”代替,一定凑够三位)

 八进制数字表示权限


    权限        二进制值        八进制值        描述
    ---             000                  0            没有任何权限
    --x            001                  1            只有执行权限
    -w-           010                  2            只有写入权限
    -wx          011                  3            有写入和执行权限
    r--           100                   4            只有读取权限
    r-x          101                   5            有读取和执行权限
    rw-         110                   6            有读取和写入权限
    rwx        111                   7            有全部权限
    
    r=4        w=2        x=1
    
rw- 的值是多少?         答: 4+2=6  
rwx  r-x  r-x 的值是多少?         答:  rwx=4+2+1=7  ;   r-x=4+1=5   rwx  r-x  r-x=7 5 5

如果将则前三位SGT也转换成一个二进制数,则

suid 的八进制数字是4
sgid 的代表数字是 2
sticky 位代表数字是1
这样我们就可以将十二位权限三位三位的转化为4个八进制数。其中最高的一位八进制数就是suid,sgdi,sticky的权值。
第二位为 拥有者的权值
第三位为 所属组的权值
最后一位为 其他组的权值
如:“4755”表示设置SUID权限,“6755”表示同时设置SUID、SGID权限(755才是权限,且755需要分开理解  7   5   5)
-rw-r-sr-- = 0 1 0 1 1 0 1 0 0 1 0 0 = 2644 
-rwsr-xr-x = 1 0 0 1 1 1 1 0 1 1 0 1 = 4755
-rwsr-sr-x = 1 1 0 1 1 1 1 0 1 1 0 1 = 6755
-rwsr-sr-t = 1 1 1 1 1 1 1 0 1 1 0 1 = 775(实际0755)

umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字
 
文件默认权限=666 ,目录默认权限=777

666 - 022 = 644
777 - 022 = 755
注: UID大于199 且用户的组名和用户名一样,那么 umask值为002,否则为022.
注: -gt 在shell中表示大于; id -g 显示用户组ID ,id -gn显示组名。 

权限的算法:一般情况是:目录默认权限-umask 值  

二、文件的特殊权限

文件的特殊权限:suid sgid sticky


1、SUID(set uid设置用户ID):限定:只能设置在二进制可执行程序上面。对目录设置无效
功能:程序运行时的权限从执行者变更成程序所有者的权限
2、SGID:限定:既可以给二进制可执行程序设置,也可以对目录设置
功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的所属组
3、Stickybit:粘滞位权限是针对目录的,对文件无效,也叫防删除位

SUID属性一般用在可执行文件上,当用户执行该文件时,会临时拥有该执行文件的所有者权限。使用”ls -l” 或者”ll” 命令浏览文件时,如果可执行文件所有者权限的第三位是一个小写的”s”,就表明该执行文件拥有SUID属性
(取代x,如果原来的权限位没有x执行权限,那么加了SGID权限后,权限位则为大S,否则为小s,最后一组其他那里,如果没有x则为T,有x为t)

    SGID:
限定:既可以给二进制可执行程序设置,也可以给目录设置。
功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的权限

Stickybit
限定:只作用于目录,是一种保护权限。
功能:目录下创建的文件只有root、文件创建者、目录所有者才能删除。

总得来说:设置了suid就是当使用者使用了这个文件成为进程时,拥有这个文件属主的权限
        SUID:
                                                            功用:用户运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主

例: 系统中的tmp目录就是这样
[root@Jaking11 ~]# ll -d /tmp/
drwxrwxrwt. 11 root root 4096 Jan 24 19:41 /tmp/

用法:
chmod o+t /tmp/test/

正常权限和附加权限可以用4位八进制数表示。类似于正常权限的数字权限赋值模式(使用三位八进制数字赋值)

chmod <abc> file...

我们可以进一步使用4位八进制数字同时赋值正常权限和附加权限。

chmod <sabc> file...

其中s是表示附加权限的把八进制数字,abc与之前一致,分别是对应User、Group、及Other(拥有者、群组、其他组)的权限。因为SUID对应八进制数字是4,SGID对于八进制数字是2,则“4755”表示设置SUID权限,“6755”表示同时设置SUID、SGID权限。

我们进一步将上小节的例子中的二进制数转变为八进制表示形式,则

-rw-r-sr-- = 0 1 0 1 1 0 1 0 0 1 0 0 = 2644 
-rwsr-xr-x = 1 0 0 1 1 1 1 0 1 1 0 1 = 4755
-rwsr-sr-x = 1 1 0 1 1 1 1 0 1 1 0 1 = 6755
-rwsr-sr-t = 1 1 1 1 1 1 1 0 1 1 0 1 = 7755
对比范例:

设置 netlogin 的权限为拥有者可读写执行,群组和其他权限为可读可执行
chmod 755 netlogin
 
设置 netlogin 的权限为拥有者可读写执行,群组和其他权限为可读可执行,并且设置suid
chmod 4755 netlogin
chmod 4755与chmod 755对比多了附加权限值4,这个4表示其他用户执行文件时,具有与所有者同样的权限(设置了SUID)。

为什么要设置4755 而不是 755? 
假设netlogin是root用户创建的一个上网认证程序,如果其他用户要上网也要用到这个程序,那就需要root用户运行chmod 755 netlogin命令使其他用户也能运行netlogin。但假如netlogin执行时需要访问一些只有root用户才有权访问的文件,那么其他用户执行netlogin时可能因为权限不够还是不能上网。这种情况下,就可以用 chmod 4755 netlogin 设置其他用户在执行netlogin也有root用户的权限,从而顺利上网。

文件拓展权限ACL


    文件与目录设置不止基础权限:r,w,x,特殊权限:suid,sgid,sticky,还有文件扩展权限ACL,ACL的全称是 Access

Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。它在UGO权限管理的基础上为文件系统提供一个额外的、更灵活的权

限管理机制。它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。

ACL的作用:让特定用户对特定文件拥有特定权限。
setfacl命令:
用法: 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              显示本帮助信息

#查看acl

[root@localhost ~]# getfacl test
# file: test
# owner: root
# group: root
user::r-x
user:tank:rwx                   #effective:---
group::r-x                      #effective:---
mask::---
other::---


修改

[root@localhost ~]# setfacl -m u:zhangy:rw- test    #修改文件的acl权限,添加一个用户权限
[root@localhost ~]# getfacl test
# file: test
# owner: root
# group: root
user::r-x
user:zhangy:rw-                       #多出来一个用户
user:tank:rwx
group::r-x
mask::rwx
other::---
[root@localhost ~]# setfacl -m g:zhangying:r-w test      #添加一个组
[root@localhost ~]# getfacl test
# file: test
# owner: root
# group: root
user::r-x
user:zhangy:rw-
user:tank:rwx
group::r-x
group:zhangying:rw-
mask::rwx
other::---


设置组的话只需要把setfacl -m u::rwx 中的u改为g即可,大致差不多。

设置mask的话,setfacl -m u::rwx 中的u改为m,并且这个可不针对用户和组哦,其他的大致差不多。

在使用-R时,记得放在-m前面,否则不可以地

使用-d的话,就会把默认的都加上去,针对目录哦。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 1. 文件权限管理:可以使用chmod命令来修改文件的权限,包括读、写、执行权限,以及文件所有者、所属组和其他用户的权限。 2. 文件系统管理:可以使用文件系统管理命令来创建、删除、格式化、挂载和卸载文件系统,以及对文件系统进行备份和恢复。 3. 磁盘空间管理:可以使用磁盘空间管理命令来查看磁盘使用情况、清理无用文件、调整磁盘分区大小等。 总之,Linux文件/目录高级管理是Linux系统管理的重要组成部分,掌握这些技能可以提高系统管理的效率和安全性。 ### 回答2: Linux 文件/目录的高级管理主要包括文件权限管理、用户与用户组管理以及文件/目录链接管理。 文件权限管理是指通过设置文件的访问权限来控制用户对文件的读、写和执行操作。在Linux系统中,每个文件都有访问权限,分为所有者、所属组和其他人三类。通过使用chmod命令可以改变文件的权限权限包括可读(r)、可写(w)和可执行(x)三种,分别用数字表示为4、2和1,通过为每种权限分配不同的数字,并相加得到权限值。例如,chmod 755 file1 命令将文件file1的所有者设置为可读、可写和可执行,所属组和其他人只可读和可执行。通过文件权限管理,可以有效地保护文件的安全性。 用户与用户组管理是指在Linux系统中,对用户和用户组进行创建、修改和删除等操作。每个用户都有一个唯一的用户名和对应的用户ID,用户组是一组具有相同权限的用户的集合。通过使用useradd和userdel命令可以创建和删除用户,使用usermod命令可以修改用户属性。同样,通过groupadd和groupdel命令可以创建和删除用户组,使用groupmod命令可以修改用户组属性。通过用户和用户组管理,可以对不同用户和用户组进行权限的分配,保证文件和目录的安全性。 文件/目录链接管理是指通过链接的方式实现文件/目录的共享或者复制。在Linux系统中,存在两种链接:硬链接和软链接。硬链接是通过将文件名与inode号码进行关联,不占用磁盘空间,删除原文件不影响硬链接的访问。软链接是创建一个指向文件的快捷方式,链接文件占用磁盘空间,删除原文件会导致软链接无法访问。通过链接管理,可以实现同一文件/目录在不同置的访问,提高文件的灵活性和共享性。 总结起来,Linux 文件/目录高级管理主要包括文件权限管理、用户与用户组管理以及文件/目录链接管理。通过合理的管理操作,可以保护文件的安全性,并实现文件/目录的共享和复制。 ### 回答3: Linux文件/目录高级管理主要包括文件权限管理、文件属性管理和文件链接管理。 1. 文件权限管理:Linux系统中,每个文件都有一组权限控制其访问和操作。这组权限分为用户权限、组权限和其他用户权限。用户权限分为读取权限(r)、写入权限(w)和执行权限(x),分别表示用户对文件的读取、写入和执行操作。通过chmod命令可以修改文件的权限,例如chmod u+r file可以给文件的所有者增加读取权限。通过chown和chgrp命令可以改变文件的所有者和所属组,例如chown user:group file可以改变文件所有者为user,所属组为group。 2. 文件属性管理:除了基本文件权限外,Linux还可以通过文件属性来控制文件的访问和操作。这些属性包括文件的隐藏属性、访问时间、修改时间、文件类型等。通过chattr命令可以修改文件的属性,例如chattr +i file可以将文件设置为不可修改的状态。 3. 文件链接管理:在Linux系统中,文件可以通过链接与其他文件进行关联。主要有硬链接和符号链接两种方式。硬链接创建了文件副本,当原文件或者硬链接被修改时,另一个也会随之改变。符号链接则是创建了一个指向原文件的快捷方式,当原文件被删除或者移动时,符号链接则失效。创建链接的命令为ln,例如ln file link创建文件file的硬链接link。 通过对文件/目录的高级管理,我们可以更好地控制文件的访问和操作权限,更灵活地管理文件的属性和链接,保护文件的安全性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值