根本权限
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。