特殊权限set_uid /特殊权限set_gid/特殊权限stick_bit/软链接文件/硬连接文件
- 2.18 特殊权限set_uid
- 2.19 特殊权限set_gid
- 2.20 特殊权限stick_bit
- 2.21 软链接文件
- 2.22 硬连接文件
特殊权限set_uid(s权限用户user权限)
[root@centos_1 ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
权限中的s 就是特殊权限 set_uid
psswd 命令支持普通用户改自己的密码
[root@centos_1 ~]# ls /etc/shadow
/etc/shadow
[root@centos_1 ~]# ls -l !$
ls -l /etc/shadow
---------- 1 root root 642 11月 20 20:50 /etc/shadow
/etc/shadow 是没有权限的
psswd有set_uid权限,当普通用户执行passwd的时候临时有root身份的权限;
给文件设置set_uid前提文件是二进制可执行文件
切换用户
[root@centos_1 ~]# su - xiaobo
[xiaobo@centos_1 ~]$
给ls设置set_uid权限(s权限):
root用户下
chmod u+s /usr/bin/ls
ls -l /usr/bin/ls
[root@centos_1 xiaobo]# ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
[root@centos_1 xiaobo]# chmod u+s /usr/bin/ls
[root@centos_1 xiaobo]# ls -l !$
ls -l /usr/bin/ls
-rwSr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
现在ls有s权限了
切换到xiaobo用户
su - xiaobo
ls /root
[root@centos_1 ~]# su - xiaobo
上一次登录:一 11月 20 23:04:33 CST 2017pts/0 上
[xiaobo@centos_1 ~]$ whoami
xiaobo
在没有给ls设置s权限之前,普通用户是不能查看root用户下面的文件的
[xiaobo@centos_1 ~]$ ls /root
ls: 无法打开目录/root: 权限不够
给ls设置s权限后是可以临时查看root用户下的文件:
[xiaobo@centos_1 ~]$ ls /root
11 anaconda-ks.cfg.1
[xiaobo@centos_1 ~]$ ls -l /usr/bin/ls
-rwSr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
取消set_uid(s)权限:
chmod u-s /usr/bin/ls
root@centos_1 xiaobo]# chmod u-s !$ (其中!$的意思是上一次的路径,这里为了方面而省略)
chmod u-s /usr/bin/ls
[root@centos_1 xiaobo]# ls -l !$
ls -l /usr/bin/ls
-rw-r-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
如果没有x执行权限就是大写的S
-rwSr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
如果有x权限就是小写的s
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
其实有没有x权限效果都是一样的,因为s权限包含x权限。
s权限也是能给目录设置权限的,但是没有意义。
特殊权限set_gid(group所属主权限g)
给ls设置g权限
[root@centos_1 xiaobo]# chmod g+s /usr/bin/ls
[root@centos_1 xiaobo]# ls -l !$
ls -l /usr/bin/ls
-rwxr-sr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
set_gid跟set_uid权限是一样的,只不过换了一个角色,这里s权限的位置放到了所属组。
这样普通用户临时有了所属主的身份。
这样xiaobo用户也可以查看root目录下的内容了。
[xiaobo@centos_1 ~]$ ls -ld /root/
dr-xr-x---. 4 root root 175 11月 20 22:21 /root/
给目录设置set_gid权限:
[root@centos_1 ~]# chmod g+s 234
[root@centos_1 ~]# ls -ld 234
drwxr-sr-x 2 root root 6 11月 20 23:45 234
更改目录234的所属组:
chown :xiaobo 234
[root@centos_1 ~]# chgrp xiaobo 234
[root@centos_1 ~]# ls -ld 234
drwxrwsr-x 2 root xiaobo 6 11月 20 23:49 234
在234目录下创建文件和目录之后,所属组跟目录保持一致都是xiaobo
[root@centos_1 ~]# touch 234/file
[root@centos_1 ~]# mkdir 234/xiaobo
[root@centos_1 ~]# ls -l 234/
总用量 0
-rw-r--r-- 1 root xiaobo 0 11月 20 23:52 file
drwxr-sr-x 2 root xiaobo 6 11月 20 23:57 xiaobo
取消234目录set_gid权限后,在目录下创建文件,文件所属组变回root
[root@centos_1 ~]# chmod g-s 234/
[root@centos_1 ~]# touch 234/xiao
[root@centos_1 ~]# ls -l 234/
-rw-r--r-- 1 root root 0 11月 21 00:00 xiao
总结:
set_gid 不仅作用在文件上,也作用在目录上。
作用在文件上跟set_uid作用一样,让普通用户临时拥有所属组的身份的权限。
当作用在目录上,在目录下创建的子目录和文件的所属组跟该目录的所属组一样。
特殊权限stick_bit(防删除位)
权限位中有一个t权限 就是tick_bit权限(防删除位t)
777权限。
t权限:谁的文件谁做主;
靠父级目录决定。
用户xiaobo 在 /tmp/下创建myfile文件
[xiaobo@centos_1 tmp]$ touch myfile
[xiaobo@centos_1 tmp]$ vi myfile
[xiaobo@centos_1 tmp]$ chmod 777 myfile
[xiaobo@centos_1 tmp]$ ls -l myfile
-rwxrwxrwx 1 xiaobo xiaobo 25 11月 21 01:27 myfile
用户user1可以编辑/tmp/下的myfile但是不能删除:
[user1@centos_1 tmp]$ vi myfile
[user1@centos_1 tmp]$ rm -rf myfile
rm: 无法删除"myfile": 不允许的操作
这是因为 myfile 中t权限依赖于父级目录/tmp/决定
总结:
stick_bit 作用是防止别人删除自己的文件,但是root用户可以删除。
user1用户在/tmp/下创建目录user1
[user1@centos_1 tmp]$ mkdir user1
[user1@centos_1 tmp]$ chmod 777 user1/
[user1@centos_1 tmp]$ ls -ld user1/
drwxrwxrwx 2 user1 user1 6 11月 21 01:34 user1/
touch user1/1
mkdir user1/11
因为user1目录没有写权限位t,所有user1目录下的文件都可以删除修改。
软链接
ls -l /lib64/下面有很多类似的软链接文件,两者是相互依赖的,是一个文件。
lrwxrwxrwx. 1 root root 13 11月 9 15:58 p11-kit-trust.so -> libnssckbi.so
创建一个软链接:左边是一个原文件,右边是链接文件
[root@centos_1 ~]# ln -s /tmp/yum.log /root/234/lianjie
查看创建的软链接
[root@centos_1 ~]# ls -l !$
[root@centos_1 ~]# ls -l 234/lianjie
lrwxrwxrwx 1 root root 12 11月 21 01:59 234/lianjie -> /tmp/yum.log
软链接闪烁,说明链接的文件不存在
lrwxrwxrwx 1 root root 12 11月 21 02:14 yum.log -> /tmp/yum.log
可以touch 创建一个yum.log
上面的都是绝对路径,那么相对路径是在当前目录下创建软连接:
[root@centos_1 tmp]# ln -s 1.txt 11.txt
[root@centos_1 tmp]# ls -l
lrwxrwxrwx 1 root root 5 11月 21 02:08 11.txt -> 1.txt
使用相对路径创建软链接是有弊端的,当拷贝到其他机器上去,文件就链接不到了。所以不建议使用相对路径。
工作实例:
当 /boot/分区下有一个xiaobo.log文件,文件不断的写日志,快把boot分填满了,这时候可以做一个软链接,
将/boot/xiaobo.log链接到/根目录下
这样操作:
1.先拷贝一份/boot/xiaobo.log到根目录下:cp /boot/xiaobo.log /xiaobo.log
2.删除/boot/下的xiaobo.log : rm -f /boot/xiaobo.log
3.赶快做一个软链接到跟目录: ln -s /xiaobo.log /boot/xiaobo.log
这样就是可以了。左边是实际存在的原文件,右边是不存在的链接文件。
链接路径是/boot/xiaobo.log ,实际写入的路径是/xiaobo.log
总结:
软链接就是一个快捷方式,不仅可以链接文件,也可以链接目录,更可以跨分区链接。
硬链接
硬链接只支持对文件做,不支持对目录做硬链接;
-rw-------. 1 xiaobo xiaobo 3360 11月 17 08:43 anaconda-ks.cfg.1
其中的1表示inode号,表示没有相同的文件使用inode号(inode作用:记录文件的属性)
drwxr-xr-x 2 root root 6 11月 21 04:46 test
对于目录,2表示有两个文件使用了inode号,就是目录下的.和..
[root@centos_1 ~]# ls -la test/
总用量 0
drwxr-xr-x 2 root root 6 11月 21 04:46 .
dr-xr-x---. 5 root root 201 11月 21 04:46 ..
给文件做一个硬链接:文件大小、时间、inode号跟原文件一样(就是有两个文件使用了相同的inode号)
[root@centos_1 ~]# ln 1.txt 1_hard.txt
-rw-r--r-- 2 root root 103 11月 21 04:51 1_hard.txt
-rw-r--r-- 2 root root 103 11月 21 04:51 1.txt
硬链接使用了相同的inode号:
[root@centos_1 ~]# ls -i
67246931 1_hard.txt 67246931 1.txt
删除原文件,硬链接后的文件保持不变,软连接就会显示原文件不见了。
不能对目录做硬链接:因为目录是靠.和..串起来,如果做了硬链接这样会乱套
[root@centos_1 ~]# ln 111/ xiaobo/
ln: "111/": 不允许将硬链接指向目录
硬链接不占空间大小,可以对文件做多个硬链接。
不能跨分区做硬链接: 因为分区之间有独立的inode号,boot/下有一个inode号,/根目录下也有跟/boot分区下
相同的inode号,所以不能跨分区做硬链接。
[root@centos_1 ~]# ln /boot/symvers-3.10.0-693.el7.x86_64.gz /tmp/system
ln: 无法创建硬链接"/tmp/system" => "/boot/symvers-3.10.0-693.el7.x86_64.gz": 无效的跨设备连接
总结:
能对文件做硬链接,不能对目录做硬链接;
不能跨分区做硬链接;
硬链接可以删除,因为还有其他文件使用该inode
硬链接好比文件的一张皮,皮有多张,每一张皮都指向了相同的inode,这张皮可以删掉,但是不能删除所有的皮,
必须有一张皮留在身上。
特殊权限set_uid /特殊权限set_gid/特殊权限stick_bit/软链接文件/硬连接文件的更多相关文章
- 特殊权限set_uid、set_gid、stick_bit、软链接、硬链接文件 使用介绍
第2周第4次课(3月29日) 课程内容:2.18 特殊权限set_uid2.19 特殊权限set_gid2.20 特殊权限stick_bit2.21 软链接文件2.22 硬链接文件 2.18 ...
- Linux CentOS7 VMware 特殊权限set_uid、特殊权限set_gid、特殊权限stick_bit、软链接文件、硬连接文件
一.特殊权限set_uid root用户本身拥有对/etc/passwd的写权限,无可厚非:那普通用户呢,这里就用到了setuid,setuid的作用是“让执行该命令的用户以该命令拥有者的权限去执行” ...
- 【Java EE 学习 76 上】【数据采集系统第八天】【角色授权】【用户授权】【权限的粗粒度控制】【权限的细粒度控制】
一.角色管理 单击导航栏上的"角色管理"超链接,跳转到角色管理界面,在该界面上显示所有角色,并提供角色的增加和删除.修改超链接. 1.增加新角色(角色授权) 流程:单击增加新角色超 ...
- 第7章 权限管理(1)_ACL权限
1. ACL权限 1.1 ACL权限简介与开启 (1)ACL权限简介 ①ACL是Access Control List的缩写,主要目的是在提供传统的owner,group,others的read,wr ...
- inux下文件权限设置中的数字表示权限,比如777,677等,这个根据什么得来的
chmod ABC file 其中A.B.C各为一个数字,分别表示User.Group.及Other的权限. A.B.C这三个数字如果各自转换成由“0”.“1”组成的二进制数,则二进制数的每一位分别代 ...
- 理解SQL Server中的权限体系(下)----安全对象和权限
原文:http://www.cnblogs.com/CareySon/archive/2012/04/12/SQL-Security-SecurableAndPermission.html 在开始阅读 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框 ...
- 取得system32文件夹下面文件的写入权限
取得system32文件夹下面文件的写入权限 TAKEOWN /F %SystemRoot%\system32\riched32.dll ICACLS %SystemRoot%\system32\ri ...
- 数据权限设计——基于EntityFramework的数据权限设计方案:一种设计思路
前言:“我们有一个订单列表,希望能够根据当前登陆的不同用户看到不同类型的订单数据”.“我们希望不同的用户能看到不同时间段的扫描报表数据”.“我们系统需要不同用户查看不同的生产报表列”.诸如此类,最近经 ...
随机推荐
- 新的开始——LED灯汇编机器码的点亮方式
在几个月前看2440视频的时候,发现太多知识欠缺,购买开发板期间补习makefile,linux,arm汇编和arm构架之后,现在重新开始学习. 先看板子LED硬件连接图: 可以看到LED 1,2,4 ...
- hdu3938(最小生成树,推荐)
题意描述:简单的讲就是,给你一张无向图,求有多少条路径使得路径上的花费小于L,这里路径上的花费是这样规定的,a.b两点之间的多条路径中的最长的边最小值! 思路:这题目有多个询问,肯定要用离线输出.思路 ...
- 别人不会给你说的---C语言中数组名和指针的区别 及 sizeof用法
引自: http://blog.csdn.net/tianyue168/article/details/5781924 #i nclude <iostream.h> int main( ...
- [转]关于oracle with as用法
原文地址:https://www.cnblogs.com/linjiqin/archive/2013/06/24/3152667.html with as语法–针对一个别名with tmp as (s ...
- /.well-known/apple-app-site-association
Technical Q&A QA1919 Incoming requests for /.well-known/apple-app-site-association file Q: Why ...
- [转]TF-IDF与余弦相似性的应用(一):自动提取关键词
这个标题看上去好像很复杂,其实我要谈的是一个很简单的问题. 有一篇很长的文章,我要用计算机提取它的关键词(Automatic Keyphrase extraction),完全不加以人工干预,请问怎样才 ...
- es 加磁盘扩容
elasticsearch多磁盘扩容 1.问题 由于早前elasticsearch集群数据存储路径只配置了一个,所以某天磁盘突然爆满,集群差点当机.需重新配置多路径存储路径,因为在生产环境,得保证 ...
- beansbinding NetBeans IDE 中 Swing数据绑定插件
http://my.oschina.net/u/127459/blog/111486 https://kenai.com/projects/betterbeansbinding/pages/Home ...
- js 获取地址栏最后一个文件名称
var JsRequest={ //这就是一个静态类,类里面有2个静态方法 //方法一:获取url的文件名 例如 index.html getUrlname:function(url){ //假如传进 ...
- Sword redis数据结构
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) string 是 redi ...