文件权限位说明
Linux文件或目录的基础权限位是由9个字符来控制的,每3个字符为一组。
前三位是用户权限位(r w x):用户user 代表字符为u
中三位表示用户组权限位:(r - x)用户组group 代表字符为g
后三位表示其他用户权限位:其他用户others 代表字符为o
普通文件对应的权限:
1,可读r:表示具有读取、浏览文件内容(即读取文件实体block)的权限。
2,可写w:表示具有新增、修改 、删除文件内容的权限。
3,可执行x:表示具有执行文件的权限。
对于可读r,有两点需要说明:
1;如果没有可读r配合,那么使用vi编辑文件时会提示无法编辑(但可强制编辑),可以使用echo等命令进行重定向或追加。
2:删除文件或创建文件的权限是受父目录(上一级目录)的权限控制的(因为文件名没有存放在Inode里,而是在上级目录的block里存放着的,若修改上级目录的block(删除文件本质),当然会受上级目录的Inode的权限控制),和文件本身的权限无关,因此,文件本身的可写w权限和文件是否能被删除和改名无关。
对于可执行x,需要注意一下三点:
1:首先文件的本身要能够执行(命令或脚本)。
2:如果是普通用户,同时还需要具备可读r的权限才能执行文件。
3:而root用户只要有可执行x的权限就能执行文件。
Linux系统中目录的权限和文件有一些细微区别,下面是目录对应的权限重要知识。
1,可读r:表示具有浏览目录下面文件及子目录内容的权限。
2,可写w:表示具有增加、删除或修改目录内文件的权限。但是,如果没有可执行x的配合,即使有w权限,也无法删除或创建文件。
3,可执行x:表示具有进入目录的权限。
测试准备:
incahome(家、组)
oldboy 家庭男主人,用来代表用户(User)角色,是文件的所有者
oldgirl 女主人(和所有者oldboy属于相同组,oldboy的家人)用来代表用户组incahome的角色
test 其他人 其他(others)人,用来代表其他用户角色
[root@oldboyedu ~]# groupadd incahome
[root@oldboyedu ~]# useradd oldboy
useradd: user 'oldboy' already exists
[root@oldboyedu ~]# usermod -g incahome oldboy
[root@oldboyedu ~]# id oldboy
uid=1000(oldboy) gid=1004(incahome) groups=1004(incahome),1000(oldboy)
如果此前没有创建oldboy,可以执行下面命令,而不需要usermod命令。
[root@oldboyedu ~]# useradd oldboy -g incahome
[root@oldboyedu ~]# useradd oldgirl -g incahome
useradd: user 'oldgirl' already exists
[root@oldboyedu ~]# id oldgirl
uid=1001(oldgirl) gid=1001(oldgirl) groups=1001(oldgirl)
[root@oldboyedu ~]# usermod -g incahome oldgirl
[root@oldboyedu ~]# id oldgirl
uid=1001(oldgirl) gid=1004(incahome) groups=1004(incahome)
[root@oldboyedu ~]# useradd test
useradd: user 'test' already exists
权限修改:
777 +x -x u=w g-x
Linux权限有两种表现形式:
1、数字表示法 称为8进制权限
r 4
w 2
x 1
- 0
实际的权限表示就是将每3位相加即可。
rwxr-xr-x 755
rwx 7
r-x 5
r-x 5
2、字符表示法
rw-rw-r-x 代表的数字权限为665
--xr-x-wx 代表的数字权限为153
-wx--x--x 代表的数字权限为311
而以下数字权限表示的字符权限如下:
755 代表的字符权限为rwxr-xr-x
644 代表的字符权限为rw-r--r--
134 代表的字符权限为--x-wxr--
修改文件属性的用户和组
chown 用户.用户组 文件 这里的点可以用:替换。
chown 用户 文件
chown .用户组 文件 ====chgrp 用户组 文件
安全权限临界点:
文件不想被修改被执行:644
[root@oldboyedu /oldboy]# touch oldboy.txt
[root@oldboyedu /oldboy]# ls -l
total 4
-rw-r--r-- 1 root root 0 Oct 7 23:21 oldboy.txt
目录不想被修改(删除移动创建)被执行(进入):755
创建文件默认最大的权限为666 (-rw-rw-rw-),其默认创建的文件没有可执行权限x位。
当umask中存在奇数位的时候,在计算完毕,奇数位加1
基于文件:默认权限规则 了解
从666计算
umask都为偶数 默认权限用减法
umask有奇数 默认权限用减法 然后奇数位加1
基于目录:默认权限规则
从777计算
默认权限用减法
Linux系统特殊权限位知识
9位基础权限
还有3位特殊权限位
suid位:
suid(setuid)位通过S字符标识,
存在于基本权限的用户权限位的x权限对应的位置,
如果用户权限位对应的x权限位上有x权限,则suid就用小写的s标识,
suid的s对应的数字权限为4,完整权限用八进制数4000表示。
sgid位:
sgid(setgid)位同样是通过S字符来标识,
但是,sgid位存在于基本权限的用户组权限位的x权限对应的位置,
如果用户组权限位对应的x权限位上有x权限,则sgid就用小写的s标识,
suid的s对应的数字权限为2,完整的权限用八进制数2000表示。
sticky(粘滞位)知识简介
sticky(粘滞)位通过字符T标识,存在于基本权限的其他用户位对应的x权限位上,
如果其他用户位的x权限位上有x权限,
则sticky(粘滞)位通过小写的t标识,对应的数字权限是1,
完整的权限用八进制数1000表示。