软链接和硬链接和特殊权限

软链接和硬链接和特殊权限

软链接

  • 软链接相当于快捷方式,可以设置目录和文件,并且设置软链接的时候,
  • 真实源文件最好用绝对路径表示。
root@xujb01 test]# ln -s test01.txt test02.txt             #软链接相当于快捷方式,可以设置目录和文件  ln -s
[root@xujb01 test]# ll -i
total 4
914317 -rw-r--r--. 1 root root 12 Oct 27 01:45 test01.txt
914316 lrwxrwxrwx. 1 root root 10 Oct 27 01:45 test02.txt -> test01.txt
[root@xujb01 test]# mkdir dir
[root@xujb01 test]# mv test02.txt dir/
[root@xujb01 test]# ll dir
total 0
lrwxrwxrwx. 1 root root 10 Oct 27 01:45 test02.txt ->*** test01.txt ***          #用相对位置,转移了快捷方式位置会照成软链接不可以用,
-------------------------------------------------------------------------------------------------
[root@xujb01 test]# cp test02.txt test03.txt                                        #复制软链接相当于复制了源文件
[root@xujb01 test]# ll
total 12
drwxr-xr-x. 2 root root 4096 Oct 27 01:54 dir
-rw-r--r--. 1 root root   12 Oct 27 01:45 test01.txt
lrwxrwxrwx. 1 root root   10 Oct 27 01:45 test02.txt -> test01.txt
-rw-r--r--. 1 root root   12 Oct 27 01:54 test03.txt

硬链接

  • 硬链接与cp的差别为硬链接和源文件是拥有同一个inode,硬链接就好像一个杯子里原来放了一根吸管,做了个硬链接就等于多放了根管子,不管从那根管子倒进去水,杯子
      的水都会相应变化,而cp等于多造一个杯子和吸管,这两个杯子从造出来后就没关系了。
  • 做硬链接只限文件做硬链接
  • 设置硬链接不可以跨设备
[root@xujb01 test]# ln test01.txt test02.txt                  #ln 创建硬链接
[root@xujb01 test]# ll -i
total 8
914316 -rw-r--r--. 2 root root 12 Oct 27 02:01 test01.txt
914316 -rw-r--r--. 2 root root 12 Oct 27 02:01 test02.txt
[root@xujb01 test]# cat test01.txt test02.txt
hello world
hello world
[root@xujb01 test]# echo "test first" > test02.txt    #修改一个文件的值,例外链接文件内容跟着相应变化,inode相同他们拥有相同的地址,而cp没有这个变化
[root@xujb01 test]# cat test01.txt test02.txt
test first
test first

[root@xujb01 test]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        18G  1.6G   16G  10% /
devtmpfs        484M     0  484M   0% /dev
tmpfs           495M     0  495M   0% /dev/shm
tmpfs           495M  6.9M  488M   2% /run
tmpfs           495M     0  495M   0% /sys/fs/cgroup
/dev/sda1        93M   90M     0 100% /boot
tmpfs            99M     0   99M   0% /run/user/1000
tmpfs            99M     0   99M   0% /run/user/0
tmpfs            99M     0   99M   0% /run/user/1002
[root@xujb01 test]# ln test0
test01.txt  test02.txt
[root@xujb01 test]# ln test01.txt /boot/test02                                                              #设置硬链接不可以跨设备
ln: failed to create hard link '/boot/test02' => 'test01.txt': Invalid cross-device link

