《LINUX与UNIX SHELL编程指南》读书笔记(一)
第 1 章 文件安全与权限 )~5X X.`:g
1. 一个文件一经创建,就具有三种基本访问方式: 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛,P&{7H,\*l.}#k"j
1) 读(r): 可以显示该文件的内容。 7@0H#l"?.l,A!U
2) 写(w): 可以编辑或删除它。 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛!r)[5b0F#f8a x(C,O;`
3) 执行(x): 如果该文件是一个 shell 脚本或程序的话。
;B s,`+s'J'J)t(C(W$L+E9B3S2. 按照所针对的用户,文件的权限可分为三类: 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛1j'X9O$e9D$g"z%Y1w2X
1) 文件属主: 创建该文件的用户。 &v&e*k2m3H2|
2) 同组用户: 拥有该文件的用户组中的任何用户。 5X8w*a'O/~$\
3) 其他用户: 即不属于拥有该文件的用户组的某一用户。
"d)M+h2D'X#Z:d.e3.ls -l (列出目录内容)命令的输出的分析 2~,l7n!a*k4b
drwxr-xr-x 2 root root 4096 Oct 14 20:18 bin
1} a-A,d5v2\/N0a1) 第 1 个部分第 1 个字符: 表示文件的类型,详细说明见下。
+L!X9]:p*B-Z$B&w3YTechWeb-技术社区2) 第 1 个部分第 2-10 个字符: 分为 3 组(triplet),分别表示文件的属主、组用户和其它用户的权限。
*](D,Z3L"g)b+{3) 第 2 个部分: 表示该文件的硬链接的数目。
&a9l @.O5g;O(Z/u程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛4) 第 3 个部分: 表示文件的属主。
$a4?/Y-V*P5) 第 4 个部分: 文件的属主(root)所在的缺省组(也是 root 组)。 %?9S(O&A5J*E#n.{/i3P%k
6) 第 5 个部分: 表示文件的长度(以字节 byte 为单位)。
"?8i-O/F%i3W8n1P程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛7) 第 6-7 个部分: Oct 14 20:18 表示文件的更新时间。
%Y(t)W){7e5D%U"K'u2?(u8) 第 8 个部分: 该文件的文件名。
+x*s*y;g n%^0^(P4.文件的类型
1?,l$O5l$s1m-K"w程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛1) d : 目录文件,目录也是一种文件 (directory) /](?3M7G0P
2) l : 符号链接(指向另一个文件) (link)
1w-E:y6v q7E;Z8C2s3) b : 块设备文件 (block device)
#N8R'p e7f'e5r6Q4) c : 字符设备文件 (charactor device)
+d+A9v*C1S%\6b%pTechWeb-技术社区5) p : 命名管道文件 (named piple)
5H;m:L%k+j1A#d'O程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛6) s : 套接字文件 (socket)
!V-v&Q%k8k'}8Z4R4xTechWeb-技术社区7) - : 普通文件,或者更准确地说,不属于以上几种类型的文件 2u'H0D6v-X7H/p9w
5.文件的权限位
$@'F4e&R3m.w#S"pTechWeb-技术社区1) 一个文件的权限位由 9 个字符组成,分成 3 个 triplet,分别表示文件属主(owner)、文件属主所属缺省组
'T#x-Y)N+~3p(v程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛的用户(group)、系统中其他用户(other)所拥有的权限。 tech.techweb.com.cn!t![(T*i)j)B$}$n7C
2) 一个 triplet 由 3 个字符位组成(rwx),分别表示可读、可写、可执行。如果对应位置的字符是"-",表示程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛 K:`:S7w d$a$R'g
不具有对应权限。 eg: rw- 表示可读写,不可执行 r-- 表示可读,不可写、执行 tech.techweb.com.cn*D+w+Z7u4P6M6q
3) 在文件权限位的 owner triplet 第 3 个位置的字符如果设置为"s",称为 SUID。当某用户执行该文件时,程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛,e:d3c4[2c#e0n6Y ` S
系统用文件 owner 的 uid 替代实际执行该文件的用户的 uid,文件会认为是 owner 在执行它。
9z8R)U-i0d6n!h9DTechWeb-技术社区4) 在文件权限位的 group triplet 第 3 个位置的字符如果设置为"s",称为 SGID。当某用户执行该文件时,
3p&e ^7M0c6d)Z.[+D&|6_/u系统用文件组拥有者的 gid 替代实际执行该文件的用户的 gid。当在某个目录文件上设置 SGID 时候,则在该
2R4^6x/X#C)S1i6S,Ntech.techweb.com.cn目录下的所有文件和子目录都会继承使用该目录的 GID 来代替实际执行者的 GID。 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛6F8E8k-`*d/V!X
5) 文件设置了 SUID 或 SGID,一般来说文件的 owner 或 group 应该有执行(x)权限。如果没有 x 权限,设置6g%m;n'r0E;[
SUID 或 SGID 是没有意义的,triplet 上第 3 个字符就会是"S"(大写)而不是"s"(小写)。eg: rwSr-Sr-- TechWeb-技术社区*P)} P7~3c-_"H#j0]#v&g
6) 给可执行文件设置 SUID/SGID 可能带来安全风险,许多系统因而忽略 SUID/SGID 权限设置
.j;~1g(U7D7o!U7) 在某些目录(如/tmp)的 other triplet 的第 3 个字符设置为"t"。一般来说,在目录的 other triplet上设
1]0y6c-h6T.e(h3q.D.j+d置 w 和 x 权限,则任何用户都可以在该目录下执行、删除文件,而设置"t"的作用就是保证非目录的 owner 用
(j5k6y/P a!{2D1j)P.{-j5c:u)?户不能删除目录下的文件。
3x6O7t"y%\)Z:`/H0l6.使用 chmod 命令改变权限位
%V)R'I9w"P'Q)l:p程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛 (P.F!D3M(_*@2L$@%W:u
1) 符号模式 Usage: chmod [who] file_name
!H"w#f9D+|9S"c#Rtech.techweb.com.cn① who: 可以是 u g o a,表示给文件的 owner、group、other 和 all 用户设置权限。省略时默认为 a。 9O5O-W/I6]#q
② operator: 可以是+ - =,分别表示增加、取消、指定权限 %e,b;x._)a9K O+z
③ perm: 可以是 r w x s(suid 和 guid) t(粘性位) l(给文件加锁,使其他用户无法访问)
6m5h%g#G.x+X.C#l0j2Btech.techweb.com.cn④ 举例: chmod u+xw o-w myfile // 给 myfile 的 owner 增加 x w 权限,去除 other 用户的 w 权限
2Z a)};M/o%N6u,w:B/D0j"L7@TechWeb-技术社区2) 绝对模式 Usage: chmod mode file_name TechWeb-技术社区2m(Z$}/M&|0i7K2l0?*W2q%I
① mode: 4 位 8 进制数,每一位分别用于 SUID 和 SGID、属主权限、组权限、其他用户权限。当用户给出的
6h,?6u2I.},o;{tech.techweb.com.cnmod 值小于 4 位时,系统会在数字前面加 0 补齐。 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛8L$S+N;X+C!Q.`"C4|$J
② 权限 r w x 分别用数字 4 2 1 表示, suid guid 用 4 2 表示,各个 triplet 的数字相加可得 mod 值。 tech.techweb.com.cn0V)j7}$Y;k%^4b0R6^0x5[8?
eg: rwxr-xr-- 为 754,rwsr-xr-x 为 4755, rwsr-sr-x 为 6755 -rwxrwSr-- 为 2764
,y5|%?#W(K/F7}#c5w'G MTechWeb-技术社区7.目录文件的权限(r w x)的含义
$P,Z0x-s6J9~*F1) r: 可以列出该目录中的内容。 tech.techweb.com.cn3I9q-R$n7z.e7A$o
2) w: 可以在目录中创建、修改文件。目录的 w 位不设置,即使拥有目录中某文件的 w 权限也不能写该文件。
2Z1T6O3?%F3) x: 可以搜索和访问该目录。x 位不设置,不能访问目录下的任何文件,即使拥有文件的权限。 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛 ~.S.p"O8e"I9Y'r%f
8.chown 和 chgrp 修改文件的拥有权 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛(j:Z,y&M;Y0T2C"z/c
1) chown Usage: chown [选项] [owner][.group] file_name
;S1H:? s6`3a;p① 创建文件时,文件预设 owner 就是创建该文件的用户,预设所属组(group)就是 owner 所属的缺省组。只有
)N*h)O/W3M1N'j5l$f7P文件的 owner 和系统管理员才可以改变文件的拥有权,改变一个文件的 owner 时,相应的 suid 也将被清除。 tech.techweb.com.cn&];z(b/o;R!t$c
② chmod 的常用选项: -R 对指定目录所有文件和子目录递归式地进行同样的操作 TechWeb-技术社区+X/L1K9v-q4x4]0i
-h 如果 file_name 是符号链接,则只对符号链接本身进行操作
$\(C0V5Q6_0u+}③ owner 和 .group 表示文件拥有者名和文件所属组名,可以使用 uid/gid 表示。两者不能同时省略 7k7b(b;P-c/d,\0]-o6[
④ 举例: chown http.http /etc/httpd // 将目录/etc/httpd 的属主修改为 http,组修改为 http
&s6C8n7} Z.P9G*x7o;D2) chgrp Usage: chgrp [选项] group file_name 5S2f"Y'K9w8K&[2y
① chgrp 命令只能用来修改文件的所属组。chgrp 和 chown 用法类似,选项也一样。
1m,Z-s/c7t$e0utech.techweb.com.cn② 举例: chown http /etc/httpd // 将目录/etc/httpd 的所属组修改为 http tech.techweb.com.cn+c9x5t k:X6|#Z
3) 查询用户信息和用户所属组信息 2E-i3_1k,n$L
id [user_name] 或 groups [user_name] 1})j)\1F0s-\#m#O%L
8.umask 确定系统创建文件时的缺省权限位。
*]#t#m9r!~0b!k.[!x'?TechWeb-技术社区1) Usage: umask [umask_mod]
5}4B/V5A9h'?*a1?程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛2) umask_mod 的计算方法: umask_mod=777-文件缺省权限值。 +K)`"_8v0[!u)o9o;w6e
3) 系统不允许你在创建一个文件时就赋予它执行权限,即 umask_mod 为 002 时,创建文件的缺省权限值为2\2?9V2~5z"g#}2p(q;Z/E3h
665,创建目录的缺省权限值为 775。
2^:I:s(w7E7V5_/o9.符号链接
1?#?9I7d2w1) Usage: ln -s source_path target_path 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛9T8@9b*g&B4k/E,K
2) 存在 2 种类型的链接: 硬链接和软链接。软链接又称位符号链接,符号链接实际上是指向一个文件的指2G P,A"r/_%l#}5l$Y
针,符号链接和 Windows OS 的快捷方式有点类似。 5r&X$E.J#_$s/k
3) 不管是否在同一个文件系统中,都可以创建链接。在创建链接的时候,不要忘记在原有目录设置执行权
)N-| V3Q)d.d5x限。链接一旦创建,链接目录将具有权限 777(rwxrwxrwx),但是实际的原有文件的权限并未改变。 %J*q1x8u-f'@
4) 举例: ln -s /var/tmp /home/zqf/tmp // 在 zqf 主目录创建一个名为 tmp,指向/var/tmp 的符号链接
|