Linux权限总结
第1章 课前小拓展 虚拟机打不开原因
问题:
该虚拟机似乎正在使用中。
如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏。
配置文件: E:\vmware\模板机01\老男孩教育40期-模板机01.vmx。
无法打开虚拟机: E:\vmware\模板机01\老男孩教育40期-模板机01.vmx
获取该虚拟机的所有权失败。
主机上的某个应用程序正在使用该虚拟机。
情况1 打开了多个虚拟机软件.
配置文件: E:\vmware\模板机01\老男孩教育40期-模板机01.vmx。
情况2 你的虚拟机没有正常的关闭
解决方法:
通过everything 搜索 .lck目录 删除. 然后重新打开 vmware .
第2章 回答以下问题为什么会出现这样的情况和
2.1 第一种情况:
1.登陆的是oldboy用户
[oldboy@oldboyedu-40-nb ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
2.查看文件的内容 要看 文件本身的权限
[oldboy@oldboyedu-40-nb ~]$ ls -l /etc/shadow
---------- 1 root root 941 Sep 4 15:42 /etc/shadow
3.oldboy用户是 这个文件的陌生人
4.oldboy用户 对这个文件没有权限 r
[oldboy@oldboyedu-40-nb ~]$ id
uid=500(oldboy) gid=503(incahome) groups=503(incahome)
2.2 第二种情况:
[oldboy@oldboyedu-40-nb ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
[oldboy@oldboyedu-40-nb ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
[oldboy@oldboyedu-40-nb ~]$ ls -ld /root/
dr-xr-x---. 7 root root 4096 Sep 4 17:21 /root/
1.登录的是oldboy用户不是root用户
2.oldboy用户与/root 用户关系陌生人
3.oldboy用户对/root 用户没有 rx权限
小结:
1.查看修改文件 目录
2.文件 ----文件本身权限
3.查看目录 目录权限
2.3 第三种情况
[oldboy@oldboyedu-40-nb ~]$ touch /root/oldboy.txt
touch: cannot touch `/root/oldboy.txt': Permission denied
[root@oldboyedu-40-nb ~]# ls -l /root/oldboy.txt
ls: cannot access /root/oldboy.txt: No such file or directory
[oldboy@oldboyedu-40-nb ~]$ touch /root/oldboy.txt
touch: cannot touch `/root/oldboy.txt': Permission denied
1.登录的是oldboy用户
2.oldboy用户 与 /root 用户关系
3.没有root目录的rwx读写执行权限 oldboy.txt文件的权限
加上权限之后:
[oldboy@oldboyedu-40-nb ~]$ ls -ld /root/
dr-xr-x---. 7 root root 4096 Sep 4 17:21 /root/
oldboy 对于 /root 目录是陌生人
oldboy对 /root 目录 没有 wx
w权限对于 目录来说是 在目录中 创建 删除 修改文件名
w与x配合
[oldboy@oldboyedu-40-nb ~]$ ls -ld /root/
dr-xr-x-wx. 7 root root 4096 Sep 4 17:21 /root/
[oldboy@oldboyedu-40-nb ~]$ touch /root/oldboy.txt
[oldboy@oldboyedu-40-nb ~]$ ls -l /root/
ls: cannot open directory /root/: Permission denied
2.4 第四种情况
[oldboy@oldboyedu-40-nb ~]$ \rm -f /etc/passwd
rm: cannot remove `/etc/passwd': Permission denied
1.文件名字存放在所在目录的block里面 ******
2. 文件名与inode对应关系都放在目录block中.
第3章 网站权限-通过控制权限让网站安全
3.1 linux系统默认权限
3.1.1 文件-rw-rw-rw- oldboy.txt
rw-r--r--
644
3.1.2 目录-rwxrwxrwx
rwxr-xr-x root root oldboydir
755
3.1.3 Linux文件目录默认权限
file-644 root root
dir -755 root root
3.2 如何规划 网站的权限 让网站更佳安全
博客 blog 网站程序代码
3.2.1 网站下面的文件 目录
file 644 root root
dir 755 root root
3.2.2 网站下面用户上传upload目录
file 644 wwwwww
dir 755 www www
3.2.3 谁控制默认的权限---umask
umask 控制着linux里面的默认的权限
umask命令用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行, 并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask命令来改变默认值,新的权限将会把旧的覆盖掉。 语法 umask(选项)(参数) 选项 -p:输出的权限掩码可直接作为指令来执行; -S:以符号方式输出权限掩码。
3.2.4 系统中默认文件和目录权限
file---666 rw-rw-rw-
dir----777 rwxrwxrwx
umask 默认的最大权限减去 umask
在计算文件的时候如果剪完以后是奇数就加1
例子:
umask 022
file 666 -022 =644
dir 777 -022 =755
umask为032
文件 666 -032 =634 +010 =644
目录 777 -032 =745
假设umask是 035 那么系统文件和目录的默认权限是?
file 666 -035 631 +011 =642
dir 777 -035 =742
umask作用,给你一个umask的值 你可以计算出 系统默认的权限 ****
3.2.5 如何永久修改umask
在/etc/profile 系统的环境变量,别名修改
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
解释:
如果 [ 用户UID>=199 ] 并且 [ 用户的名字 == 用户组名字 ];然后
umask 002
那么
umask 022
果如
第4章 文件系统的权限
4.1 了解特殊权限
特殊权限 |
代表什么 |
s 属主权限位 |
suid (set uid) 运行二进制文件(命令)的时候相当于命令的所有者; 对目录无效 |
S 属主权限位 |
没有w权限 |
t o权限位 |
sticky 粘滞位 设置了粘滞位目录下创建文件只能自己管理 修改、删除;只对目录有效(目录权限:777+t) |
s 属组权限位 |
sgid (set gid) 目录:如果SGID是设置在A目录上,则在该A目录内所建立的文件或目录的用户组,将会是此A目录的用户组。 文件:如果SGID设置在二进制文件(命令)上,则不论用户是谁,在执行该程序的时候,它的有效用户组将会变成该程序的用户组所有者(group id) |
- s权限
[root@oldboyedu-40 ~]# #环境准备
[root@oldboyedu-40 ~]# #root创建一个文件
[root@oldboyedu-40 ~]# touch tanjiaoshou.txt
[root@oldboyedu-40 ~]# ll tanjiaoshou.txt
-rw-r---w- 1 root root 0 Sep 5 08:38 tanjiaoshou.txt
[root@oldboyedu-40 ~]# #切换用户为oldboy
[root@oldboyedu-40 ~]# su - oldboy
[oldboy@oldboyedu-40 ~]$ \rm -rf /root/tanjiaoshou.txt
rm: cannot remove `/root/tanjiaoshou.txt': Permission denied
[oldboy@oldboyedu-40 ~]$ #切换为root用户,为rm加上s权限
[root@oldboyedu-40 ~]# chmod u+s /bin/rm
[root@oldboyedu-40 ~]# ll /bin/rm
-rwsr-xr-x. 1 root root 57440 Mar 23 02:52 /bin/rm
[oldboy@oldboyedu-40 ~]$ #用oldboy用户删除root目录下的tanjiaoshou.txt
[oldboy@oldboyedu-40 ~]$ \rm -rf /root/tanjiaoshou.txt
#验证是否删除
[root@oldboyedu-40 ~]# ls /root
a.log dir-035 file-025 install.log.syslog oldboy.txt
anaconda-ks.cfg EOF file-035 oldboy oldgirl-025
b.txt etc install.log oldboy-hard test.txt
- t权限 o+t (只对目录有效)
加上t的目录内的文件或子目录,只有【文件或目录】拥有者,或root可以进行删除,改名和移动。
[root@oldboyedu-40 ~]# #环境准备
[root@oldboyedu-40 ~]# #创建目录/zhangyun,并将该目录权限修改为777,并加上t粘滞位权限
[root@oldboyedu-40 ~]# ll -d /zhangyun
drwxrwxrwt 2 root root 4096 Sep 5 10:22 /zhangyun
使用zhangyun用户创建文件test2.txt
[zhangyun@oldboyedu-40 ~]$ touch /zhangyun/test2.txt
[zhangyun@oldboyedu-40 ~]$ ll /zhangyun
total 0
-rw-rw-r-- 1 zhangyun zhangyun 0 Sep 5 10:34 test2.txt
[root@oldboyedu-40 ~]# su - oldboy
[oldboy@oldboyedu-40 ~]$ echo "hello" >>/zhangyun/test2.txt
-bash: /zhangyun/test2.txt: Permission denied
[oldboy@oldboyedu-40 ~]$ mv /zhangyun/test2.txt /zhangyun/test1.txt
mv: cannot move `/zhangyun/test2.txt' to `/zhangyun/test1.txt': Operation not permitted
[oldboy@oldboyedu-40 ~]$ \rm -rf /zhangyun/test2.txt
rm: cannot remove `/zhangyun/test2.txt': Operation not permitted
系统特殊权限:
lsattr == list attr显示文件系统的权限
chattr == change attr设置文件系统的权限
一些特殊权限:
chattr +a oldboy.txt
a===append a表示只能追加
i===immutable i表示无敌 无能进行任何操作
chattr +a oldboy.txt
lsattr
chattr -a oldboy.txt
chattr +i oldboy.txt
lsattr
chattr -i oldboy.txt
a 文件 配置文件 /etc/passwd /etc/shadow /etc/group /etc/gshaow
i /etc/initttab 命令
lsatt lsattr命令用于查看文件的第二扩展文件系统属性。
语法 lsattr(选项)(参数) 选项 -E:可显示设备属性的当前值,但这个当前值是从用户设备数据库中获得的,而不是从设备直接获得的。 -D:显示属性的名称,属性的默认值,描述和用户是否可以修改属性值的标志。 -R:递归的操作方式; -V:显示指令的版本信息; -a:列出目录中的所有文件,包括隐藏文件。 lsattr经常使用的几个选项-D,-E,-R这三个选项不可以一起使用,它们是互斥的,经常使用的还有-l,-H,使用lsattr时,必须指出具体的设备名,用-l选项指出要显示设备的逻辑名称,否则要用-c,-s,-t等选项唯一的确定某个已存在的设备。 参数 文件:指定显示文件系统属性的文件名。 实例 lsattr -E -l rmt0 -H lsattr -EO -l rmt0
chattr chattr命令用来改变文件属性。
这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式: a:让文件或目录仅供附加用途; b:不更新文件或目录的最后存取时间; c:将文件或目录压缩后存放; d:将文件或目录排除在倾倒操作之外; i:不得任意更动文件或目录; s:保密性删除文件或目录; S:即时更新文件或目录; u:预防意外删除。 语法 chattr(选项) 选项 -R:递归处理,将指令目录下的所有文件及子目录一并处理; -v<版本编号>:设置文件或目录版本; -V:显示指令执行过程; +<属性>:开启文件或目录的该项属性; -<属性>:关闭文件或目录的该项属性; =<属性>:指定文件或目录的该项属性。
4.2 扩展特殊权限
9位基础权限
rwxr-xr-x root root oldboy.txt
12个权限分别有 9个基础权限+3个特殊
[root@oldboyedu-40-nb ~]# ls -ld /tmp/ /usr/bin/passwd /usr/bin/locate /bin/ls
-rwxr-xr-x. 1 root root 117048 Mar 23 02:52 /bin/ls
-rwsr-xr-x. 1 root root 30768 Nov 24 2015 /usr/bin/passwd
drwxrwxrwt. 13 root root 4096 Sep 4 20:30 /tmp/
-rwx--s--x. 1 root slocate 38464 Mar 12 2015 /usr/bin/locate
4.2.1 suid setuid 在文件所有者加上s 放在主人的位置上 运行这个命令的时候相当于是这个命令的所有者(root)
/usr/bin/passwd 修改用户密码
/etc/shadow
4xxx
4.2.2 tmp t sticky 粘滞位 设置了 粘滞位在目录下面创建的文件 只能自己管理(修改 删除)
chmod o+t /tmp #1777 1xxx
####sgid setgid
第5章 如果中病毒了怎么办
1.top 找出占用cpu或内存大的进程 pid进程号码
2.根据进程pid 杀掉进程 kill+进程号码
3.ps -ef
PID CMD
pid process id 进程的号码 系统中是唯一的.
CMD 进程名字(命令)
dd if=/dev/zero of=/tmp/100 bs=1k count=1000000
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12956 root 20 0 102m 664 564 D 36.9 0.0 0:04.20 asdfasdfasdf
408 root 20 0 0 0 0 D 5.3 0.0 0:18.02 jbd2/sda3-8
3356 root 20 0 0 0 0 D 5.3 0.0 0:39.52 flush-8:0
34 root 20 0 0 0 0 S 2.6 0.0 0:11.97 kswapd0
1 root 20 0 19356 1532 1200 S 0.0 0.1 0:01.21 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
top top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。
通过top命令所提供的互动式界面,用热键可以管理。 语法 top(选项) 选项 -b:以批处理模式操作; -c:显示完整的治命令; -d:屏幕刷新间隔时间; -I:忽略失效过程; -s:保密模式; -S:累积模式; -i<时间>:设置间隔时间; -u<用户名>:指定用户名; -p<进程号>:指定进程; -n<次数>:循环显示的次数。 top交互命令 在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。 h:显示帮助画面,给出一些简短的命令总结说明; k:终止一个进程; i:忽略闲置和僵死进程,这是一个开关式命令; q:退出程序; r:重新安排一个进程的优先级别; S:切换到累计模式; s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s; f或者F:从当前显示中添加或者删除项目; o或者O:改变显示项目的顺序; l:切换显示平均负载和启动时间信息; m:切换显示内存信息; t:切换显示进程和CPU状态信息; c:切换显示命令名称和完整命令行; M:根据驻留内存大小进行排序; P:根据CPU使用百分比大小进行排序; T:根据时间/累计时间进行排序; w:将当前设置写入~/.toprc文件中。
kill kill命令用来删除执行中的程序或工作。
kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或job指令查看。 语法 kill(选项)(参数) 选项 -a:当处理当前进程时,不限制命令名和进程号的对应关系; -l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称; -p:指定kill 命令只打印相关进程的进程号,而不发送任何信号; -s <信息名称或编号>:指定要送出的信息; -u:指定用户。
ps ps命令用于报告当前系统的进程状态。
可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。 语法 ps(选项) 选项 -a:显示所有终端机下执行的程序,除了阶段作业领导者之外。 a:显示现行终端机下的所有程序,包括其他用户的程序。 -A:显示所有程序。 -c:显示CLS和PRI栏位。 c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。 -C<指令名称>:指定执行指令的名称,并列出该指令的程序的状况。 -d:显示所有程序,但不包括阶段作业领导者的程序。 -e:此选项的效果和指定"A"选项相同。 e:列出程序时,显示每个程序所使用的环境变量。 -f:显示UID,PPIP,C与STIME栏位。 f:用ASCII字符显示树状结构,表达程序间的相互关系。 -g<群组名称>:此选项的效果和指定"-G"选项相同,当亦能使用阶段作业领导者的名称来指定。 g:显示现行终端机下的所有程序,包括群组领导者的程序。 -G<群组识别码>:列出属于该群组的程序的状况,也可使用群组名称来指定。 h:不显示标题列。 -H:显示树状结构,表示程序间的相互关系。 -j或j:采用工作控制的格式显示程序状况。 -l或l:采用详细的格式来显示程序状况。 L:列出栏位的相关信息。 -m或m:显示所有的执行绪。 n:以数字来表示USER和WCHAN栏位。 -N:显示所有的程序,除了执行ps指令终端机下的程序之外。 -p<程序识别码>:指定程序识别码,并列出该程序的状况。 p<程序识别码>:此选项的效果和指定"-p"选项相同,只在列表格式方面稍有差异。 r:只列出现行终端机正在执行中的程序。 -s<阶段作业>:指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。 s:采用程序信号的格式显示程序状况。 S:列出程序时,包括已中断的子程序资料。 -t<终端机编号>:指定终端机编号,并列出属于该终端机的程序的状况。 t<终端机编号>:此选项的效果和指定"-t"选项相同,只在列表格式方面稍有差异。 -T:显示现行终端机下的所有程序。 -u<用户识别码>:此选项的效果和指定"-U"选项相同。 u:以用户为主的格式来显示程序状况。 -U<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定。 U<用户名称>:列出属于该用户的程序的状况。 v:采用虚拟内存的格式显示程序状况。 -V或V:显示版本信息。 -w或w:采用宽阔的格式来显示程序状况。 x:显示所有程序,不以终端机来区分。 X:采用旧式的Linux i386登陆格式显示程序状况。 -y:配合选项"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。 -<程序识别码>:此选项的效果和指定"p"选项相同。 --cols<每列字符数>:设置每列的最大字符数。 --columns<每列字符数>:此选项的效果和指定"--cols"选项相同。 --cumulative:此选项的效果和指定"S"选项相同。 --deselect:此选项的效果和指定"-N"选项相同。 --forest:此选项的效果和指定"f"选项相同。 --headers:重复显示标题列。 --help:在线帮助。 --info:显示排错信息。 --lines<显示列数>:设置显示画面的列数。 --no-headers:此选项的效果和指定"h"选项相同,只在列表格式方面稍有差异。 --group<群组名称>:此选项的效果和指定"-G"选项相同。 --Group<群组识别码>:此选项的效果和指定"-G"选项相同。 --pid<程序识别码>:此选项的效果和指定"-p"选项相同。 --rows<显示列数>:此选项的效果和指定"--lines"选项相同。 --sid<阶段作业>:此选项的效果和指定"-s"选项相同。 --tty<终端机编号>:此选项的效果和指定"-t"选项相同。 --user<用户名称>:此选项的效果和指定"-U"选项相同。 --User<用户识别码>:此选项的效果和指定"-U"选项相同。 --version:此选项的效果和指定"-V"选项相同。 --widty<每列字符数>:此选项的效果和指定"-cols"选项相同。
pid pidof命令用于查找指定名称的进程的进程号id号。
语法 pidof(选项)(参数) 选项 -s:仅返回一个进程号; -c:仅显示具有相同“root”目录的进程; -x:显示由脚本开启的进程; -o:指定不显示的进程ID。
第6章 扩展:
6.1 显示进程 按照占用内存大小顺序 降序
1:在命令行提示符执行top命令
2:输入大写P,则结果按CPU占用降序排序。输入大写M,结果按内存占用降序排序。(注:大写P可以在capslock状态输入p,或者按Shift+p)
另外:
认识top的显示结果
top命令的显示结果如下所示:
top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48 Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 191272k total, 173656k used, 17616k free, 22052k buffers Swap: 192772k total, 0k used, 192772k free, 123988k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd 14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top 1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init 2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0统计信息区
前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:
01:06:48 |
当前时间 |
up 1:22 |
系统运行时间,格式为时:分 |
1 user |
当前登录用户数 |
load average: 0.06, 0.60, 0.48 |
系统负载,即任务队列的平均长度。 |
第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
Tasks: 29 total |
进程总数 |
1 running |
正在运行的进程数 |
28 sleeping |
睡眠的进程数 |
0 stopped |
停止的进程数 |
0 zombie |
僵尸进程数 |
Cpu(s): 0.3% us |
用户空间占用CPU百分比 |
1.0% sy |
内核空间占用CPU百分比 |
0.0% ni |
用户进程空间内改变过优先级的进程占用CPU百分比 |
98.7% id |
空闲CPU百分比 |
0.0% wa |
等待输入输出的CPU时间百分比 |
0.0% hi |
|
0.0% si |
最后两行为内存信息。内容如下:
Mem: 191272k total |
物理内存总量 |
173656k used |
使用的物理内存总量 |
17616k free |
空闲内存总量 |
22052k buffers |
用作内核缓存的内存量 |
Swap: 192772k total |
交换区总量 |
0k used |
使用的交换区总量 |
192772k free |
空闲交换区总量 |
123988k cached |
缓冲的交换区总量。 |
进程信息区
统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。
序号 |
列名 |
含义 |
a |
PID |
进程id |
b |
PPID |
父进程id |
c |
RUSER |
Real user name |
d |
UID |
进程所有者的用户id |
e |
USER |
进程所有者的用户名 |
f |
GROUP |
进程所有者的组名 |
g |
TTY |
启动进程的终端名。不是从终端启动的进程则显示为 ? |
h |
PR |
优先级 |
i |
NI |
nice值。负值表示高优先级,正值表示低优先级 |
j |
P |
最后使用的CPU,仅在多CPU环境下有意义 |
k |
%CPU |
上次更新到现在的CPU时间占用百分比 |
l |
TIME |
进程使用的CPU时间总计,单位秒 |
m |
TIME+ |
进程使用的CPU时间总计,单位1/100秒 |
n |
%MEM |
进程使用的物理内存百分比 |
o |
VIRT |
进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
p |
SWAP |
进程使用的虚拟内存中,被换出的大小,单位kb。 |
q |
RES |
进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
r |
CODE |
可执行代码占用的物理内存大小,单位kb |
s |
DATA |
可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb |
t |
SHR |
共享内存大小,单位kb |
u |
nFLT |
页面错误次数 |
v |
nDRT |
最后一次写入到现在,被修改过的页面数。 |
w |
S |
进程状态。 |
x |
COMMAND |
命令名/命令行 |
y |
WCHAN |
若该进程在睡眠,则显示睡眠中的系统函数名 |
z |
Flags |
任务标志,参考 sched.h |
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。
更改显示内容
通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。
按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。
第7章 特殊权限的总结如果上面看不懂
7.1.1 SUID
当s这个标志出现在文件所有者的x权限上时,例如文件权限状态“-rwsr-xr-x”,此时就称为 Set UID,简称为SUID的特殊权限。SUID有这样的限制和功能:
(1)SUID权限仅对二进制程序有效;
(2)执行者对于该程序需要具有x的可执行权限;
(3)本权限仅在执行该程序的过程中有效;
(4)执行者将具有该程序所有者的权限。
举个例子,在Linux中,所有账号的密码记录在/etc/shadow这个文件中,并且只有root可以读和强制写入这个文件。那么,如果另一个账号vbird需要修改自己的密码,就需要访问/etc/shadow这个文件,但是上面明明说了只有root能访问/etc/shadow这个文件,是不是矛盾?但事实上,vbird是可以修改/etc/shadow这个文件内的密码的,这就是SUID的功能。
通过上述的功能说明,我们知道,
(1)vbird对于/usr/bin/passwd这个程序具有x权限,表明vbird可以执行passwd;
(2)passwd的所有者为root;
(3)vbird执行passwd的过程中会暂时获得root的权限;
(4)/etc/shadow因此可以被vbird所执行的passwd所修改。
但是vbird如果使用cat去读取/etc/shadow这个文件时,是不能读取的。
(SUID只能用在文件上,不能用在目录)
7.1.2 SGID
当s标志出现在文件所有者的x权限时称为SUID,那么s出现在用户组的x权限时称为SGID。(U表示user,G表示group)。SGID有如下功能:
(1)SGID对二进制程序有用;
(2)程序执行者对该程序需具备x权限;
(3)执行者在执行过程中会获得该程序用户组的支持。
举个例子,/usr/bin/locate这个程序可以去查询/var/lib/mlocate/mlocate.db这个文件的内容,mlocate.db的权限如下:
-rwx--s--x root slocate /usr/bin/locate
-rw-r----- root slocate /var/lib/mlocate/mlocate.db
若使用vbird这个账号执行locate时,vbird就会获得用户组slocate支持,又由于用户组slocate对mlocate.db具有r权限,所以vbird就可以读取mlocate.db了。
除二进制程序外,SGID也可以用目录上。当一个目录设置了SGID权限后,它具有如下功能:
(1)用户若对此目录具有r和x权限,该用户能够进入该目录;
(2)用户在此目录下的有效用户组将变成该目录的用户组;
(3)若用户在此目录下拥有w权限,则用户所创建的新文件的用户组与该目录的用户组相同。
7.1.3 SBIT
SBIT目前只对目录有效。
SBIT对目录的作用是:
(1)当用户对此目录具有w和x权限时,即具有写入权限时;
(2)当用户在该目录下创建新文件或目录时,仅有自己和root才有权力删除。
7.1.4 SUID\SGID\SBIT权限设置
先将其转换成数字:
SUID->4
SGID->2
SBIT->1
假设要将一个文件权限修改为“-rwsr-xr-x”,由于s在用户权限中,所以是SUID,因此,原先的755前面还要加上4,也就是4755,所以,
用命令chmod 4755 filename 设置就可以了。此外,还可能出现S和T的情况。
我们知道,s和t是替代x这个权限的,但是,如果它本身没有x这个权限,修改为s或t时就会变成大S或大T,例如:
执行chmod 7666 filename。 因为666表示“-rw-rw-rw”,均没有x权限,所以最后变成“-rwSrwSrwT”。
第2章 总结
1.rwx 及对应的数字
2.rwx对于文件或目录来说含义
3.删除/创建文件的时候
4.permission denied排查
5.如何设置网站的权限
整体
file 644 root root
dir 755 root root
find +chmod
find +chown
upload
file 644 www www
dir 755 www www
find +chmod
find +chown
6.umask作用?如何计算?
7.文件系统权限 a i
8.top kill ps
9.特殊权限 suid 粘滞位
第3章 预习:
定时任务
Linux权限总结的更多相关文章
- linux权限系统
Linux权限分为 r(4):可读 , w(2)可写 , x(1)可执行 , -无权限 , 可以通过ls -l 文件名查看权限 , 如 ls -l 文件名 输出: -rwxrw---x. root r ...
- Shell基础:Linux权限管理
Linux权限基本概念 查看系统(文件夹/文件)权限: ls -l =>d/- xxx xxx xxx. num owner group size date filename ...
- 关于LINUX权限-bash: ./startup.sh: Permission denied
关于LINUX权限-bash: ./startup.sh: Permission denied <script type="text/javascript"></ ...
- Linux权限操作 [转]
Linux权限操作 本文内容来自<鸟哥linux私房菜>读后个人做的笔记,该书实为学习linux的很好入门教材 一.文件属性 ls ls -al列出所有的档案属性 ls是List的意思 档 ...
- linux权限解读
1 只读权限,用r表示(read):可以读取文件或者列出目录的内容 2 可写权限,用w表示(write):可以删除文件或目录 3 可执行权限,用x表示(execute):可以执行可执行文件:可以进入目 ...
- linux权限---【600,644,700,755,711,666,777】 - - 博客频道 - CSDN.NET
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- Linux系列教程(十六)——Linux权限管理之ACL权限
通过前面的两篇博客我们介绍了Linux系统的用户管理,Linux用户和用户组管理之相关配置文件 讲解了用户管理的相关配置文件,包括用户信息文件/etc/passwd,用户密码文件/etc/shadow ...
- Linux权限分析
我看过网上的一些有关Linux的权限分析,有些说的不够清楚,另外一些说的又太复杂.这里我尽量简单.清楚的把Linux权限问题阐述明白,Linux权限没有那么复杂. Linux权限问题要区分文件权限和目 ...
- 【Linux】 Linux权限管理与特殊权限
Linux权限管理 权限管理这方面,非常清楚地记得刚开始实习那会儿是仔细研究过的,不知道为什么没有笔记留痕..除了一些基本的知识点早就忘光了,无奈只好从头开始学习一遍.. ■ 基本权限知识 这部分实在 ...
- Linux权限管理(week1_day5)--技术流ken
权限概述 Linux系统一般将文件可存/取访问的身份分为3个类别:owner(拥有者).group(和所有者同组的用户).others(其他人,除了所有者,除了同组的用户以及除了超级管理员),且3种身 ...
随机推荐
- laravel 常见问题
1. Specified key was too long; max key length is 767 bytes 处理: 修改config/database.php , mysql配置.删除数据库 ...
- es6 class中责任链模式与AOP结合
责任链模式大家应该都清楚,比如JS中的冒泡,Java中的拦截器.过滤器,都运用到了责任链模式. 可以看我之前的文章介绍责任链的:https://www.cnblogs.com/wuguanglin/p ...
- 线程池如何复用一个线程-- ThreadPoolExecutor的实现(未完)
任务是一组逻辑工作单元,而线程则是使任务异步执行的机制.在Java中,Runnable对象代表一个任务,Thread对象负责创建一个线程执行这个任务. 前提:1. 程序需要处理大量任务 2. 任务的执 ...
- asp.net 多个txt压缩导出下载
//方法代码 MemoryStream ms = new MemoryStream(); byte[] buffer = null; using (ZipFile file = ZipFile.Cre ...
- P4389 付公主的背包
注意 初始化的时候要这样写 for(int i=1,x;i<=n;i++){ scanf("%d",&x); v[x]++; } for(int i=1;i<= ...
- (转)AutoML for Data Augmentation
AutoML for Data Augmentation 2019-04-01 09:26:19 This blog is copied from: https://blog.insightdatas ...
- CSRF、XSS、clickjacking、SQL 的攻击与防御
CSRF攻击 原理: 跨站请求伪造.是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法. 网站通过cookie来实现登录功能.而cookie只要存在浏览器中,那么浏览器在访问含有这 ...
- Uva12174 Shuffle(滑动窗口)
$play[i]$表示以$i$这个点结束的连续$s$个播放记录是否是无重复的,这样最后只需要枚举可能的播放时间,然后检查对应的播放区间是否是单独的就可以了.特殊情况是,出现的所有播放记录无重复,且长度 ...
- 计算Java对象内存大小
摘要 本文以如何计算Java对象占用内存大小为切入点,在讨论计算Java对象占用堆内存大小的方法的基础上,详细讨论了Java对象头格式并结合JDK源码对对象头中的协议字段做了介绍,涉及内存模型.锁原理 ...
- log4.net使用指南
1.简介 1.1 Log4net的优点: 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的日志系统来诊断 ...