本文基于centos7系统
权限对文件的重要性:
文件是实际含有信息或数据的"容器"
权限对目录的重要性:
文件是存放实际数据的"容器",目录里面主要是记录文件名列表
r (read contents in directory, 可读取目录的内容)
表示具有读取目录结构列表的权限, 所以当用户具有读取®一个目录权限是,表示该用户可以查询该目录下的文件名
w (modify contents of directory, 修改目录的内容)
表示用户具有修改该目录结构列表的权限,即:
x (access directory, 可访问目录)
代表的是用户能否进入该目录并作为当前的工作目录
组件 | 内容 | 思考对象 | r | w | x |
---|---|---|---|---|---|
文件 | 详细内容 | 文件 | 读取文件内容 | 修改文件内容 | 执行文件 |
目录 | 文件名 | 可分类档案室 | 读取文件名 | 修改文件名 | 进入该目录的权限 |
所有在系统上运行的程序都是通过触发程序成为内存中的进程后才能够顺利运行
进程是有相关性的,进程的调用进程是父进程,自己是子进程
进程查看的几个命令:
ps -l : 只查看bash自己相关的进程
[parallels@centos-7 ~]$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 R 1000 9847 30553 0 80 0 - 37227 - pts/0 00:00:00 ps
0 S 1000 30553 30546 0 80 0 - 29125 do_wai pts/0 00:00:00 bash
使用pstree与ps aux查看整个系统的进程:
进程关系树pstree,-A选项表示以ASCII字符方式显示,若需要加上PID与用户信息,加入-up选项, 当父进程,子进程的所有者不同时,在程序名称后面才会加上用户的信息,否则会省略用户的名称
[parallels@centos-7 ~]$ pstree -Aup
systemd(1)-+-ModemManager(709)-+-{ModemManager}(734)
| `-{ModemManager}(752)
|-NetworkManager(1108)-+-dhclient(9606)
| |-{NetworkManager}(1116)
| `-{NetworkManager}(1121)
ps可以将系统中的进程调出来,且输出的信息很丰富
[parallels@centos-7 ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 193704 5004 ? Ss Oct27 0:16 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root 2 0.0 0.0 0 0 ? S Oct27 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Oct27 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< Oct27 0:00 [kworker/0:0H]
top动态查看进程
[parallels@centos-7 ~]$ top
top - 00:32:46 up 9:55, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 211 total, 7 running, 204 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.2 us, 1.7 sy, 0.0 ni, 96.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1879452 total, 95176 free, 749748 used, 1034528 buff/cache
KiB Swap: 2097148 total, 2085472 free, 11676 used. 886260 avail Mem
进程的优先级PRI与NI:
PRI越低系统越会优先执行该进程,同一个周期内被执行更多次,但是PRI是系统规划的,用户不能设置,但是Nice(NI)值是可以设置的
PRI(new) == PRI(old) + NI
由此,NI越小,PRI越小,进程的优先级越高,nice 和 renice 命令 或 top命令都可调整
NI可调整的范围为-20~19 , root可以随意调整自己或他人进程的NI值
普通用户只能调整自己的进程NI值,范围为0~19,且只能越调越高
bash的作业控制:
作业控制(job control)是用在bash环境下的
只能触发用户当前shell的子进程
前台(foreground)是用户下达命令的这个环境
后台是可以自行运行的作业,用户无法ctrl + c 终止它,可使用bg/fg调用
后台中"执行"的进程不能等待terminal/shell的输入(input)
SUID的功能和查看:
系统的密码记录在/etc/shadow内,但是这个文件的权限是———,此时Linux使用SetUID(SUID)的技术来解决用户修改密码的问题,系统设置一个SUID的权限标志到passwd执行文件上,当用户执行passwd命令时,就能够借助SUID来切换执行权限
[parallels@centos-7 ~]$ ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
可以发现passwd的执行权限是s,即SUID, passwd设置了SUID,且passwd的所有者是root,因此只要任何人有x的执行权,当用户执行passwd时,就会自动通过SUID转换身份称为owner,即变成了root的身份
SGID的功能与查看:
SGID为将特殊的权限标志设置在群组的x上
[parallels@centos-7 ~]$ ll -d /var/lib/mlocate/
drwxr-x---. 2 root slocate 24 10月 26 00:17 /var/lib/mlocate/
[parallels@centos-7 ~]$ which locate
/usr/bin/locate
[parallels@centos-7 ~]$ ll -d /usr/bin/locate
-rwx--s--x. 1 root slocate 40512 11月 5 2016 /usr/bin/locate
//发现其他用户可以locate命令进入mlocate目录
SGID也可设置与目录上:
SBIT的功能和查看:
SUID/SGID/SBIT权限的设置:
4为SUID
2为SGID
1位SBIT
[root@centos-7 ~]# ll -d /usr/bin/passwd /usr/bin/locate /tmp
drwxrwxrwt. 16 root root 4096 Oct 28 02:50 /tmp
-rwx--s--x. 1 root slocate 40512 Nov 5 2016 /usr/bin/locate
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
有s或t存在时,该字段需要加入x的权限;
/tmp 的传统权限是"drwxrwxrwx"(777),外加一个SBIT,即"1777";
/usr/bin/locate 的传统权限是"711",外加一个SGID,即"2711";
/usr/bin/passwd的传统权限是"755",外加一个SUID,即"4755";
符号法:
SUID : chmod u+s filename
SGID : chmod g+s filename
SBIT : chmod o+t filename