linux学习lesson9

目录

1 特殊权限set_uid

2 特殊权限set_gid

3 特殊权限stick_bit

4 软链接文件

5 硬连接文件


1 特殊权限set_uid

set_uid:针对二进制可执行文件,使文件在执行阶段具有文件所有者的权限

 系统passwd文件,所有者权限位上,第三位是s

#ls -l /usr/bin/passwd

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

切换到普通用户user:

查看root目录,提示权限不够

[root@worker1 ~]# su - user
Last login: Mon Sep 17 18:10:53 CST 2018 on pts/1
[user@worker1 ~]$ whoami
user
[user@worker1 ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
[user@worker1 ~]$

root用户:

增加普通用户有临时的root权限

#chmod u+s /usr/bin/ls

[root@worker1 ~]# chmod u+s /usr/bin/ls

普通用户user:

#ls  /root/

[user@worker1 ~]$ ls /root/
anaconda-ks.cfg

取消普通用拥有root权限

[root@worker1 ~]# chmod u-s /usr/bin/ls

 另一种方式赋值权限:

#chmod u=rws /usr/bin/ls

root用户:

[root@worker1 ~]# chmod u=rws /usr/bin/ls

user用户:

[user@worker1 ~]$ ls /root/ //也具有权限查看根目录内容
anaconda-ks.cfg
[user@worker1 ~]$ ls -l /usr/bin/ls //所有者第三位变成了大写s,是因为没有x权限,增加以后就变成小写s了
-rwSr-xr-x. 1 root root 117616 Nov 20  2015 /usr/bin/ls

root用户:

#chmod u+x /usr/bin/ls

[root@worker1 ~]# chmod u+x /usr/bin/ls

user用户:

[user@worker1 ~]$ ls -l /usr/bin/ls //增加x权限后变为小写s了
-rwsr-xr-x. 1 root root 117616 Nov 20  2015 /usr/bin/ls

 

2 特殊权限set_gid

stick_bit:对二进制可执行文件和目录,在执行阶段具有文件所属组的权限

对根目录操作:

user用户:

[user@worker1 lesson9]$ ls /root/
ls: cannot open directory /root/: Permission denied

root用户:

#chmod g+s /usr/bin/ls 

#ls -l /usr/bin/ls //所属组第三位为s

[root@worker1 ~]# chmod g+s /usr/bin/ls
[root@worker1 ~]# ls -l /usr/bin/ls
-rwxr-sr-x. 1 root root 117616 Nov 20  2015 /usr/bin/ls

user用户:

#ls /root/

[user@worker1 lesson9]$ ls /root/ //可以查看root目录的内容
anaconda-ks.cfg

创建dir2目录,并set_gid:

#mkdir dir2

#chmod g+s dir2 //所属组是user

#chown :user dir2/

#mkdir dir2/dir3

#touch dir2/file1.txt

[root@worker1 lesson9]# mkdir dir2
[root@worker1 lesson9]# chmod g+s dir2
[root@worker1 lesson9]# chown :user dir2
[root@worker1 lesson9]# mkdir dir2/dir3
[root@worker1 lesson9]# touch dir2/file1.txt
[root@worker1 lesson9]# ls -l dir2
total 0
drwxr-sr-x 2 root user 6 Sep 17 18:51 dir3
-rw-r--r-- 1 root user 0 Sep 17 18:51 file1.txt

将dir2目录取消set_gid:

#chmod g-s dir2 

#mkdir dir2/dir4/

#touch dir2/file2.txt

#ls -l dir2/

[root@worker1 lesson9]# chmod g-s dir2
[root@worker1 lesson9]# mkdir dir2/dir4/
[root@worker1 lesson9]# mkdir dir2/file2.txt
[root@worker1 lesson9]# ls -l dir2/
total 0
drwxr-sr-x 2 root user 6 Sep 17 18:51 dir3
drwxr-xr-x 2 root root 6 Sep 17 18:58 dir4
-rw-r--r-- 1 root user 0 Sep 17 18:51 file1.txt
drwxr-xr-x 2 root root 6 Sep 17 18:58 file2.txt

由上可知dir2下子文件和子目录的所属组用户与父目录set_gid的所属组有关

 

3 特殊权限stick_bit

$ls -ld /tmp/

[user@worker1 ~]$ ls -ld /tmp/
drwxrwxrwt. 8 root root 4096 Sep 17 17:56 /tmp/

user用户:

$cd /tmp/

$touch file1.txt

$chmod 777 file1.txt

$vi file1.txt //添加内容

[user@worker1 tmp]$ touch file1.txt
[user@worker1 tmp]$ chmod 777 file1.txt
[user@worker1 tmp]$ vi file1.txt

在tmp目录下:

user1用户:

$su - user1

$vi file1.txt //修改内容,随意修改

$rm -f file1.txt 不可以删除,就是防删除

[user1@worker1 tmp]$ vi file1.txt
[user1@worker1 tmp]$ rm -f file1.txt
rm: cannot remove ‘file1.txt’: Operation not permitted

在/tmp/dir1目录下:

user用户:

$mkdir dir1

$chmod 777 dir1/

[user@worker1 tmp]$ mkdir dir1
[user@worker1 tmp]$ chmod 777 dir1/

user1用户:

$cd dir1/

$touch file2.txt

$mkdir dir2/

$rm file2.txt

$rm dir2

[user@worker1 dir1]$ touch file2.txt
[user@worker1 dir1]$ mkdir dir2
[user1@worker1 dir1]$ rm file2.txt
rm: remove write-protected regular empty file ‘file2.txt’? y
[user1@worker1 dir1]$ rm -r dir2/
rm: remove write-protected directory ‘dir2/’? y
[user1@worker1 dir1]$ ls

由上可知:不是文件或目录本身的权限,而是所在目录的权限

 

4 软链接文件

软链接:是建立一个独立的文件,当读取这个链接文件时,它会把读取的行为转发到改文件所链接的文件上

#ls -l /bin

#/bin/ls //查看

#/usr/bin/ls

[root@worker1 tmp]# ls -l /bin
lrwxrwxrwx. 1 root root 7 Sep  5 22:52 /bin -> usr/bin
[root@worker1 tmp]# /bin/ls
dir1  lesson8  lesson9    yum.log
[root@worker1 tmp]# /usr/bin/ls
dir1  lesson8  lesson9    yum.log

软链接操作:

ln -s /root/dir1/file1.txt /tmp/dir1/file.txt //目录做软链接

不同目录做软链接

来源文件:

#mkdir /root/dir1

#touch /root/dir1/file1.txt

#echo "hello world" > file1.txt

[root@worker1 dir1]# mkdir /root/dir1/
[root@worker1 dir1]# touch /root/dir1/file1.txt
[root@worker1 dir1]# echo "hello world" > file1.txt

目标文件:

#mkdir /tmp/dir/

#ln -s /root/dir1/file1.txt /tmp/dir1/file.txt

[root@worker1 dir1]# mkdir /tmp/dir1/
[root@worker1 dir1]# ln -s /root/dir1/file1.txt /tmp/dir1/file.txt
[root@worker1 dir1]# cat /tmp/dir1/file.txt
hello world

同目录下做软链接:

[root@worker1 tmp]# mkdir /tmp/dir1/
[root@worker1 tmp]# mkdir /tmp/dir2/
[root@worker1 tmp]# touch /tmp/dir1/yumbak.log
[root@worker1 tmp]# echo "hello world" > /tmp/dir1/yumbak.log
[root@worker1 tmp]# cd /dir1/
[root@worker1 dir1]# ln -s yumbak.log log1
[root@worker1 dir1]# ls -l
total 4
lrwxrwxrwx 1 root root 20 Sep 17 19:53 file.txt -> /root/dir1/file1.txt
lrwxrwxrwx 1 root root 10 Sep 17 20:54 log1 -> yumbak.log
-rw-r--r-- 1 root root 12 Sep 17 20:41 yumbak.log
[root@worker1 dir1]# cat log1
hello world

对软链接文件移动到/tmp/dir2/目录下,再查看log1软链接文件,出现找不到源文件

[root@worker1 dir1]# mv log1 /tmp/dir2/ //将log1软链接移动到/tmp/dir2/下
[root@worker1 dir1]# cd /tmp/dir2/
[root@worker1 dir2]# ls -l
total 0
lrwxrwxrwx 1 root root 10 Sep 17 20:54 log1 -> yumbak.log
[root@worker1 dir2]# cat log1 //找不到链接文件
cat: log1: No such file or directory

由上可知,文件软链接尽量使用绝对路径,不要使用相对路径

 

5 硬连接文件

硬链接:读取一个文件时,会先读inode信息,再根据inode中的信息到信息块区域将数据去出来;而硬链接是直接再建立一个inode链接到文件放置的块区域,即进行硬链接时改文件内容没有任何变化,只是增加一个执行这个文件的inode,并不会格外占用磁盘空间。硬链接有两个限制:不能跨文件系统,因为不同的文件系统有不同的inode table;不能链接目录

#cd /tmp/dir1/

#ln /tmp/yumbak.log /tmp/1_hard.txt //硬链接

#ln -s /tmp/1.txt /tmp/1_soft.txt //软链接

[root@worker1 dir1]# cd /tmp/dir1
[root@worker1 dir1]# ls
file.txt  yumbak.log
[root@worker1 dir1]# ln -s /tmp/dir1/yumbak.log  /tmp/dir1/soft.log
[root@worker1 dir1]# ln  /tmp/dir1/yumbak.log  /tmp/dir1/hard.log
[root@worker1 dir1]# ls -il
total 8
68312209 lrwxrwxrwx 1 root root 20 Sep 17 19:53 file.txt -> /root/dir1/file1.txt
101444005 -rw-r--r-- 2 root root 12 Sep 17 20:41 hard.log
68312213 lrwxrwxrwx 1 root root 20 Sep 17 21:12 soft.log -> /tmp/dir1/yumbak.log
101444005 -rw-r--r-- 2 root root 12 Sep 17 20:41 yumbak.log

软链接的inode 与源文件不同,只是一个文件链接,会占比较小空间,删除了不会影响源文件

硬链接的inode 与源文件相同,只是对文件inode增加一个指向,真正存文件就是inode,表示一个文件,不会占空间

硬链接不能跨分区创建:

因为不同分区下,有相同的inode,因为系统分区的时候inode已经分配好了而且都有自己独立体系的inode

[root@worker1 dir1]# ln /tmp/dir1/yumbak.log /boot/test.log
ln: failed to create hard link ‘/boot/test.log’ => ‘/tmp/dir1/yumbak.log’: Invalid cross-device link

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值