二周第四次课(2月1日)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二周第四次课(2月1日)相关的知识,希望对你有一定的参考价值。

2.18 特殊权限set_uid

2.19 特殊权限set_gid

2.20 特殊权限stick_bit

2.21 软链接文件

2.22 硬连接文件



2.18 特殊权限set_uid

#which passwd

/usr/bin/passwd 

# ls -l /usr/bin/passwd 

-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd


-rws中的s是 set_uid的权限

passwd  支持让普通用户更改自己密码

改密码需要通过修改密码的文件/etc/shadow

/etc/shadow的权限是----------

*root是超级权限,可以更改任何权限,即

使文件是-------权限,也是如此。

*想让普通用户更改密码,又不想让普通用户更改密码文件,set_suid可以实现。


如果执行了set_uid,无论是所有者、所属组或其他用户,都会被临时赋予所有者的权限


*set_uid 的作用是保证普通用户临时拥有所有者身份的命令。

如果给文件设定set_uid文件的前提条件是,这个文件必须是二进制可执行文件。


给ls加set_uid权限

打开新的xhsell ssh连接,切换到其他用户登录,

$su -aming

$ls /root

权限不够

切换回最初原本的Xshell连接

#chmod u+s /usr/bin/ls

#ls -l /usr/bin/ls

-rwsr-xr-x. /usr/bin/ls

标红代表ls set_uid赋予成功。


切换其他用户窗口,

$ls -ld /root/

dr-xr-x--- 发现other user还是没有s权限,此处是因为otheruser只是被临时赋予权限,并不是永久,所以可以临时执行root的ls命令权限。


去掉s权限

#chmod u-s /usr/bin/ls 


尝试利用#chmod u=rws /usr/bin/ls来修改权限,

#chmod u=rws /usr/bin/ls

#ls -l /usr/bin/ls

-rwSr-xr-x. /usr/bin/ls

之所以变成S,是因为缺少x权限,此时加上x权限即可,如下

#chmod u+x /usr/bin/ls

#ls -l /usr/bin/ls

-rwsr-xr-x. /usr/bin/ls



2.19 特殊权限set_gid


set_gid和set_uid区别的地方就是,set_gid是对所属组(g)权限修改,而set_uid是所有者(u)权限修改。


此处先还原u的权限,修改为rwx

#chmod u=rwx

#chmod g+s /usr/bin/ls

#ls -l  /usr/bin/ls

-rwxr-sr-x. root root /usr/bin/ls

set_uid 跟set_gid文件功能都相似,只不过是换了角色而已。set_uid的角色是所有者,而set_gid的角色是所属组。


set_gid 可以用在目录上。

为234/创建gid权限

#chmod g+s 234

#ls -ld 234

drwxrwsr-x root root /234/目录

目录颜色没变, 不过g的x变成了s.


#chown :user1 234 所属组设为user1,(所有者root)

#ls -ld 234 

drwxrwsr-x. root user1 234/

创建的目录的子文件所属组也是user1

#touch 234/aminglinux

#ls -l 234/

-rw-rw-r-- root user1 aminglinux 


创建子目录am,结果所属组也是user1

#mkdir 234/am

ls -l 234/

drwxrwsr-- root user1 am/

-rw-rw-r-- root user1 aminglinux


g-s,创建文件,结果发现,取消s之后,所属组变回root.

#chmod g-s 234

#touch 234/aminglinux111

#!ls

drwxrwsr-- root user1 am

-rw-rw-r-- root user1 aminglinux

-rw-rw-r-- root root aminglinux111


*总结:

当作用在文件上,跟set_uid作用是类似的,让普通用户执行文件并使用set_gid的时候,临时拥有所属组的身份权限。当给一个目录设置set_gid,在这目录创建子目录和子文件的时候,这两者的所属组会跟着当前父级目录保持一致。



2.20 特殊权限stick_bit



stick bit权限,/tmp用得比较多。 

drwxrwxrwt.中rwt.的t就是stick_bit,防删除位

#ls -ld /tmp/

drwxrwxrwt. /tmp/


stick_bit 

