linux文件权限问题

时间:2022-02-20 15:28:12

linux中每个文件或者目录都包含三种一般权限和一些特殊权限,有三种用户可以对文件进行访问:文件所有者、与所有者同一组的用户、其他用户。

查看文件权限命令:

ls -l 查看当前文件夹下所有文件权限

ls -l 文件名 查看某文件权限

查看结果如下:

-rw-r--r-- 1 root root 文件名

运行结果解释:

第一个字符一般用来区分文件和目录:

d:表示是一个目录,事实上在ext2fs中,目录是一个特殊的文件。
-:表示这是一个普通的文件。
l: 表示这是一个符号链接文件,实际上它指向另一个文件。
bc:分别表示区块设备和其他的外围设备,是特殊类型的文件。
sp:这些文件关系到系统的数据结构和管道,通常很少见到。

210个字符当中的每3个为一组,左边三个字符表示所有者权限,中间3个字符表示与所有者同一组的用户的权限,右边3个字符是其他用户的权限。这三个一组共9个字符,代表的意义如下:

r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权
w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
-:表示不具有该项权限。

每个用户都拥有自己的专属目录,通常集中放置在/home目录下,这些专属目录的默认权限为rwx------:  表示目录所有者本身具有所有权限,其他用户无法进入该目录。

执行mkdir命令所创建的目录,其默认权限为rwxr-xr-x,用户可以根据需要修改目录的权限。

特殊权限:

sSSUID,Set UID):可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。请注意具备SUID权限的文件,黑客经常利用这种权限,以SUID配上root帐号拥有者,无声无息地在系统中开扇后门,供日后进出使用。
sSSGIDSet GID):设置在文件上面,其效果与SUID相同,只不过将文件所有者换成用户组,该文件就可以任意存取整个用户组所能使用的系统资源。
TTSticky):/tmp和 /var/tmp目录供所有用户暂时存取文件,亦即每位用户皆拥有完整的权限进入该目录,去浏览、删除和移动文件。
因为SUIDSGIDSticky占用x的位置来表示,所以在表示上会有大小写之分。加入同时开启执行权限和SUIDSGIDSticky,则权限表示字符是小写的:
-rwsr-sr-t 1 root root 
如果关闭执行权限,则表示字符会变成大写:
-rwSr-Sr-T 1 root root 

chmod命令修改权限:

该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

1. 文字设定法
  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 example
  使同组和其他用户对文件example 有读权限。

2、数字设定法

  chmod [mode] 文件名 

  其中mode的取值是三个数字,数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。

r: 对应数值4
w: 对应数值2
x:对应数值1
-:对应数值0

例子:rwx r-x r-- 对于用户u,其权限为4+2+1=7;用户g,权限为4+0+1=5;用户o,权限为4+0+0=4。

解释:

我们将rwx看成二进制数,如果有则有1表示,没有则有0表示,那么rwx r-x r- -则可以表示成为:
111 101 100,再将其转化为再将其每三位转换成为一个十进制数,就是754