软链接和硬链接和特殊权限
软链接和硬链接和特殊权限
软链接
- 软链接相当于快捷方式,可以设置目录和文件,并且设置软链接的时候,
- 真实源文件最好用绝对路径表示。
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
,