博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
特殊权限、软硬链接
阅读量:6629 次
发布时间:2019-06-25

本文共 3621 字,大约阅读时间需要 12 分钟。

sset_uid的权限

除了所有者之外的其他用户临时拥有所有者的身份。(前提是一个二进制可执行文件),目录页可以设置但是没意义

[root@localhost ~]# ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

 

[root@localhost ~]# ll -d /usr/bin/ls

-rwxr-xr-x. 1 root root 117616 6月  10 2014 /usr/bin/ls

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

[root@localhost ~]# ll /usr/bin/ls

-rwsr-xr-x. 1 root root 117616 6月  10 2014 /usr/bin/ls

 

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

[root@localhost ~]# ll /usr/bin/ls   //S也可以执行

-rwSr-xr-x. 1 root root 117616 6月  10 2014 /usr/bin/ls

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

[root@localhost ~]# ll /usr/bin/ls

-rwsr-xr-x. 1 root root 117616 6月  10 2014 /usr/bin/ls

 

2.19 特殊权限set_gid

sset_gid的权限

执行文件的普通用户拥有所有组的身份

[root@localhost ~]# ll /usr/bin/ls

-rwxr-xr-x. 1 root root 117616 6月  10 2014 /usr/bin/ls

[root@localhost ~]# chmod g+s /usr/bin/ls

[root@localhost ~]# ll /usr/bin/ls

-rwxr-sr-x. 1 root root 117616 6月  10 2014 /usr/bin/ls

 

给目录增加set_gid权限后,在目录下创建子目录或者文件所属组的名字都是设置set_gid的组名保持一致

[root@localhost ~]# chmod g+s lsx

[root@localhost ~]# touch lsx/2.txt

[root@localhost ~]# ll lsx/

总用量 0

-rw-r--r--. 1 root root  0 10月 21 02:34 1.txt

-rw-r--r--. 1 root user1 0 10月 21 02:37 2.txt

 

2.20 特殊权限stick_bit

stick_bit:防删除位(靠父级目录决定的)

[root@localhost ~]# ll -d /tmp/  //该目录下防止其他用户删除自己的文件。除了root

drwxrwxrwt. 10 root root 4096 10月 21 02:28 /tmp/

 

[user1@localhost tmp]$ whoami

user1

[user1@localhost ~]$ pwd

/home/user1

[user1@localhost ~]$ mkdir lsx

[user1@localhost ~]$ mkdir lsx/lshx

[user1@localhost ~]$ mkdir lsx/1.txt

[user1@localhost ~]$ ll  //目录可读写、执行

drwxrwxrwx. 4 user1 user1 29 10月 21 03:01 lsx

[user1@localhost ~]$ ll lsx/  //

drwxrwxr-x. 2 user1 user1 6 10月 21 03:01 1.txt

drwxrwxr-x. 2 user1 user1 6 10月 21 03:01 lshx

 

User2用户

[user2@localhost lsx]$ ls

1.txt  lshx

[user2@localhost lsx]$ rm -rf 1.txt/  //其他用户可以删除user1用户创建的目录下的文件是因为该文件所在目录的文件权限为777,而不是看删除文件本身的权限

[user2@localhost lsx]$ ll

drwxrwxr-x. 2 user1 user1 6 10月 21 03:01 lshx

 

2.21 软链接文件

[root@localhost ~]# ls -l /bin  //bin是软链接,源文件在/usr/bin

lrwxrwxrwx. 1 root root 7 10月 15 22:36 /bin -> usr/bin

软链接:

[root@localhost ~]# ln -s 源文件 软链接文件

 

[root@localhost ~]# ln -s /tmp/yum.log /root/111  //软链接文件

[root@localhost ~]# ll

lrwxrwxrwx. 1 root root  12 Oct 21 03:56 111 -> /tmp/yum.log

 

[root@localhost ~]# ln -s /tmp/lsx /root/222  //软链接目录

[root@localhost ~]# ll

lrwxrwxrwx. 1 root root   8 Oct 21 03:59 222 -> /tmp/lsx

 

相对路径设置软链接弊端,当目录改名时会出现问题。尽量使用绝对路径设置软链接

[root@localhost tmp]# ln -s yum.log lsx.log  //相对路径设置软链接

[root@localhost tmp]# ls -l

lrwxrwxrwx. 1 root  root    7 Oct 21 04:04 lsx.log -> yum.log

 

生产场景:

[root@localhost tmp]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        11G  903M  9.8G   9% /

devtmpfs        260M     0  260M   0% /dev

tmpfs           265M     0  265M   0% /dev/shm

tmpfs           265M  4.4M  261M   2% /run

tmpfs           265M     0  265M   0% /sys/fs/cgroup

/dev/sda1       197M   81M  117M  41% /boot

比如:有一个服务lsx,写日志到了/boot/lsx.log下面,把/boot/lsx.log写的很大。

怎么把/boot/lsx.log,挪到/分区下。因为这个服务路径不能动,所以

cp /boot/lsx.log /lsx.log

ln -s /lsx.log /boot/lsx.log

 

2.22 硬链接文件

 

[root@localhost ~]# ll

total 4

-rw-------. 1 root root 973 Oct 15 22:41 anaconda-ks.cfg

drwxr-xr-x. 2 root root  16 Oct 21 04:19 lsx

 

硬链接:

1.不支持目录做硬链接

2.硬链接时间和大小、inode和源文件一样

3.删除源文件对硬链接没影响,软连接异常

4.真正存文件的是inode(多个硬链接指向一个inode,但是至少留一个硬链接),里面存放数据的信息,inode只占一份空间

5.硬链接不能跨分区(各个分区初始化inode已经分好了)

[root@localhost ~]# ln anaconda-ks.cfg 1_hard.txt

[root@localhost ~]# ln -s anaconda-ks.cfg 1_soft.txt

[root@localhost ~]# ll

-rw-------. 2 root root 973 Oct 15 22:41 1_hard.txt

lrwxrwxrwx. 1 root root  15 Oct 21 04:41 1_soft.txt -> anaconda-ks.cfg

-rw-------. 2 root root 973 Oct 15 22:41 anaconda-ks.cfg

本文转自 虾米的春天 51CTO博客,原文链接:http://blog.51cto.com/lsxme/1975890,如需转载请自行联系原作者

你可能感兴趣的文章
jquery获得select option的值 和对select option的操作
查看>>
父类与子类的virtual
查看>>
Ubuntu 14.04安装gnuplot 解决Terminal type set to 'unknown'问题 简易命令教程
查看>>
RPC vs RESTful
查看>>
[技术选型] dubbo
查看>>
Docker入门系列4:命令行小结
查看>>
Oracle常用函数
查看>>
spring日志加载代码解析
查看>>
理解Python的With as语句
查看>>
MFC message routine
查看>>
tensorflow 中 name_scope 及 variable_scope 的异同
查看>>
正则表达式(括号)、[中括号]、{大括号}的区别小结 通用所有语言 系统
查看>>
修改maven镜像为阿里云,速度快
查看>>
maven中snapshot快照库和release发布库的区别和作用 (转)
查看>>
shell的初步介绍
查看>>
Win系列:VC++编写自定义组件
查看>>
- (void)addConstraints:(NSArray<__kindof NSLayoutConstraint *> *)constraints
查看>>
《剑指offer》-表示数值的字符串
查看>>
LCA近期公共祖先
查看>>
Quartz快速上手
查看>>