Linux权限与特殊权限
5.1 权限讲解
5.1.1 什么是权限
Linux是多用户,多任务的,当多个用户一起使用Linux服务器时,它们对机器上的文件操作,权限都是怎么样的,所有文件都是可以读取、写入、修改、执行的吗?在Linux系统中,一切皆文件,所以得进行一些权限管理。
5.1.2 为什么要管理权限
- 保护服务器数据、文件、进程等
- 不要莫名其妙的背黑锅,权限限制(你作为运维,要限制其他用户的权限,不要伤害你的机器,否则就背黑锅)
- 针对不同部门,不同员工的工作职责,分工不同,权限应该做好限制
- 针对来自外来的恶意攻击进行防御
5.1.3 权限的分类
| 权限针对文件 File | 权限针对目录 Directory | |
|---|---|---|
| 读r,read | 表示可以查看文件内容 | 表示可以(ls)查看目录中存在的文件名称 |
| 写w,write | 表示可以更改文件的内容:vim修改,保存退出 | 表示是否可以删除目录中的子文件或者新建子目录(rm/touch/mkdir) |
| 执行x,executable | 表示是否可以执行文件,一般指二进制文件,或者脚本文件 | 表示是否可以进入目录中(cd) |
5.1.4 Linux的文件属于谁?
d r-- r-- r-- 2 root root 6 Jan 13 18:25 kylin
- rw-- rw-- r-- 1 root root 6.1M Jan 13 18:34 kylin
文件类型 属主 属组 其他人权限 文件连接数 属主 属组 文件大小 文件最后修改时间 文件名
- Linux中的每一个文件,都有自己的主人,并且有权限限制,限制主人的读、写、执行权限
- 限制其他人的读、写、执行权限
- 限制组内的读、写、执行权限
Linux文件的三个角色
user:属主
group:属组
other:其他人
[!CAUTION]
特例,root,即使文件查看到的权限是空,root仍然可以做任何事情,权限控制是针对普通用户而言的
5.1.5 文件属主、属组、其他用户
- 属主:表示文件的创建者,拥有者,也可以理解为,某个用户对这个文件拥有的权限
一个文件只能有一个主人,一部手机只能有一个主人
你可以对你的手机做任何的事情,其他人你可以禁止 他碰你手机
你可以对你的Linux文件进行读、写、执行,也可以禁止别人对你的文件做任何操作
- 属组:文件所属的用户组,拥有者,可以理解为某一组的用户,对这个文件的权限
user:属主是任鹏宇,权限是允许读、写、执行
group:属组是运维组,权限是读、写、不可执行
- 其他用户:表示跟该文件一点关系没有的人,既不是创建者,也不是属组者
其他用户通常为除了该文件的属主属组的其他用户,该用户与该文件没有任何关系,通常修改权限主要是修改其他用户权限
5.1.6 所属者的表达方式
文件的所属角色有user、group、other,如何使用Linux命令去查看,设置,文件的所属角色
- u属组:
用u表示文件的属主,u是个缩写,全称为the user who owns it(拥有它的用户)是谁
默认是文件的创建者,就是文件的属主
- g属组:
g用来表示文件属组,默认是创建该文件的用户
- o其他人:
用o表示,既不是文件的创建者,也不是文件属组里的用户,那么就是其他人的角色
- all角色:
在后续使用Linux命令,修改文件权限时,除了会用到u、g、o,还会使用all(缩写a),表示一次性对三个角色设置权限
- root用户:
Linux中的root用户是特殊用户,是系统的超级管理员,有最大权限,可以任意修改Linux文件,因此权力越大,责任越大。
5.1.7 文件没有权限进行修改的三种方式
- 第一种方式:更换文件的主人
在不修改文件权限的情况下,可以更换属主,相当于将文件卖给了另一个人
- 第二种方式:更换文件的属组
在不修改文件权限以及属组的情况下,如果该文件属组有读写执行的权限,那么加入该组也可以拥有该权限
- 第三种方式:更换文件权限
不修改属主属组则需要修改文件的权限来对文件进行操作
5.1.8 文件权限查看的两种方式
第一种方式:使用
ll命令查看[root@kylin-ren-class ren]# ll
总用量 68
-rw-r--r-- 1 root root 40 1月 7 20:17 第三行内容.txt
第二种方式:使用
stat命令查看[root@kylin-ren-class ren]# stat /ren
文件:“/ren”
大小:266 块:0 IO 块:4096 目录
设备:fd00h/64768d Inode:34158027 硬链接:2
权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
5.1.9 提供授权的三种方法
第一种方法:更改属主,言简意赅就是更换主人,你就拥有了和创建主人一样的文件权限
# 递归操作文件目录
chown -R [新属主].[] 文件名
第二种方法:更改属组,简而言之就是加入文件的小组,小组成员都有对该文件相应的权限
# 使用chown,注意只能超级用户使用,使用sudo提权也可以
chown -R [].[新属组] 文件名 # 使用chgrp,只能改属组,普通用户可以使用,但是必须该用户是该组的一员
chgrp -v [新组] 文件名 # -v是显示更改过程
第三种方法:更改文件权限,将文件的其他用户的权限进行相应修改即可
# 使用 ugo 的方式进行修改
u 表示属主
g 表示属组
o 表示普通用户
语法结构:
chmod ugo+w file #全部成员都加入写的权限
chmod uo+x file #属主和普通用户加入执行的权限
chmod a+x file #a表示所有,所有用户都加入执行权限
chmod u=rx file #先清空后赋值
# 使用数字的方式进行授权
读:4
写:2
执行:1
文件权限哪个亮加哪个
语法结构:chmod [数字][数字][数字] 文件
案例229. 授权属主为 rwx权限
[root@kylin-ren-class ren]# chmod u+wrx 你好.txt
[renpengyu@kylin-ren-class ren]$ ll
总用量 8
-rwxrwxrwx 1 root root 0 1月 9 21:10 你好.txt
案例230. 授权属主位 r-- 权限
[root@kylin-ren-class ren]# chmod u-wx 你好.txt
[renpengyu@kylin-ren-class ren]$ ll
总用量 8
-r--rwxrwx 1 root root 0 1月 9 21:10 你好.txt
案例231. 先清空权限,再给属主授 rw- 权限
# 先清空是指先清空u的权限,然后给权限,不是ugo全部清空,注意注意!!!
[root@kylin-ren-class ren]# chmod u=r-- 你好.txt
[renpengyu@kylin-ren-class ren]$ ll
总用量 8
-r-------- 1 root root 0 1月 9 21:10 你好.txt
案例232. 使用ugo方式授权文件的权限为u为rw,g为空,o为空
[root@kylin-ren-class ren]# chmod u=rw,g=,o= 你好.txt
[root@kylin-ren-class ren]# ll
总用量 8
-rw------- 1 root root 0 1月 9 21:10 你好.txt
案例233. 使用数字进行授权rw-r--r--的权限
[root@kylin-ren-class ren]# chmod 644 你好.txt
[root@kylin-ren-class ren]# ll
总用量 8
-rw-r--r-- 1 root root 0 1月 9 21:10 你好.txt
[!WARNING]
在Linux系统中
默认目录只能给到最大权限755在Linux系统中
默认文件只能给到的最大权限为644
[!CAUTION]
r、w、x单个出现对于目录来说什么作用没有
r-x 决定用户能否进入目录,查看下面的文件
rwx决定用户是否可以删除、创建、改名的动作
5.2.0 案例说明
1.[oldboy@lzy oldboy]$ cat /etc/shadow cat: /etc/shadow: Permission denied
## 用户本身没有权限,普通用户不能进入,加入x权限才行,得加入rx权限才可以
2.[oldboy@lzy oldboy]$ echo '#' >> /etc/passwd -bash: /etc/passwd: Permission denied
## 文件对于该用户没有写的权限,所以得授权用户对/etc目录授权写的权限,还有进入查看rx的权限
3.[oldboy@lzy oldboy]$ touch / etc/passwd.txt touch: cannot touch ‘/etc/passwd.txt’:Permission denied
## 用户本身没有权限,普通用户不能进入,加入x权限才行,touch是创建的动作得有rwx才能,所以需要给7的权限
4.[oldboy@lzy oldboy]$ rm -rf /etc/shadow rm: cannot remove ‘/etc/shadow’: Permission denied
## 删除需要rwx权限,还有就是/etc/默认没有对普通用户进行写的权限
5.[oldboy@lzy oldboy]$ ls /root/ ls: cannot open directory /root/: Permission denied
## 没有rx的权限,进入目录需要x的权限,查看目录下的内容需要r的权限,还有就是root目录是root的家目录,本身没有对普通用户进行开放
5.2 特殊权限(Suid、Sgid、Sicky)
5.2.1 什么是特殊权限
Linux系统的9位基本权限 rwx rwx rwx,但是有时候会发现系统一些关键的文件,存在一些没见过的权限字符。
比如:这个文件允许用户自己去修改自己的密码
/usr/bin/passwd
[root@CentOS7-01 /]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 Apr 1 2020 /usr/bin/passwd
所以除了基本的权限还有三位特殊权限,一共是12位权限
suid(setuid)
sgid(setgid)
sbit(sticky)
特殊权限对照变
| 类别 | suid | sgid | sicky |
|---|---|---|---|
| 字符表示 | S | S | T |
| 出现位置 | 用户权限位x | 用户组权限位x | 其他用户权限位x |
| 基本权限位有x | s | s | t |
| 数字表示法 | 4 (4777) | 2 | 1 |
| 八进制表示法 | 4000 | 2000 | 1000 |
| 生效对象 | 用户位 | 用户组 | 其他用户 |
[!CAUTION]
1.suid:如果用户权限位是
rwx ---> rws否则是rwx- ---> rwS2.sgid和sicky与suid同理,都是最后一位x位置上发生变化
5.2.1 Suid基础原理
- suid通过s字符标识,存在于用户权限位的x的权限对应位置
- 如果某文件,用户权限位本身就有x权限,给该文件设置suid权限时,则以小写s标识,否则就是大写的s字符
- 给文件设置s权限对应的数字表示法是4,八进制数下可以用4000
- suid同样也用chmod设置权限可以用字符法、数字法两种标识
5.2.2 自定义文件设置Suid
[root@kylin-ren-class ren]# chmod u+s 你好.txt
[root@kylin-ren-class ren]# ll
总用量 8
-rwSr--r-- 1 root root 0 1月 9 21:10 你好.txt
5.2.3 Suid的作用
- SUID特殊权限仅适用于可执行文件,例如二进制文件、/usr/bin下目录下的命令文件/usr/bin/ls
- 只要用户对没有SUID的文件有执行权限,那么当用户执行此文件时,会以文件属主的身份去执行此文件
- 一旦文件执行结束,身份的切换也随之小时
- 简而言之就是让普通用户,执行命令时,临时获得root的权限
解释关于Linux的用户创建:
- 用户创建完用户之后,需要修改密码,执行passwd命名
- 但是passwd命令需要读取,修改/etc/passwd、/etc/shadow文件,这些文件都是属于root
- 如何可以让普通用户使用passwd修改自己的密码,则可以让普通用户临时获得root的身份进行密码文件的更改
- 该原因就是设置suid的一个根本原因,且suid特殊权限,只能用在二进制可执行文件上
5.2.4 Sgid基础原理
- 对于二进制命令来说,Sgid的功能和Suid基本一样,只不过是一个设置文件属主的权限,一个是设置属组的权限,和9位基本权限rwx概念一样
- Suid是获得文件属主的权限,Sgid是获得文件属组的权限
- Sgid主要用于文件夹,为某个目录设置Sgid之后,在该目录中的创建的文件,都以(目录的属组)权限位准,而不属于创建该文件的用户权限,这就是实现了多个用户可以共享一个目录的作用
简单总结:
- 一个普通的文件夹,普通用户ren进入之后,创建文件,user,group都属于ren;gaioge进入之后创建文件,user,group都属于giaoge
- 当一个文件夹设置了Sgid,普通用户ren进入之后,创建文件,user属于ren,group属于文件夹的属组;giaoge进入后,创建文件,user属于giaoge,group属于文件夹的属组
红帽案例234. 将sgid和红帽认证考题结合练习
1.创建一个共享目录/home/admins
mkdir /home/admins
2.要求该目录属组是adminuser,adminuser组内成员对该目录的权限是可读可写可执行
groupadd adminuser
chgrp adminuser /home/admins
chmod g=rwx /home/admins
3.其他用户均无任何权限(root特例)
chmod 0='' /home/admins
4.进入/home/admins创建的文件,自动继承adminuser组的权限
chmod g+s /home/admins
[root@kylin-ren-class /]# ll /home/admins/
总用量 0
drwxr-sr-x 2 root adminuser 6 1月 11 15:37 我是文件夹
-rw-r--r-- 1 root adminuser 0 1月 11 15:37 我是文件.txt
[root@kylin-ren-class /]# touch /home/admins/我是文件夹/我继承了属性.log
[root@kylin-ren-class /]# ll /home/admins/我是文件夹/我继承了属性.log
-rw-r--r-- 1 root adminuser 0 1月 11 16:03 /home/admins/我是文件夹/我继承了属性.log
5.2.5 Sbit粘滞位基础原理
- 在一个权限是777的文件夹下,所有用户可以进行rwx的操作,也就意味着可以随便删除其他人的资料!这很危险,所以产生出一个粘滞位来防止这个问题的发生
- 简而言之就是,当目录有了粘滞位特殊权限,则个目录除了root用户特殊以外,任何用户都只能删除,移动自己的创建的文件,而不能影响到其他人
- 其中在Linux中/tmp临时目录就是使用的是粘滞位
案例235. 没有粘滞位,且目录的权限是777时,进行操作,然后在使用粘滞位来操作看看使用其他用户有权限进行操作
[renpengyu@kylin-ren-class tmp]$ touch 我是任鹏宇.txt
[pengyu@kylin-ren-class tmp]$ echo 我是鹏宇 > 我是任鹏宇.txt
-bash: 我是任鹏宇.txt: 权限不够
[pengyu@kylin-ren-class tmp]$ rm -f 我是任鹏宇.txt
rm: 无法删除 '我是任鹏宇.txt': 不允许的操作
Linux权限与特殊权限的更多相关文章
- Linux(三)__文件权限、系统的查找、文本编辑器
一.文件权限 1.理解文件权限及其分配 2.掌握查看文件和目录的权限 3.掌握权限文字表示法和数值表示法 4.学会使用chmod命令设置权限 5.学会使用chown命令修改属主和组 linux文件能不 ...
- Linux文件和目录权限详细讲解
转载请标明出处: http://www.cnblogs.com/why168888/p/5965180.html 本文出自:[Edwin博客园] Linux文件和目录权限解读 如何设置Linxu文件和 ...
- linux系统下的权限知识梳理
下面对linux系统下的有关权限操作命令进行了梳理总结,并配合简单实例进行说明.linux中除了常见的读(r).写(w).执行(x)权限以外,还有其他的一些特殊或隐藏权限,熟练掌握这些权限知识的使用, ...
- linux 中更改用户权限和用户组的命令chmod,chgrp实例
linux 中更改用户权限和用户组的命令实例; 增加权限给当前用户 chmod +wx filename chmod -R 777 /upload 用户组 chgrp -R foldname zdz ...
- Linux文件及目录权限解析
Linux系统9位基础权限体系 文件权限 * r权限 可读 对文件具有读取及查看文件内容的全新啊 * w权限 可写 对文件具有新增.修改文件内容的权限 ...
- Linux命令:修改文件权限命令chmod、chgrp、chown详解
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权 限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而 ...
- Linux用户配置sudo权限
Linux用户配置sudo权限 创建sudo权限用户 #useradd supope #passwd supope #visudo #supope ALL=(ALL) AL ...
- Linux sticky bit 目录权限 rwt权限
[linux权限分为 user group others三组] 今天看到有个目录的权限是rwxrwxrwt 很惊讶这个t是什么,怎么不是x或者-呢?搜了下发现: 这个t代表是所谓的sticky bit ...
- 【Linux】文件特殊权限 SUID/SGID/Sticky Bit
linux中除了常见的读(r).写(w).执行(x)权限以外,还有3个特殊的权限,分别是setuid.setgid和stick bit 1.setuid.setgid 先看个实例,查看你的/usr/b ...
- linux中执行命令权限不够怎样处理
在linux中执行命令权限不够就要增加权限,先看遇到的情况 查看权限情况 那就赋予权限 执行命令
随机推荐
- WPF中实现弹出进度条窗口
实现功能: 模拟一个任务开始执行,在窗口弹出一个进度条,展示执行进度,执行完成弹出提示框.例如做数据查询时,如果查询需要一段时间,操作人员可以很好的知道是否查询完成. 1. 设计进度条弹出窗口 进度条 ...
- 【狂神说Java】Java零基础学习笔记-JavaSE总结
[狂神说Java]Java零基础学习笔记-JavaSE总结 JavaSE总结: -完结-撒花- [[狂神说Java]Java零基础学习视频通俗易懂]https://www.bilibili.com/v ...
- svtools简介
svtools - Comprehensive utilities to explore structural variations in genomes svtools不仅是一个工具,更因为它带有许 ...
- (五).NET6.0使用Serilog进行配置和实现日志记录
1.首先安装Serilog六件套神装包 也可以对个别相应的包进行删除等,例如:1是读取配置文件的,如果不需要通过配置文件进行操作,就可以不使用这个包.2是打印到控制台的,如果不需要打印到控制台,也可以 ...
- MAC安装redis的简单方法
part 1:安装redis1.官网下载压缩包https://redis.io/download or brew install redis(太慢了-)我此处选的法一,先去官网上下载包,在解压使用. ...
- VS中无法识别unistd.h的问题
问题 VS 无法打开源文件 unistd.h 参考:链接 方法 许多在Linux下开发的C程序都需要头文件unistd.h,但VC中没有个头文件,所以用VC编译总是报错.把下面的内容保存为unistd ...
- Win10部分软件程序中输入中文变成问号??如何处理【详细步骤】
近期在win10系统中,出现了一个问题,那就是在部分程序软件中输入中文之后,会直接显示问号,哪怕是更换输入法也没有任何用.那么遇到这个问题,我们要如何处理呢?下面IT百科分享一下Win10系统部分软件 ...
- 在SOUI4中使用非客户区自绘
前段时间用sdl嵌入SOUI做视频播放器,由于SOUI习惯屏蔽系统默认的非客户区,而在窗口自己的客户区分出一块来模拟非客户区,导致窗口在拉伸的时候,SOUI窗口会出现比较严重的闪烁(不光是SOUI这样 ...
- 国际“论”剑!天翼云数据库论文被EDBT收录!
近日,由天翼云数据库团队.中国电信云计算研究院和深圳北理莫斯科大学合作完成的<Taste: Towards Practical Deep Learning-based Approaches fo ...
- Ubuntu手动安装Mysql包
ubuntu通过tar包安装mysql5.7.21 1.下载解压命令见下: wget https://dev.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21-l ...