linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

发布于 2018-01-29  427 次阅读


特殊权限 set_uid

例:

ls -l /usr/bin/passwd:查询 passwd 命令的权限,可见有 s 权限

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

密码文件

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

注:

root 用户拥有对系统至高无上的权限,就算对这个文件没有写的权限,也能赋予这个文件有写的权限

为了让普通用户能修改自己的密码,但对密码文件没有写的权限,就出现了 set_uid

passwd 有 set_uid 权限时,当普通用户执行这个命令时,会临时拥有这个命令所有者的身份

要设置 set_uid,需要这个文件是二进制文件

例:

su aming:切换到用户 aming

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

例:

chmod u+s /usr/bin/ls:给 ls 命令赋予 set_uid 权限后,普通用户也能查看/root 目录

chmod u-s /usr/bin/ls:去除 ls 命令的 set_uid 权限

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

例:

chmod u=rws /usr/bin/ls:这种方式也可以赋予 set_uid 权限,但会导致 x 权限丢失,小写 s 变成大写 S,不过并不影响命令的使用,重新给命令添加 x 权限即可恢复正常

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

特殊权限 set_gid

例:

chmod g+s /usr/bin/ls:给 ls 命令赋予 set_gid 权限后,普通用户也能查看/root 目录

当 ls 有 set_gid 权限时,当普通用户执行这个命令时,会临时拥有这个命令所属组的身份

set_gid 还能作用在目录上

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

例:

chmod g+s 234/:给目录赋予 set_gid 权限后,该目录下所有新建的目录或者文件均会跟主目录的用户组保持一致

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

特殊权限 stick_bit

例:

ls -ld /tmp/:可见/tmp 目录被设置了 stick_bit 权限,此权限又名防删除位,可以让此目录下创建的文件只有所有者或者所属组能做查看/修改/删除的操作,而其他用户或其他组只能查看/修改,不能删除(除了 root 用户)

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

例:

相对于文件的操作实验

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

例:

相对于目录的操作实验

其他用户可以在其目录下进行目录或者文件的操作,但目录所有者也可以对其他用户在其目录下创建的目录或者文件进行操作

操作的权限主要是看文件所在目录下的权限,而不是看文件本身的权限,所以目录的所有者可以对目录下的目录或者文件进行操作

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

软链接文件

类似于 windows 的快捷方式

例:

ls -l /bin:可见/bin 就是一个软链接

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

例:

ln -s /tmp/yum.log /root/234/:创建/tmp/yum.log 的软链接到/root/234 目录下

格式:ln -s 主文件 软链接文件

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

例:

ln -s /tmp/aming2/ /root/234/aming3:软链接也能链接目录

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

例:

ln -s yum.log aminglinux.log:使用相对路径创建软链接,如果软链接文件被转移会出问题,所以建议使用绝对路径创建软链接

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

例:

df -h:查看磁盘使用状况

如:

某个服务的日志文件叫 aming.log,在/boot 分区下,占用空间太大,想把/boot/aming.log 文件转移到空间比较大的分区/,但不能直接用 mv 命令剪切过去,因为会导致这一服务出问题,可以先用 cp /boot/aming.log /aming.log 把日志文件复制到/目录下保存,再用 rm /boot/aming.log 把原来的删除,最后用 ln -s /aming.log /boot/aming.log 创建一个软链接到/boot 分区下

详细命令如下:

cp /boot/aming.log /aming.log

rm /boot/aming.log

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

硬链接文件

不支持对目录做硬链接,只支持对文件做硬链接

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

inode 号会记录一个文件的属性,硬链接真正的文件在 inode 里面,硬链接不占用多余空间

ln 1.txt 001.txt:创建 1.txt 的硬链接,与 001.txt 的大小/创建时间/inode 都会一样

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

例:

删除主文件 1.txt 后,软链接文件会出问题,硬链接文件依然正常使用,只是 inode 会有变化,可以看出两个文件相互为硬链接 没有目标跟源之分

linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接

例:

ln /boot/initrd-plymouth.img /:跨分区做硬链接是不允许的,因为 inode 会冲突linux 学习笔记-009-特殊权限 setuid,setgid,stickbit,软链接和硬链接