跳到主要内容

权限管理

ls:列出目录内容

Linux文件或者目录名称最长可以有265个字符
. :当前目录
.. :上一级目录
以‘.’开头的文件为隐藏文件,需要用-a参数才能显示。

ls常用参数:

参数含义
-a显示指定目录下所有子目录与文件,包括隐藏文件
-l以列表方式显示文件的详细信息,等于ll命令
-h配合-l以人性化的方式显示文件大小

文件信息详解:

第一列:共11字符

  • 1:表示文件类型
    • d为文件夹
    • -为文件
    • c为硬件字符设备
    • b为硬件块设备
    • s为管道文件
    • l为软链接文件
  • 2-4:表示用户对文件的权限 r:读权限 w:写权限 x:执行权限
  • 5-7:表示用户组对文件的权限
  • 8-10:其他用户对文件的权限
  • 11:为+表示有附加组权限;为.表示普通占位符

第二列: 数字:文件链接数,相当于Windows的快捷方式个数

第三列: 用户

第四列: 用户组

第五列: 文件大小

第六、七、八列: 月+日+时间:最后一次修改时间

第九列: 文件名

ls支持通配符:

符号含义
*代表文件名中所有字符
代表文件名中任意一个字符
[]表示可以配置字符组中的任意一个。‘-’用于表示字符范围
\转义字符

stat:显示文件属性

提示
  • inode:索引节点
  • access time:最后一次访问文件的时间
  • modify time:最后一次修改文件内容的时间
  • change time:最后一次改变文件属性的时间
  • birth time:文件创建的时间

chmod:修改文件权限

字母法修改文件权限

例:chmod u=rwx,g=rx,o=r 文件名

字母含义
uuser表示文件的所有者,用户
ggroup用户组
oother其他用户
aall表示三个都是
符号含义
+增加权限
-撤销权限
=设定权限

数字法修改文件权限

例:chmod u=7,g=5,o=4 文件名 或 chmod 754 文件名

数字含义
4r
2w
1x
0-

chown:修改文件所有者

chgrp:修改文件所属组

特殊权限

Linux共12位权限,除了9位基础权限还有3个特殊权限

SetUID(suid):临时使用命令的属主权限执行该命令

  • SetUID(suid):会在属主权限位的执行权限上写个s。如果该属主权限位上有执行权限,则会在属主权限位的执行权限上写个s;如果该属主权限位上没有执行权限,则会在属主权限位的执行权限上写个S。
  • 如果文件有suid权限,普通用户去执行该文件,会以该文件的所属用户的身份去执行,相当于sudo命令。

suid总结:

  1. 让普通用户对可执行的二进制文件,临时拥有二进制文件的属主权限
  2. 如果设置的二进制文件没有执行权限,那么suid的权限显示就是S
  3. 特殊权限suid仅对二进制可执行程序有效,其他文件或目录则无效
  4. sudi极其危险,如果给vim或者rm命令设置了setUID,那么任何文件都能编辑或者删除了,相当于有root权限了。

setGID(sgid)

  • 使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单。当某个目录设置了sgid后,在该目录中新建的文件不在是创建该文件的默认所属组。
  • 如果该属组权限位上有执行权限,则会在属组主权限位的执行权限上写个s,如果该属组权限位上没有执行权限,则会在属组主权限位的执行权限上写个S




sticky(sbit):粘滞位

  • sbit粘滞位,只对目录有效,对某目录设置粘滞位后,普通用户就算有w权限也只能删除该目录下自己建立的文件,而不能删除其他用户建立的文件。
  • 如果该其他用户权限上有执行权限,则会在其他用户权限位的执行权限上写个t;如果该其他用户权限位上没有执行权限,则会在其他用户权限位的执行权限上写个T
  • 系统中存在的/tmp/目录是经典的粘滞位目录,谁都有写权限,因此安全成问题,常常是木马第一手跳板。


隐藏权限

ls命令一般只能查看文件的一般权限、特殊权限,不能查看隐藏权限

chattr:设置隐藏权限

注意:chattr是凌驾于r,w,x,suid,sgid之上的权限。

权限含义
i锁定文件,不能编辑、修改、删除、移动,可以执行
a仅可以追加文件,不能编辑、删除·、移动,可以执行

lsattr:查看隐藏权限

默认权限

umask(掩码):设置默认权限

  • umask值用于设置用户在创建文件时的默认权限,当我们在系统中创建目录或文件时,目录或文件所具有的默认权限就是由umask值决定的。
  • 对于root用户,系统默认的umask值是0022;对于普通用户,系统默认的umask值是0002。
  • 执行umask命令可以查看当前用户的umask值。

umask的工作原理

  • umask值一共有4位数字,其中第1位数字用于定义特殊权限,一般不予考虑,与一般权限有关的是后3位数字。
  • 默认情况下,对于目录,用户所能拥有的最大权限是777;对于文件,用户所能拥有的最大权限是目录最大权限去掉执行权限,即666。因为x执行权限对于目录是必须的,没有执行权限就无法进入目录,而对于文件则不必默认赋予x执行权限。
  • 对于root用户,他的umask值是022。当root用户创建目录时,默认的权限就是用最大权限777去掉相应位置的umask值权限,即对于所有者不必去掉任何权限,对于所属组要去掉w权限,对于其他用户也要去掉w权限,所以目录的默认权限就是755;当root用户创建文件时,默认的权限则是用最大权限666去掉相应位置的umask值,即文件的默认权限是644。

修改umask

临时:umask XXX

永久:修改/etc/profile文件

/etc/profile:设置所有用户的环境变量和启动顺序