因为对于linux部分实在是不熟悉,所以出的题很难应付的来,所以在复习阶段进行一个整理,希望有用。
目录
ID
PID:进程ID,能唯一标识进程的的非负整数标识,可以用来查询进程并对进程进行调度等,可以回收再利用。此处引申以下goole的进程管理,goole采用了进程隔离,好处是隔离会更加安全,坏处是隔离会占用较多内存。
UID:用户ID,在Linux中是不使用用户名称而使用用户的ID信息,用户的名称与 ID 的对应关系都存储在 /etc/passwd 文件中,会跟着ID找名称。
GID:组ID。
文件及目录权限
文件权限是重中之重,期中考试就栽了,希望期末能够有所进步。
文件权限
首先是简单的说明:r可读,w可写,x可执行。需要注意的是w意味着可以编辑,也就是对文件进行内容的改动,而并非可以删除文件。
其次在权限部分,我们三分天下分别是:所有者权限(u)、组权限(g)和其他用户权限(o)。
如下图所示,第一部分是表示各个部分的相关权限;第二部分是表示硬链接的个数(将在后续说明);第三部分是表示该文件/目录的所有者以及他所在的组,之后是一些z在权限部分无关紧要的信息。也就是说,对于文件所有者walbert他可以进行读写执行,对于和他同组support的成员不能进行写,其他成员什么都不能干。

练习:观察下图,benn是否可以读取report.txt?

benn是report.txt的所有者,所有者的权限是r--表示其可以进行读取。同组的可以读和写而其他用户只可以写。
目录权限
目录和文件的区别是:目录会在一开头有一个d的标识。
对于rwx目录有着不一样的解释:r表示可以读取目录中文件的名称(仅是名称,不带其他任何属性);w表示可以在目录中创建文件和删除文件;x表示可以进入目录并获取文件属性。分析下图:jk是所有者,他可以对目录进行任何操作;ugrad组的成员可以访问并查看目录中文件名及属性;其他用户同理。

结合两个荧光黄重点标注的部分我们可以得出结论:在删除文件时文件本身的属性不重要,要同时具有对目录的rwx才可以删除。个人认为光有w是不够的,因为对于系统来说他还是进入目录才能删除,所以没有x应该是不可以正常删除的,没有r应该也是不行的。
练习:已知staff的组员有alex,benn和cloe;gurus的组员有cloe。那么alex是否可以读取code.c?cloe能否删除code.h?

可以看到这两个文件都位于src目录下,对于该目录staff组具有读和执行的权限,也就是可以随意进行读取,但不能创建和删除文件,alex在该组中,所以可以读取code.c。cloe不能删除code.h。这也验证了:文件本身不重要,他的目录才是王道。
总结出来的技巧就是:应该先判断对于目录的权限,再判断对于文件的权限,如果目录都不能进,那么文件根本就是瞎掰。
将完整的图放上来,第一行的意思是当前查看的整个目录都是alex的,且权限是rwx都有,所以alex可以肆无忌惮的操作整个目录,包括删除操作。

特殊权限位
setuid:在运行时以程序所有者的权限进行执行,而忽略其他所有权限位,也就是说直接看所有者的权限即可。注意对大小写S进行区分:s表示具有执行权限,在该情况下setuid有用;S表示本身就不具有执行权限,也就是没有任何用处,该什么权限还是什么权限。
分析下面这个图:第一行s表示可以setuid,那么所有人都有rwx的权限;第二行不涉及任何setuid信息,该是谁还是谁;第三行是S,同样表示没有用。

setgid:在运行时以程序所有组的权限进行执行,而忽略其他所有权限位。将会替换掉第七个字符,其他等同于setuid的分析方式。
粘滞目录:针对目录内文件的删除和移动。对于目录内文件a,只有其所有者或者root才能对于它进行删除和移动,就算是others拥有目录访问权限rwx。一般用于tmp目录的others部分,防止普通用户删除或移动别人的文件。

改变文件的访问权限
chmod可以用来改变权限,有文字设定法与用户设定法两种方式。
文字设定法:设定的对象分为ugoa四个字母,其中a表示all。设定的方式有+-=,其中=表示赋予指定的权限并取消其他所有权限。可赋予的权限分为rwxs,s表示uid。
举例:chmod a+w 1.txt:将所有用户都添加1.txt的写权限。u+s表示setuid,g+s表示setgid,o+t表示对others设置粘滞目录。

数字设定法:0(无任何权限),4(r),2(w),1(x):rwx=4+2+1=7。从左向右表示ugo:755=>u=7=rwx g=5=rx=o。setuid、setid和sticky位分别由数值 4、2 和 1:4755=-rwsr-xr-x。
su和sudo命令
su:只能获得root的特权而不能获得他的环境变量:uid=gid...=root的,但是PATH却还是自己的。
su -:就是完完整整的root,既有权限又有PATH。
sudo:可以使用root身份执行一个命令,sudo命令所使用的环境变量既不是普通用户的环境变量又不是root用户的环境变量,而是进行了重置。这样非常安全,就算是泄露也只是影响到一个用户,而不会影响到root。
Path环境变量
指定搜索以找到命令的目录。在profile文件中指定,每个用户都有一个。可以通过更改Path值来进行攻击:比如说要求先搜索/tmp放置一个su程序,于是可以得到用户的root口令,并在之后调用真正的su,使用户完全无感。
这个攻击可以通过指定完整的路径名来预防,这样就不会搜查Path了。或者在系统管理员登录用户端时使用/usr/bin/su - root来保证是真正的root环境,因为用户是可以更改自己的profile文件的。
文件储存
Linux中所有都是文件。
文件=目录项(文件名和inode号码)+inode(文件索引节点)+数据块(文件具体内容)
inode唯一标识文件,查找中先用文件名在目录中找到inode号码,之后找到inode,根据inode信息找到block后读取数据。inode时文件的原信息储存地,包括以下内容:

在文件的储存中是不包括文件名的。
文件的储存结构是树。
其他
ACE:访问控制条目,允许或拒绝用户或组对资源的访问(rwx)。
ACL=ACE的排序列表。
DAC:文件的权限由所有者来设置和分配。
Android对每一个应用都赋予uid,一对一,达到资源隔离的目的。且每个App单独申请权限,由用户选择是否授权。
硬链接:复制文件。多个文件名指向同一个inode,当链接数=0时表示文件彻底删除,回收inode。
软链接:快捷方式。没有指向inode,文件删除时软链接指空报错。
本文介绍了Linux中的文件及目录权限、进程ID(PID)、用户ID(UID)和组ID(GID),重点讲解了文件权限的三个部分、特殊权限如setuid和setgid,以及如何使用chmod、su和sudo命令。还讨论了Path环境变量的安全性以及文件在Linux中的储存结构,包括硬链接和软链接的概念。
1308

被折叠的 条评论
为什么被折叠?