可以理解为防删除位。文件是否可以被某用户删除,主要取决于该文件所在的目录是否对该用户具有写权限。如果没有写权限,则这个目录下所有的文件都不能删除,同时也不能添加新的文件。如果希望用户能够添加文件,但不能删除该目录下其他用户的文件,则可以对父目录增加该权限。设置该权限后,就算用户对目录具有写权限,也不能删除其他用户的文件。


test

新窗口切换到aming用户,

$cd /tmp/

$touch aming 

$ls -l 

-rw-rw-r-- aming aming aming

所有者,所属组都是aming

$ vi aming 随便写入数据,保存退出wq

$chmod 777 aming

$ls -l aming

-rwxrwxrwx. aming aming aming

$su - user1


1号窗口(2号窗口其他用户作用)切换到user1下

#su - user1

$cd /tmp/

$ls

aming


$vi aming 可以修改,wq。

$rm -f aming 尝试删除 ,提示报错。

此处证明user1不能删除aming创建的文件。

只有root和aming删除


test2

$mkdir user1 

$chmod 777 user1

$ls -l

drwxrwxrwx user1 user1 user1

 

切换至aming用户,

$cd user1

$ls 

$touch 1.txt

$mkdir 234

$ls -l

$cd user1

$ ls -l  文件和目录都没有w权限

-rw-rw-r--  aming aming 1.txt

drwxrwxr-x  aming aming 234

测试能否删除,文件和目录均可删除。

*疑问:为什么普通用户没有w权限,都可以删除目录和文件。

因为 所删除的东西的父目录 /user1 写了w权限,而不是看删除文件和目录本身的权限。 


总结:

stick bit的作用就是防止别的用户删除自己的文件(除了root)。



2.21 软链接文件


软链接类似于windows的快捷方式,

例如 /bin是一个软链接文件

#ls -l /bin

lrwxrwxrwx. root root /bin ->usr/bin

ls命令位于/bin/ls,

所以平时使用的ls命令,相当于使用/usr/bin/ls

举此例子为软链接格式,

/bin/ls --> /usr/bin/ls .


路径长度影响软链接文件大小

lib64/ 软链接集合  

绝对路径用法

#ln -s 源文件路径 目的文件路径 

相对路径用法

#ln -s yum.log aming.log

*这样做的弊端是:源的文件名称和路径发生改变的话,直接影响文件打开的效果。


用处

磁盘快满的时候,该磁盘某文件还在写入数据,导致容量越来越膨胀的时候,应该怎么做?

/boot/aming.log 不停大量写入数据进去/boot 此时/boot即将膨胀爆满,

此时应该这样做,

#cp /boot/aming.log /aming.log

#rm /boot/aming.log 

同时,迅速

#ln -s /aming.log /boot/aming.log.

这样,服务还是会写入/boot/aming.log 

因为写入是通过路径寻找文件。



2.22 硬链接文件


*硬链接核心的地方,就是两个文件使用了同一个inode。(同一indoe只占用一份空间)

硬连接不支持目录,不支持跨分区,只支持文件。


硬链接用法 ln 源 定义名称

#ln 1.txt 1_heard.txt

再做个软链接

#ln -s 1.txt 1_sorft.txt


#ls -l 

-rw-rw-r--. 2 1_heart.txt

lrwxrwxrwx. 1 1_sorft.txt-> 1.txt

-rw-rw-r-- 2 1.txt


#ls -i

.....395 1.txt

.....395 1_heard.txt

.....394 1_sorft.txt 


删除源1.txt查看属性

#rm -f 1.txt

#ls -l

-rw-rw-r--  1 1_heard.txt

lrwxrwxrwx  1 1_sorft.txt>空 闪红

此时发现,源文件不在,硬链接还在,inode号从2变成1。软链接报错,指向路径失败。


以上是关于二周第四次课(2月1日)的主要内容,如果未能解决你的问题,请参考以下文章

二周第四次课(12月21日)

二周第四次课(12月21日)

Linux学习笔记第二周第四次课(2月1日)

Linux学习笔记第二周第四次课(2月1日)

九周第四次课(2月26日)

Linux20180502 六周第四次课(5月2日)