zoukankan      html  css  js  c++  java
  • Linux总结(十二)set_uid set_gid stic_bit 软链接 硬链接

    一 set_uid

    之前我们修改普通用户的登陆密码,都是以管理员身份在操作,比如我们在lv账户下,我们使用
    sudo passwd lv 重置lv账户密码,此时我们直接拿到root权限忽略掉了文件权限的限制。那么还有一种情况就是,类似于我们自己修改我们银行账户密码一样,我们并不是管理员,我们只需要知道以前的旧密码就可以修改,看下linux普通用户依照文件权限修改密码的机制:
    ls -l /usr/bin/passwd 
    ls -l /etc/shadow
    Linux总结(十二)set_uid set_gid  stic_bit 软链接 硬链接
    我们发现/usr/bin/passwd该命令文件为红色,其中属主权限为rws,s起什么作用呢?
    我们用passwd修改密码的过程是这样的,执行/usr/bin/passwd 命令,修改/etc/shadow密码文件
    我们发现虽然/usr/bin/passwd 对于其他用户有x权限,但是/ectc/shadow 却是0权限,那么普通用户是怎么修改自己当前密码的呢?(此时执行passwd 不带任何参数,带账户名就是前面提及的情况)为了解决以上矛盾, set_uid登场了,当一个带有set_uid权限,显示为s的命令文件被执行时,会临时借用该文件属主的身份,通常意味着普通用户借用到root身份完成操作。我们注意到上面一个细节,当u=rwx 时,u+s 会显示为rws,不会显示为rwxs。当然u-s 又会还原。如果
    是rws, u-x 会变为rwS , S 意味着没有x权限。
    以下举两个例子:
    1 passwd 修改密码
    Linux总结(十二)set_uid set_gid  stic_bit 软链接 硬链接
    去掉s权限再试
    Linux总结(十二)set_uid set_gid  stic_bit 软链接 硬链接
    2 ls 给s权限前后
    Linux总结(十二)set_uid set_gid  stic_bit 软链接 硬链接

    二 set_gid

    1.当该权限作用于命令文件时,其功能等同于set_uid,不过作用对象为属组,详细解释就是,给一个命令文件临时赋予该文件属组的身份。
    Linux总结(十二)set_uid set_gid  stic_bit 软链接 硬链接
    2.当该权限作用于目录时,在该目录下创建的文件或者目录,其属组继承该目录的属组。请看以下例子:
    Linux总结(十二)set_uid set_gid  stic_bit 软链接 硬链接
    Linux总结(十二)set_uid set_gid  stic_bit 软链接 硬链接

    三 stic_bit 防删除位

    普通用户之间可以共享文件的编辑权,但是不能随意删除其他用户的文件,因此设立stic_bit 权限进行约束。请看下面例子:
    Linux总结(十二)set_uid set_gid  stic_bit 软链接 硬链接
    我们发现对于其他用户来说出现了一个t权限,该t权限就是stic_bit,我们用两个普通用户验证下他的作用:
    Linux总结(十二)set_uid set_gid  stic_bit 软链接 硬链接
    Linux总结(十二)set_uid set_gid  stic_bit 软链接 硬链接

    如上图所示,我们首先在lv-one账户下删除了lv账户下的test目录下的1.txt文件,随后我们给test目录加入t权限,然后再用lv-one删除test目录下的子目录test1,提示不允许,说用t权限发挥了作用。

    四 软链接

    格式 ln -s 源文件 链接文件
    软连接最直观的理解就是windos下的快捷方式,他实现了文件执行入口不再局限于文件本身位置,而是可以向其他位置转移。比如通过快捷方式我们可以在任意磁盘下打开f盘存放的电影。
    下面我们讨论下相对路径和绝对路径:
    软链接相对路径据对路径都可以,但是当我们挪动链接文件时,相对路径做的软链接很容易找不到源而失效,绝对路径就不会有这种问题。我们来看下面的例子:

    Linux总结(十二)set_uid set_gid  stic_bit 软链接 硬链接
    Linux总结(十二)set_uid set_gid  stic_bit 软链接 硬链接
    软链接一个应用案例
    假如/boot 分区下某个应用程序的日志文件test.log逐渐增大到马上占满整个boot分区,但是根分区空间仍然富余,那么我们可以用软件链接的办法把/boot分区下的这个数据源给挪出去,因为该路径不好改动,因此仅让他做一个映射就可以。具体办法如下:
    1先把原来的数据挪出去,cp /boot/test.log / 
    2删除原来的数据,rm -rf /boot/test.log
    3软链接重新搭建数据池 ln -s /test.log /boot/test.log

    五 硬链接

    格式 ln 源文件 链接文件 
    硬链接生成的文件如果查看用du查看发现跟源文件大小相同,但是使用的是同一个inod节点,因此并不是复制,我们可以理解为,同一物体的两种命名,硬链接不可以跨分区,不能作用于目录。
    Linux总结(十二)set_uid set_gid  stic_bit 软链接 硬链接

  • 相关阅读:
    多线程常见面试题
    Redis常见面试题总结
    ehcache缓存技术的特性
    sar 命令详解
    面试题
    BOOTPROTO=[none|static|bootp|dhcp](引导时不使用协议|静态分配|BOOTP协议|DHCP协议)
    课后习题-10
    ulimit 命令详解
    课后习题-9
    netstat 命令详解
  • 原文地址:https://www.cnblogs.com/aksir/p/9069745.html
Copyright © 2011-2022 走看看