系统文件访问权限
三种访问方式限制访问权限
- 只允许用户自己访问;
- 允许一个预先指定的用户组中的用户访问;
- 允许系统中的任何用户访问。
三种不同的用户类型
- 所有者(User简u)
- 用户组(Group简g)
- 其他用户(Others简o)
不同类型的用户被赋予9种权限组
用户共有9种的权限组,当不同类型的用户(即所有者、用户组和其他用户)被分别赋予以下三套权限的读、写及执行能力。
每一个用户都有它自身的读、写和执行权限
第一套权限控制访问自己的文件权限,即所有者权限。
第二套权限控制用户组访问其中一个用户的文件的权限。
第三套权限控制其他所有用户访问一个用户的文件的权限,
一般权限
我们使用以下命令可以看到
ls -lh
权限详解:
权限代表 | 详解 |
---|---|
-rwx------ | 文件所有者对文件具有读取、写入和执行的权限。 |
-rwxr―r– | 文件所有者具有读、写与执行的权限,其他用户则具有读取的权限。 |
-rw-rw-r-x | 文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。 |
drwx–x--x | 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。 |
drwx------ | 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。 |
r w x | 详解 |
---|---|
r (Read,读取) | 对于目录来说 可以查看目录下面的文件或者目录 对于文件来说 可以获取 文件内容 |
w (Write,写入) | 对于目录来说 创建(删除)目录文件 都可以的 对于文件来说 不能修改文件内容 |
x (eXecute,执行) | 对于 目录来说 是可以穿透的 但是对于文件只是 可用来执行的 执行程序 脚本 |
我们通常用的这条命令来进行文件提权
chmod ABC filename
A位置 B位置 C位置分别代表
A B C
User Group Other
实际上ABC三个数字(例777)是二进制
常用规则如下:
如果可读、可写、可运行,就表示为二进制的111,转换成十进制就是7
如果可读、可写、不可运行,就表示为二进制的110,转换成十进制就是6
如果可读、不可写、可运行,就表示为二进制的101,转换成十进制就是5
如果可读,权限是二进制的100,十进制是4
如果可写,权限是二进制的010,十进制是2
如果可运行,权限是二进制的001,十进制是1
具备多个权限,就把相应的 4、2、1 相加就可以了:
若要 rwx 则 4+2+1=7
若要 rw- 则 4+2=6
若要 r-x 则 4+1=5
若要 r-- 则 =4
若要 -wx 则 2+1=3
若要 -w- 则 =2
若要 --x 则 =1
若要 --- 则 =0
为不同的角色分配不同的权限,放在一起,就出现 777、677这样的数字
rwt rwT rws rwS 特殊权限
如果是一个可执行文件, 那么在执行时, 一般该文件只拥有调用该文件的用户具有的权限. 而setuid, setgid 可以来改变这种设置.
首先 了解三个概念
setuid: 该位是让普通用户可以以root用户的角色运行只有root帐号才能运行的程序或命令。
例:用普通用户运行passwd命令来更改自己的口令
我们都知道只有通过root权限才能更改
但还可以有另一种方法
ls -l usr/bin/passwd
可以看到
所以可以通过修改/etc/passwd,来劲儿修改自己口令,因为/usr/bin/passwd 文件已经设置了setuid 权限位(-rwsr-xr-x 中的s),这时普通用户能临时变成root
setgid 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.
sticky bit 该位可以理解为防删除位
一个文件是否可以被某用户删除 主要取决于该文件所属的组是否对该用户具有写权限. 如果没有写权限 则这个目录下的所有文件都不能被删除 同时也不能添加新的文件 如果希望用户能够添加文件但同时不能删除文件 则可以对文件使用sticky bit位 设置该位后 就算用户对目录具有写权限 也不能删除该文件
标志常见用法
标志与文件权限的命令是一相似的, 都是 chmod. 有两种方法来实现
第一种
chmod u+s temp 为temp文件加上setuid标志. (setuid 只对文件有效)
chmod g+s tempdir 为tempdir目录加上setgid标志 (setgid 只对目录有效)
chmod o+t temp 为temp文件加上sticky标志 (sticky只对文件有效)
第二种
采用八进制方式 对一般文件通过三组八进制数字来置标志 如 666 777 644等 如果设置这些特殊标志 则在这组数字之外外加一组八进制数字 如 4666 2777等 这一组八进制数字三位的意义如下
ABC
A - setuid位, 如果该位为1, 则表示设置setuid 4---
B - setgid位, 如果该位为1, 则表示设置setgid 2---
C - sticky位, 如果该位为1, 则表示设置sticky 1---
设置完这些标志后, 可以用 ls -l 来查看. 如果有这些标志, 则会在原来的执行标志位置上显示. 如
rwsrw-r-- 表示有setuid标志
rwxrwsrw- 表示有setgid标志
rwxrw-rwt 表示有sticky标志
那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)
切换路径时常见符号代表含义
”.”代表当前目录;
”..”代表上一层目录,当前目录的父目录;
”-“代表前一个目录,我刚才从哪个目录cd过来;
”~”代表当前用户的宿主目录;
”/”代表根目录;
”$”代表普通用户的命令行提示符;
”#”代表root用户的命令行提示符;
”*”代表万能匹配符。