zoukankan      html  css  js  c++  java
  • linux学习(九)set_uid、set_gid、stick_bit、软链接、硬链接

    一、set_uid

    set_uid其实是一种特殊权限,我们看一个文件:

    [root@iZ25lzba47vZ ~]# ls -l /usr/bin/passwd
    -rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd

    它的所有者的x权限位被s代替了。那么这个s代表什么意思呢?它代表执行这条命令的普通用户,能暂时拥有这个命令所有者的身份。

    举个例子来说,我们可以通过passwd命令来修改密码。我们再来看看密码存放的文件:

    [root@iZ25lzba47vZ ~]# ls -l /etc/shadow
    ---------- 1 root root 941 Mar 25  2017 /etc/shadow

    我们发现这个文件的权限为000,那么普通用户是怎么改的它呢?就是这个s权限。普通用户在执行这条命令时,临时有了root的身份。

    同样的,我们知道普通用户是不能进入到root用户的家目录的。那么,如果我们给ls命令set_uid,应该可以实现吧。

    [root@iZ25lzba47vZ ~]# ls -l /usr/bin/ls
    -rwxr-xr-x. 1 root root 117616 Jun 10  2014 /usr/bin/ls
    [root@iZ25lzba47vZ ~]# chmod u+s /usr/bin/ls
    [root@iZ25lzba47vZ ~]# !ls
    ls -l /usr/bin/ls
    -rwsr-xr-x. 1 root root 117616 Jun 10  2014 /usr/bin/ls
    [root@iZ25lzba47vZ ~]# su ruanwenwu
    [ruanwenwu@iZ25lzba47vZ root]$ ls /root
    1      1.ipt  5      Application  Document.pdf  npm-debug.log  ruanwenwu     syncwithgit.sh
    1.cap  2      a.php  a.txt        iptables.bak  oneinstack     shellscripts

    二、set_gid

    set_gid作用在文件时的意义和set_uid基本一样,只是普通用户在执行它时获得的是文件的所属组的身份。

    set_gid作用于目录时,目录下新建的文件和目录的组名都会和该目录一致:

    [root@iZ25lzba47vZ ~]# chown :ruanwenwu 1
    [root@iZ25lzba47vZ ~]# ls -ld 1
    drw-rwsrw- 4 ruanwenwu ruanwenwu 4096 Oct 26 00:22 1
    [root@iZ25lzba47vZ ~]# touch 1/1.txt
    [root@iZ25lzba47vZ ~]# ls -l 1
    total 12
    -rw-r--r-- 1 root      ruanwenwu    0 Oct 26 22:30 1.txt
    drwxr-xr-x 3 ruanwenwu ruanwenwu 4096 Oct 26 00:01 4
    drwxrwxr-- 2 root      root      4096 Oct 26 00:22 5
    -rw-rw-r-- 1 root      root         2 Oct 26 00:24 5.txt
    [root@iZ25lzba47vZ ~]# 

    发现设置了set_gid之后,在1目录下新建的1.txt的所属组变成了ruanwenwu。

    三、stick_bit

    防删除位。它的作用就是:我的文件你不能删除。但是你可以修改。/tmp/目录就有这个防删除位,在其他用户的可执行权限位的地方。

    [root@iZ25lzba47vZ ~]# ls -ld /tmp
    drwxrwxrwt. 8 www www 454656 Oct 26 22:29 /tmp
    [root@iZ25lzba47vZ ~]# 

    现在我们用ruanwenwu这个用户创建一个文件,然后切换到test用户,看能不能删掉。

    [ruanwenwu@iZ25lzba47vZ tmp]$ ls -l ruanwenwu.txt 
    -rw-rw-r-- 1 ruanwenwu ruanwenwu 0 Oct 26 22:41 ruanwenwu.txt
    [ruanwenwu@iZ25lzba47vZ tmp]$ passwd test
    passwd: Only root can specify a user name.
    [ruanwenwu@iZ25lzba47vZ tmp]$ su root
    Password: 
    [root@iZ25lzba47vZ tmp]# passwd test
    Changing password for user test.
    New password: 
    BAD PASSWORD: The password is shorter than 8 characters
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    [root@iZ25lzba47vZ tmp]# su test
    [test@iZ25lzba47vZ tmp]$ rm -rf ruanwenwu.txt 
    rm: cannot remove ‘ruanwenwu.txt’: Operation not permitted

    发现不能删除,现在我们删除掉/tmp/的stick_bit,然后再来试一次:

    [test@iZ25lzba47vZ tmp]$ chmod o-t /tmp
    chmod: changing permissions of ‘/tmp’: Operation not permitted
    [test@iZ25lzba47vZ tmp]$ su root
    Password: 
    [root@iZ25lzba47vZ tmp]# chmod o-t /tmp/
    [root@iZ25lzba47vZ tmp]# ls -ld /tmp
    drwxrwxrwx. 8 www www 454656 Oct 26 22:46 /tmp
    [root@iZ25lzba47vZ tmp]# su test
    [test@iZ25lzba47vZ tmp]$ rm -rf ruanwenwu.txt 
    [test@iZ25lzba47vZ tmp]$ ls 
    Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
    iZ25lzba47vZ.root.history-timestamp
    iZ25lzba47vZ.ruanwenwu.history-timestamp
    iZ25lzba47vZ.test.history-timestamp
    mysql.sock
    systemd-private-39567547dfdf4a37b00906a534c87627-ntpd.service-QxSGFm

    发现去掉防删除位之后,test用户可以删除ruanwenwu的文件了。

    四、软连接

    软链接相当于windows里的快捷方式。他的生成方式:

    [root@iZ25lzba47vZ tmp]# ln -s /tmp/a.txt /ccc.txt
    [root@iZ25lzba47vZ tmp]# ls -l /ccc.txt 
    lrwxrwxrwx 1 root root 10 Oct 26 22:55 /ccc.txt -> /tmp/a.txt

    软连接的特点是,占用空间小。在生成软连接时,尽量使用绝对路径,这样在移动软连接时,链接就不会失效。

    五、硬链接

    硬链接和原来的文件占用同一个inode地址:

    [root@iZ25lzba47vZ tmp]# ln a.txt c.txt
    [root@iZ25lzba47vZ tmp]# ls -l ./
    total 72
    srwxr-xr-x 1 root      root          0 Oct 18 00:08 Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
    -rw-rw-r-- 2 test      test          0 Oct 26 22:52 a.txt
    lrwxrwxrwx 1 test      test          5 Oct 26 22:54 b.txt -> a.txt
    -rw-rw-r-- 2 test      test          0 Oct 26 22:52 c.txt
    -rw-r--r-- 1 root      root      52645 Oct 26 22:58 iZ25lzba47vZ.root.history-timestamp
    -rw-rw-r-- 1 ruanwenwu ruanwenwu  5616 Oct 26 22:42 iZ25lzba47vZ.ruanwenwu.history-timestamp
    -rw-rw-r-- 1 test      test       2110 Oct 26 22:55 iZ25lzba47vZ.test.history-timestamp
    srwxrwxrwx 1 mysql     mysql         0 Oct 24 18:11 mysql.sock
    -rw------- 1 www       www           0 Oct 26 22:53 sess_vi5k84ucsecldno3kg6edqdh72
    drwx------ 3 www       www        4096 May  5  2016 systemd-private-39567547dfdf4a37b00906a534c87627-ntpd.service-QxSGFm
    [root@iZ25lzba47vZ tmp]# ls -i ./
     268133 Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
     267465 a.txt
     271484 b.txt
     267465 c.txt
     271661 iZ25lzba47vZ.root.history-timestamp
     272224 iZ25lzba47vZ.ruanwenwu.history-timestamp
     271368 iZ25lzba47vZ.test.history-timestamp
     271787 mysql.sock
     271481 sess_vi5k84ucsecldno3kg6edqdh72
    1052102 systemd-private-39567547dfdf4a37b00906a534c87627-ntpd.service-QxSGFm
    [root@iZ25lzba47vZ tmp]# ls -i a.txt c.txt
    267465 a.txt  267465 c.txt

    如果我们删除其中一个文件,另外一个文件会受影响吗?

    [root@iZ25lzba47vZ tmp]# rm -rf a.txt
    [root@iZ25lzba47vZ tmp]# ls -l c.txt 
    -rw-rw-r-- 1 test test 0 Oct 26 22:52 c.txt

    发现,并没有影响到另外一个文件。

    目录是不能做硬链接的,因为目录有自己的inode体系。

    硬链接不能跨分区,因为每个分区都有自己的inode体系。

    坚持!
  • 相关阅读:
    HDU_2030——统计文本中汉字的个数
    HDU_2028——求多个数的最小公倍数
    HDU_2027——统计元音
    HDU_2026——将单词的首字母变大写
    HDU_2025——查找最大的字母
    HDU_2024——判断字符串是否是c语言合法标识符
    HDU_2023——求平均成绩
    HDU_2022——海选女主角
    HDU_2021——最少RMB问题
    HDU_2020——按绝对值排序
  • 原文地址:https://www.cnblogs.com/doubilaile/p/7740095.html
Copyright © 2011-2022 走看看