共计 1454 个字符,预计需要花费 4 分钟才能阅读完成。
根本权限
Linux 文件(包含目录)通过绝对权限进行治理,这里的绝对是指绝对文件所有者,权限分为文件所有者权限(user),所有者同组用户权限(group)和其余用户权限(other),通过 ll
命令能够查看用户对文件的操作权限,权限分为 r:读权限,w:写权限,x:执行权限。如:通过 ll
命令显示文件的权限为:-rwxr-xr
,为便于阐明,图示如下。
- 第 9 位:文件类型,- 示意一般文件,d 示意目录,还有软连贯等其余类型
- 第 6 - 8 位:文件所有者权限
- 第 3 - 5 位:文件所有者同组用户权限
- 第 0 - 2 位:其余用户权限
每个类型的用户权限又能够形容为一个 3 位的二进制。
- r 为第二位,十进制值为 4
- w 为第一位,十进制值为 2
- x 为第零为,十进制值为 1
权限位和十进制对应如下:
- rwx = bin(111) = 4 + 2 + 1 = 7
- r-x = bin(101) = 4 + 0 + 1 = 5
- r– = bin(100) = 4 + 0 + 0 = 4
rwx 对于文件和目录的权限意义:
权限 | 简写 | 对一般文件的权限 | 对目录的权限 |
---|---|---|---|
读取 Read | r | 查看文件内容 | 列出目录内容(ls) |
写入 Write | w | 编辑文件内容 | 增加、删除、挪动(重命名)目录中的文件 |
执行 eXecute | x | 作为程序运行文件 | 进入目录(cd) |
umask
umask(user file-creation mode mask)为用户创立文件时的掩码,是创立文件和目录时管制默认权限的根底,如果没有设置 umask,文件默认权限为 0666,目录默认权限为 0777。
umask 的作用是在创立文件和目录时,应用“默认权限 -umask 值”为创立的对象设置权限,大多数 Linux 中的默认 umask 为 022,则创立的文件默认权限为0666 - 022 = 0644
,创立目录的默认权限为0777 - 022 = 0755
SUID、SGID 和 Sticky
Linux 中还有三个和权限相干的属性
SUDI:Set User ID,管制位:4
SGID:Set Group ID,管制位:2
Sticky:管制位:1
SUID
该属性只对 可执行文件(Shell 除外)无效,执行具备 SUID 权限的程序时,程序将以文件所有者的权限执行,而不是启动程序的用户。比方,一个程序的所有者为 root,普通用户执行该文件时,程序将以 root 的权限运行,程序能够拜访只有 root 用户才有拜访权限的文件,这为一些非凡场景的程序运行带来了不便,同时也存在肯定的安全隐患。
此属性的一个典型场景为用户批改明码应用的 /usr/bin/passwd
程序,用户批改明码时须要向 /etc/passwd
和 /etc/shadow
写入数据,而这两个文件是只有 root 采纳写入权限的,通过给 /usr/bin/passwd
文件设置 SUID,普通用户调研此文件批改明码时,将取得 root 用户权限,能够向以上配置文件写入新密码。
SUDI 通过 s 示意,当程序设置了 SUID 后,文件所有者权限的 x
位将会变为 s
,如通过 ll
查看 /usr/bin/passwd
文件的权限为 -rwsr-xr-x。
SGID
对于 可执行文件,该属性的作用和 SUID 相似,引发程序运行的权限为组用户权限,设置 SGID 后,组用户权限的 x
为会变为 s
。
对于 目录,设置此属性后,会引发在此目录下创立的文件的所属组和此目录雷同。
Sticky
此属性仅对 目录 无效,设置了 Sticky 属性的目录中的文件仅可被目录的所有者删除和改名,其余用户无此权限,能够避免文件误删,零碎中的 /tmp 目录就利用了此属性。设置了 Sticky 后,目录的其余用户权限的 x
位将会变为 t
。通过 ll
命令查看 /tmp
目录的权的权限为 drwxrwxrwt。