suid sgid stick_bit

  • chmod 命令设置文件权限,有四位可以设置例如0777,后面三位表示u,g,o,第一位既是特殊权限位,其中4表示u位,2表示g位,1表示o位
    [root@xujb01 test]# touch test
    [root@xujb01 test]# ll
    total 0
    -rw-r--r--. 1 root root 0 Oct 27 02:13 test
    [root@xujb01 test]# chmod 7666 test;ll
    total 0
    -rwSrwSrwT. 1 root root 0 Oct 27 02:13 test
    [root@xujb01 test]#
    root@xujb01 test]# chmod 7111 test;ll
    total 0
    ---s--s--t. 1 root root 0 Oct 27 02:13 test
    
    从上面可以知道 特殊权限位当相应位置有执行权限的时候s s t是小写的,没有执行权限x,相对应的位置就是大写的·S`S T
    SUID
  • SUID只对二进制文件起作用,
  • 调用者必须对该文件有执行权,不然用户连起步都起不了
  • 在执行过程中,其他用户就以此二进制文件的所有者去执行其他操作
[root@xujb01 tmp]# ll -d /root
dr-xr-x---. 3 root root 4096 Oct 27 01:45 /root   #/root目录其他用户没有任何权限所以切换到其他用户则返回数据为:
[test02@xujb01 tmp]$ ls /root
ls: cannot open directory /root: Permission denied

[root@xujb01 tmp]# chmod u+s /bin/ls   #此时其他用户以root用户去执行操作所以下面就可以显示/root目录
[test02@xujb01 tmp]$ ll -d /root
dr-xr-x---. 3 root root 4096 Oct 27 01:45 /root

SGID

  • 对目录和文件都有效,文件来说也是对而机制文件起作用,并且以其组的权限去执行操作
  • 对目录设置SGID权限,则无论创建文件或者文件夹都以其组来创建
[root@xujb01 test]# mkdir testgid
[root@xujb01 test]# ll -d testgid/
drwxr-xr-x. 2 root root 4096 Oct 27 02:28 testgid/
chown test02:test02 testgid/

[root@xujb01 test]# touch testgid/txt         #位设置SGID位创建的用户就是登入的用户root
[root@xujb01 test]# ll testgid/txt
-rw-r--r--. 1 root root 0 Oct 27 02:29 testgid/txt

[root@xujb01 test]# chmod g+s testgid/
[root@xujb01 test]# ll
total 4
drwxr-sr-x. 2 test02 test02 4096 Oct 27 02:29 testgid
[root@xujb01 test]# touch testgid/txt2
[root@xujb01 test]# ll testgid/
total 0
-rw-r--r--. 1 root root   0 Oct 27 02:29 txt
-rw-r--r--. 1 root test02 0 Oct 27 02:30 txt2  #修改目录SGID后,其创建文件的组都属其跟目录的用户组 test02

STICK_BIT

  • 防止不同用户删除另外个用户的文件,既是o有7的满权限
  • 只对文件夹有效
[test02@xujb01 tmp]$ ll test
total 4
drwxrwxrwx. 2 root root 4096 Oct 27 02:38 test
[test02@xujb01 tmp]$ ll -d test
drwxr-xr--. 3 root root 4096 Oct 27 02:37 test
[test02@xujb01 tmp]$ cd test
[test02@xujb01 test]$ ll
total 4
drwxrwxrwx. 2 root root 4096 Oct 27 02:38 test
[test02@xujb01 test]$ rm -r test/txt
[test02@xujb01 test]$ ll test/t
ls: cannot access test/t: No such file or directory
[test02@xujb01 test]$ ll test/
total 0
[test02@xujb01 test]$ ll -d /tmp/
drwxrwxrwt. 48 root root 4096 Oct 27 01:51 /tmp/
[test02@xujb01 test]$ ll
total 4
drwxrwxrwt. 2 root root 4096 Oct 27 02:41 test
[test02@xujb01 test]$ rm test/txt
rm: remove write-protected regular empty file 'test/txt'? y
rm: cannot remove 'test/txt': Operation not permitted

首先test目录给满权限777,在里面创建一个文件,并且换到其他用户可以看到,其他用户是可以删除其文件的
而后来加上o+t权限后既使拥有其他用户777权限,但还是rm 后打印失败 rm 打印 cannot remove 'test/txt': Operation not permitted

posted on 2017-10-27 02:51  游荡的鱼  阅读(1048)  评论(0编辑  收藏  举报

导航