Linux中文件权限及特殊权限的作用!

文件权限与归属

在Linux系统中一切都是文件,但是每个文件的类型不尽相同,因此Linux系统使用了不同的字符来加以区分,常见的字符如下所示。

字符 文件属性
- 普通文件
d 目录文件
l 链接文件
b 块设备文件
c 字符设备文件
p 管道文件

文件权限:可读(r)、可写(w)、可执行(x),也可以分别用数字4、2、1表示。

Linux中文件权限及特殊权限的作用!

Linux中文件权限及特殊权限的作用!

Linux中文件权限及特殊权限的作用!
也可以通过 ls -l 查看文件属性
Linux中文件权限及特殊权限的作用!

Linux中文件权限及特殊权限的作用!

文件的特殊权限

SUID

SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)。

查看passwd命令属性时发现所有者的权限由rwx变成了rws,其中x改变成s就意味着该文件被赋予了SUID权限。另外有读者会好奇,那么如果原本的权限是rw-呢?如果原先权限位上没有x执行权限,那么被赋予特殊权限后将变成大写的S。

chmod u+s /ser/bin/passwd user

chmod u+s 文件名/命令所在绝对路径

Linux中文件权限及特殊权限的作用!

  1. 当文件有x执行权限时,rwsr-xr-x rwx——rws 改变个*限的执行权限x为s 如:rwsrwxrwx
  2. 当文件无x执行权限时,rwsr-xr-x rwx——rwS 改变个*限的执行权限x为s 如:rwSrwxrwx

SGID

SGID主要实现如下两种功能:
1.让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置);
Linux中文件权限及特殊权限的作用!

  1. 当文件有x执行权限时,rwsr-xr-x rwx——rws 改变个*限的执行权限x为s 如:rwxrwsrwx
  2. 当文件无x执行权限时,rwsr-xr-x rwx——rwS 改变个*限的执行权限x为s 如:rwxrwSrwx
    如图所示:同样的jio文件,有着不同的管理者,第一个增加ground 群组权限拥有root群组使用者权限管理, 第二个jio文件则是直接在普通用户创建,无root权限,区别很大
    2.在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。例在目录设置SGID,则用户在该目录创建文件,文件的默认的用户组将由用户自己的基本用户组变为目录的所属组,使得同组内的其他用户都能访问该文件。

SBIT

确保用户只能删除自己的文件,而不能删除其他用户的文件。如果赋予了SBIT权限,则其他用户中的可执行权限位会从x/-变为t/T。
Linux中文件权限及特殊权限的作用!
chmod -R o+t 文件名/目录名

  1. 当文件有x执行权限时,rwsr-xr-x rwx——rws 改变个*限的执行权限x为s 如:rwxrwxrwt
  2. 当文件无x执行权限时,rwsr-xr-x rwx——rwS 改变个*限的执行权限x为s 如:rwxrwxrwT
    rwxrwxrwt
    Linux中文件权限及特殊权限的作用!

chmod和chown

chmod命令是一个非常实用的命令,能够用来设置文件或目录的权限,格式为“chmod [参数] 权限 文件或目录名称”。如果要把一个文件的权限设置成其所有者可读可写可执行、所属组可读可写、其他人没有任何权限,则相应的字符法表示为rwxrw----,其对应的数字法表示为760。
chown命令可以设置文件或目录的所有者和所属组,其格式为“chown [参数] 所有者:所属组 文件或目录名称”。
chmod和chown命令是用于修改文件属性和权限的最常用命令,它们还有一个特别的共性,就是针对目录进行操作时需要加上大写参数-R来表示递归操作,即对目录内所有的文件进行整体操作。

Linux中文件权限及特殊权限的作用!

  • [ ]a:所有人
  • [ ]u:所有者
  • [ ]g:所有组
  • [ ]o:其他用户
  • [ ]r:可读权限
  • [ ]w:可写权限
  • [ ]x:可执行权限
  • [ ]s:suid或sgid权限(一般配合u或g参数使用,如果配合a参数,则代表同时设置suid和sgid)
  • [ ]t:sbit权限(一般配合o参数使用,配合u或g参数使用无任何效果,配合a参数使用效果等同于配合o参数)
  • [ ]+:添加权限
  • [ ]-:移除权限