文件特殊权限: SUID, SGID, SBIT
Set UID
- 名词介绍
二进制文件 就是可以被执行的文件,通俗说就是命令文件,程序文件,就想是 windows 中的 .exe 文件。
二进制文件也可以叫做二进制程序
先看一个文件
[root@120-78-88-210 opt]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
上面文件拥有者的权限部分中的 x 位置,出现了一个 s, 这个 s 标识就代表了这个文件具有 SUID 特殊权限。
其作用和限制如下:
- SUID 权限仅对二进制程序(binary program)有效;
执行者对于该程序需要具有 x 的可执行权限;
本权限仅在执行该程序的过程中有效 (run-time);
在执行此文件时,执行者将具有该程序拥有者 (owner) 的权限。
- 给一个文件设置 SUID
chmod u+s file
[root@120-78-88-210 ~]# chmod u+s ./abc/zx.txt
[root@120-78-88-210 ~]# ll ./abc/zx.txt
-rwsr-xr-x 1 root root 73 Jul 23 19:47 ./abc/zx.txt
Set GID
当 s 标志在文件拥有者的 x 项目为 SUID,那 s 在群组的 x 时则称为 Set GID,即 SGID .
当一个文件具有 SGID(用的情况不多)
- SGID 对二进制程序有用;
程序执行者对于该程序来说,需具备 x 的权限;
执行者在执行的过程中将会获得该程序群组的权限!
- 当一个目录具有 SGID
用户若对于此目录具有 r 与 x 的权限时,该用户能够进入此目录;
用户在此目录下的有效群组(effective group)将会变成该目录的群组;
用途:若用户在此目录下具有 w 的权限(可以新建文件),则用户所创建的新文件时,该新文件的群组与此目录的群组相同。
Sticky Bit
- 这个 Sticky Bit, SBIT 目前只针对目录有效,对于文件已经没有效果了。
SBIT 对于目录的作用是:
- 当使用者对于此目录具有 w, x 权限,亦即具有写入的权限时;
当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件
ls -ld /tmp
- 设置 SBIT
chmod o+t a/
文件目录管理进阶
find :文件查找,针对文件名
find 路径 选项 表达式 动作
find path option expression action
//-name 按照文件名查找
[root@120-78-88-210 opt]# find /etc -name 'ifcfg-*'
/etc/sysconfig/network-scripts/ifcfg-lo
/etc/sysconfig/network-scripts/ifcfg-eth0
// -iname 不区分大小写
[root@120-78-88-210 ~]# find /etc -iname "netWORK"
/etc/sysconfig/network
/etc/rc.d/init.d/network
//-size 按照文件大小查找
[root@120-78-88-210 ~]# find /etc -size +5M
/etc/udev/hwdb.bin
[root@120-78-88-210 ~]# ll -h /etc/udev/hwdb.bin
-r--r--r-- 1 root root 7.6M Jul 22 19:33 /etc/udev/hwdb.bin
find /etc -size +5M //大于5M
find /etc -size 5M
find /etc -size -5M
find /etc -size +5M -ls //-ls找到的处理动作, 不是平时用的ls
ll - h 查看大小
//指定查找的目录深度:
-maxdepth levels
-mindepth levels
//maxdepth 3 最大3层 -a and 要满足2个条件
[root@120-78-88-210 ~]# find / -maxdepth 3 -a -name "zx.txt"
/opt/test/zx.txt
//按时间找(atime,mtime,ctime):
# find /etc -mtime +5 //修改时间超过5天
# find /etc -mtime 5 //修改时间等于5天
# find /etc -mtime -5 //修改时间5天以内
//-type 按文件类型
find /dev -type f //f普通
find /dev -type d //d目录
find /dev -type l //l链接
find /dev -type b //b块设备
find /dev -type c //c字符设备
find /dev -type s //s套接字
find /dev -type p //p管道文件
//-perm 按照文件权限查找
在./abc/file1下 查找权限至少为111的文件
[root@120-78-88-210 ~]# find ./abc/file1/ -perm -111 -ls
131423 4 drwxr-xr-x 2 oyzx oyzx 4096 Jul 23 19:00 ./abc/file1/
131426 0 -rwxr-xr-x 1 root root 0 Jul 23 19:00 ./abc/file1/zxcopy.txt
131425 0 -rwxr-xr-x 1 root root 0 Jul 23 13:36 ./abc/file1/file1.txt
exec应用
find /path -name “filename*” -exec comand -option {} \;
xargs应用
[root@120-78-88-210 ~]# find . -name "zx*"
./abc/file1/zxcopy.txt
[root@120-78-88-210 ~]# find . -name "zx*"|echo $(xargs)
./abc/file1/zxcopy.txt
[root@120-78-88-210 ~]# find . -name "zx*"|cp $(xargs) /opt/test
[root@120-78-88-210 ~]# ls /opt/test
fcgyf ooo zxcopy.txt zx.txt
image.png
取到状态码 4开头:
cut -d' ' -f9 zuoye.txt |grep ^4
取到 url:
cut -d' ' -f7 zuoye.txt
去掉客户端 ip:
cut -d' ' -f1 zuoye.txt
//TOP20 ip
[root@120-78-88-210 ~]# cut -d' ' -f1 zuoye.txt|sort -n|uniq -c|sort -nr|head -n 20
408 58.16.183.69
178 219.133.159.144
166 157.122.64.96
116 110.89.194.210
99 61.53.129.219
95 157.122.65.151
92 117.187.10.115
87 60.1.76.68
86 221.15.145.74
75 60.8.153.242
75 117.187.18.3
72 111.37.113.52
69 117.187.229.42
66 223.13.142.15
64 121.11.241.196
62 117.187.10.119
61 113.115.104.184
60 1.80.136.87
59 117.187.63.53
55 58.35.15.183
//url top10
[root@120-78-88-210 ~]# cut -d' ' -f7 zuoye.txt|sort -n|uniq -c|sort -nr|head -n 10
1198 http://app.znds.com/update/2018-04-26/dangbeimarket_4.1.0_znds.apk
685 http://app.znds.com/down/20160808/jjt-1.5.0.1-dangbei.apk
507 http://app.znds.com/down/20141028/gdhy_1.6.0_znds.apk
309 http://app.znds.com/html/20180510/aqy_8.4.1.74301_dangbei.dangbei
239 http://app.znds.com/update/dangbeimarket.apk
208 http://app.znds.com/html/20180504/y222sks_2.2.3_dangbei.dangbei
186 http://app.znds.com/down/20180426/dszb_3.0.6_dangbei.apk
158 http://app.znds.com/html/20180507/dsm_3.2.1_dangbei.dangbei
151 http://app.znds.com/html/20180425/txsp_3.3.0.1056_dangbei.dangbei
132 http://app.znds.com/html/20180508/mgtv_5.5.609_dangbei.dangbei
//以4开头的各个次数
[root@120-78-88-210 ~]# cut -d' ' -f9 zuoye.txt |grep ^4|sort -n|uniq -c
669 403
36 404
57 416
===========================================================
image.png
- HTTP是什么?有什么特点:
http协议全名叫做:超文本传输协议。是互联网上最广泛的一种协议
http协议的特点:
1、http协议支持客户端/服务端模式,也是一种请求/响应模式的协议。
2、无连接。
所谓的无连接就是服务器收到了客户端的请求之后,响应完成并收到客户端的应答之后,即断开连接。限制每次的连接只处理一次请求。从而节省传输时间。
3、无状态。
http协议对事务的处理没有记忆能力。也就意味着如果需要前面的信息,只能重传,这无形之中增加数据的传输量。这种方式某种方面上讲解放了服务器,但是却不利于客户端与服务器的连接。为了弥补这种不足,产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session,后面我们再细讲它们。
4、简单快捷。
所谓的简单快捷是指客户端向服务器请求服务时,一般来说只需要传输请求方法和路径,就能进行访问。
5、灵活。
这里主要指的是客户端可以通过http协议传输任意类型的数据。比如传输.jpg文件、.ppt文件等等,只需要设定content-type就可以进行传输。
- 客户端的方法都有哪些?分别的用途或场景:
标准Http协议支持六种请求方法,即:
0,GET
1,HEAD
2,PUT
3,DELETE
4,POST
5,OPTIONS
但其实我们大部分情况下只用到了GET和POST。如果想设计一个符合RESTful规范的web应用程序,则这六种方法都会用到。不过即使暂时不想涉及REST,了解这六种方法的本质仍然是很有作用的。大家将会发现,原来web也是很简洁明了的。下面依次说明这六种方法。
0,GET:GET可以说是最常见的了,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
1,HEAD:HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。
2,PUT:这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。举个例子:如一个用于提交博文的URL,/addBlog。如果用PUT,则提交的URL会是像这样的”/addBlog/abc123”,其中abc123就是这个博文的地址。而如果用POST,则这个地址会在提交后由服务器告知客户端。目前大部分博客都是这样的。显然,PUT和POST用途是不一样的。具体用哪个还取决于当前的业务场景。
3,DELETE:删除某一个资源。基本上这个也很少见,不过还是有一些地方比如amazon的S3云服务里面就用的这个方法来删除资源。
4,POST:向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成。
5,OPTIONS:这个方法很有趣,但极少使用。它用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。
其实还有一个TRACE方法,不过这个基本上不会用到,这里就不介绍了。以上的六种方法,我们可以跟数据库的CRUD增删改查操作对应起来:
CREATE :PUT
READ:GET
UPDATE:POST
DELETE:DELETE
这样一来就实现了HTTP和数据库操作(其实不光是数据库,任何数据如文件图表都是这样)的完美统一,这也是REST的精髓之一
- HTTP经历了哪些版本?版本之间的区别
一、HTTP1.0和HTTP1.1的区别
HTTP1.0最早在网页中使用是在1996年,那个时候只是使用一些较为简单的网页上和网络请求上,而HTTP1.1则在1999年才开始广泛应用于现在的各大浏览器网络请求中,同时HTTP1.1也是当前使用最为广泛的HTTP协议。 主要区别主要体现在:
1、缓存处理。在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
2、带宽优化及网络连接的使用。HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。
3、错误通知的管理。在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
4、Host头处理。在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
5、长连接。HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。
二、HTTP2.0和HTTP1.X相比的新特性
1、新的二进制格式(Binary Format)。HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。
2、多路复用(MultiPlexing)。即连接共享,即每一个request都是是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。
3、header压缩。如HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。
4、服务端推送(server push)。同SPDY一样,HTTP2.0也具有server push功能。
三、HTTPS与HTTP的一些区别
1、HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
2、HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。
3、HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。
网友评论