权限管理
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 文件名
字母 | 含义 |
---|---|
u | user表示文件的所有者,用户 |
g | group用户组 |
o | other其他用户 |
a | all表示三个都是 |
符号 | 含义 |
---|---|
+ | 增加权限 |
- | 撤销权限 |
= | 设定权限 |
数字法修改文件权限
例:chmod u=7,g=5,o=4 文件名 或 chmod 754 文件名
数字 | 含义 |
---|---|
4 | r |
2 | w |
1 | x |
0 | - |
chown:修改文件所有者
chgrp:修改文件所属组
特殊权限
Linux共12位权限,除了9位基础权限还有3个特殊权限
SetUID(suid):临时使用命令的属主权限执行该命令
- SetUID(suid):会在属主权限位的执行权限上写个s。如果该属主权限位上有执行权限,则会在属主权限位的执行权限上写个s;如果该属主权限位上没有执行权限,则会在属主权限位的执行权限上写个S。
- 如果文件有suid权限,普通用户去执行该文件,会以该文件的所属用户的身份去执行,相当于sudo命令。
suid总结:
- 让普通用户对可执行的二进制文件,临时拥有二进制文件的属主权限
- 如果设置的二进制文件没有执行权限,那么suid的权限显示就是S
- 特殊权限suid仅对二进制可执行程序有效,其他文件或目录则无效
- 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:设置所有用户的环境变量和启动顺序