Linux学习笔记3—Linux权限的初步认识(rwx、sudo、粘滞位、umask)
文章目录
- shell命令以及运行原理
- 如何开启当前用户的sudo命令
- Linux权限管理
- 1 Linux用户类别
- 2 Linux的文件权限的理解
- 3 Linux文件权限的修改
- I chmod—修改拥有者、所属组、其他的rwx权限
- II chown—更改文件的拥有者和所属组
- III 权限rwx表示的八进制方案
- IV 目录文件的rwx权限含义
- 4 粘滞位
- 5 默认权限与权限掩码
shell命令以及运行原理
打开Xshell
出现的字符交互界面:
称为命令行。
我们后面输入的字符代表的是命令+选项。
我们的命令就是一些可执行程序,验证如下:
广义上,Linux发行版 = Linux内核 + 外壳程序,如下图:
通常我们是不能直接与操作系统内核进行沟通的,内核的使用成本很高,需要了解操作系统内核的知识,还有权限约束的问题,还有可能这件操作不允许用户进行或者存在错误,直接与操作系统内核沟通就很危险。
所以我们要和外壳沟通,Linux下就是shell(命令行解释器),把用户的命令翻译给操作系统内核执行,操作系统内核执行后把结果翻译一下给用户看。另外,shell本身有一些缓存功能,可以对操作系统内核拒绝过的命令做出反应,降低操作系统内核的工作量。
对有风险可能会终止shell进程的命令,shell程序会创建子进程为我们执行命令
可以看出shell外壳的作用:
- 传递请求指令,让OS执行命令
- 保护内核
那bash是什么呢?bash是一个具体的shell程序,shell是一类称为命令行解释器的程序,bash是一个具体的shell程序,Centos 7.6
使用的shell就是bash。
如何验证bash是一个进程呢?用指令ps axj | grep bash
;(ps是一种查看当前进程信息的命令)
我们再登陆一个用户,发现又创建了一个bash
使用杀死进程指令kill -9 PID
就把另一个bash进程干掉了:
如何开启当前用户的sudo命令
有时候部分命令需要root
权限,这时我们频繁切root
是非常麻烦的,我们可以做如下配置,使得当前用户可以使用sudo 命令
使后面的命令在root
权限下运行,具体操作如下:
首先su -
切换为root
用户,然后nano /etc/sudoers
,就会打开一个文本文件:
按下往下翻,就可以找到这样一行:
然后把root
开头那一行复制一下,粘到空的那一行,然后把root
修改为对应的用户名,然后把缩进和第一行调成一行的就好了。
然后ctrl x
退出并保存就ok了。
Linux权限管理
1 Linux用户类别
Linux把用户分为两类,Linux中,默认有两类用户:
root
:超级用户,具有非常高的权限,基本不受权限约束。
普通用户:具有一般权限,需要受权限约束 (只能由超级用户创建用户)。
root
密码和普通用户的密码绝对不能相同,普通用户的密码可能经常使用,有暴露风险。
普通用户切换为root
用户,使用su -
exit
或ctrl d
可以回到原本的用户,不建议使用su -用户名
,因为系统这样又要重新创建bash进程,验证如下:
这里写错了,应该是下面的kill -9
杀死的su Router
创建的bash;
kill -9 (su Router)创建的bash后,直接回到了root,然后使用回退,发现su -创建的-bash也回收了。
root用户可以随意切换其他用户,执行su -用户名
,那如果我需要root
权限但是不想频繁切换用户怎么办呢?
sudo
可以临时权限提升,对后面的命令以root的身份运行。
但是不配置是用不了sudo
的,因为我们没有添加信任关系:
具体配置方法我们在前面已经讲述。
2 Linux的文件权限的理解
什么是权限:一件事情是否允许被特定的人做。
首先,权限约束的是人,文件本身具有天然的权限属性:r(读)+w(写)+x(执行),所以对具体的用户,文件的这三个属性是否允许具体的用户执行,使得文件天然存在权限约束。
所以权限信息主要有文件属性(不同的人是否可读等)以及修改人和这个文件的关系。
先认识一下“人”的信息,看一下ll
的具体信息:
拥有者和其他都好理解,所属组是什么意思呢?
假如有这样一个需求:我写了一份代码,想让自己能看到,同工作小组的人也可以看,不想给其他人看到,但是公司的同一个部门又是都在同一台Linux服务器上做开发的。
这一份需求就引出了所属组,所属组存在的目的是为了组内协同。
other
并不会展示给我们,因为你不是拥有者也不是所属组,那么全集减去拥有者和所属组剩下的就是other
咯。
补充一下前面的问题,前面不是说Linux下用户类别只有root用户和其他用户吗?拥有者,所属组,other是什么?
root 和普通用户指的是每一个具体的用户;拥有者,所属组,other指的是一种用户的角色身份;
第一列的含义:
第一个字符:Linux系统不以后缀区分文件,以属性的第一列的第一个字符作为标识符区分文件类型。
-:普通文件[文本,各种动静态库,可执行程序,源程序
d:目录文件
c:字符设备文件,最典型的如键盘和显示器驱动程序。
b:块设备文件,磁盘驱动。
补充:v的意思是虚拟出来的,查看磁盘容量:
df -h
s:套接字,网络中的
socket
p:管道文件,通信时经常出现
l:链接文件,软链接。
怎么键盘显示器、磁盘这些都是文件啊,因为Linux的设计哲学就是Linux下一切皆文件。
不过gcc
仍然以后缀识别文件,因为它不是系统文件,是应用程序。
了解一下第一列的后9个字符:
根据文件对每个用户的权限,9个字符中的每一组(以3个为1组)这三个字符分别代表r(是否具有读)w(是否具有写)x(是否具有写)
。
r
具有读权限 ;-
无读权限
w
具有写权限 ;-
没有写权限
x
具有可执行权限 ;-
没有执行权限
这里的属性 3个为一组,对应拥有者权限、所属组权限、其他人权限,每个字符对应这个人是否拥有这项权限,就完成了文件的权限管理。
使用chmod u-r test.c
更改拥有者的读权限:
更改权限后就如果没有对应权限就会发生权限拒绝。
3 Linux文件权限的修改
如何对应权限的修改?——chmod chown/chgrp
I chmod—修改拥有者、所属组、其他的rwx权限
拥有者chmod u+(-)x file.txt
.
是永久修改。
所属组:chmod g+(-)x file.txt
其他人(o):chmod o+(-) rwx
一起改:chmod u+rwx,g+rwx,o+rwx
或chmod a+(-rwx)
,a是all的意思。
普通文件普通用户限制情况:
测试一下root
会受限制吗?
我们把所有的rwx
权限全部删掉,root
仍可以读写文件:
验证得root
基本上不受权限限制。
文件没有实际的可执行权限时,root
也无法执行文件,就算加上了x
权限,但是一般还是不能执行,因为可能里头的命令找不到,而且可能有一些风险,一般是否为可执行是系统给的,你硬加可能也无法执行。
II chown—更改文件的拥有者和所属组
更改文件的拥有者:
直接把文件给root
,发现被拒绝。
现实中给别人东西都要别人同意,你把文件给root
当然也要root
同意.
一般解决方案是sudo
提升权限后给或者切root
账号给,更改拥有者:chown 用户名 文件名
更改文件的所属组:chgrp 组名 文件名
,同样的,直接给的话需要root
权限
如果此时这个文件属于你,但是这个文件所属组不是你,你可以直接chgrp
直接改回来
su
和su -
,su
切超级用户当前路径不变,su -
会回到root
的工作路径.
一次性改拥有者和所属组chown 拥有者名:所属组名 文件名
III 权限rwx表示的八进制方案
前9列的权限符号表明权限位置是明确的且是两态的,可以用1表示有权限,0表示无无权限,如file.txt的权限rw- --- --x
可以改为110 000 001
,再转化为八进制数据:6 0 1
.,这就是权限表述的八进制方案,修改权限也可以这样改。
语法:chmod 八进制方案 文件名
文件的创建者最终不一定是文件的拥有者,可以用chown
修改拥有者。
IV 目录文件的rwx权限含义
对目录文件来说,rwx
权限是什么意思呢?
r
权限:查看目录中内容的权限:
同样的root
不受权限约束。
w
权限:考虑目录是一个多叉树结构,在目录中添加文件,作为父节点的目录,需要添加子节点的地址,这就是写权限。
进入目录需要什么权限呢?进入目录其实就相当于更改用户当前路径,是一种执行操作,需要的就是x
权限,目录文件的可执行权限就是进入目录的权限。
按常理来说,要查看一个目录中的文件,你要进入这个目录才能查看。
但是下面的实验表明:我们去掉目录的x
权限仍然可以看目录中的文件名,只是不能看详细信息了.
这可能说明目录中的文件名是记录在目录中的(就像孩子指针),但是详细信息还是记录在每个文件中的,如果你进入不了这个目录那肯定也看不到文件的详细信息。
4 粘滞位
下面的测试会表明,在一个文件夹test
中,我和其他用户一起使用这个文件夹,我能看到别人的文件存在,但是看不到别人的文件内容(被其他的r
权限限制),但是我居然可以删掉别人的文件:
本质原因是因为我们对test
目录有写权限,改掉就不行了。
如果目录对other有w权限,则other可以删掉任何目录中的文件;如果目录对other没有w权限,那么other不可以删掉目录中任何文件,但是同时other没有了w权限,它也不能在目录中增加自己的文件了:
需求:other可以在特定的目录下创建文件并对文件(目录具有w)有写入权限(文件有w),但是不想让other有权利删掉这个目录中的其他文件(这就要求other不能拥有目录的写权限)。
Linux下能否做到这种限定性的约束呢?这就引出了粘滞位。
语法chmod o+t test
,这个加的t权限会加在w位置上。
粘滞位只能对目录设置,一般都是给other
设置的。同组一般不用设置,要么你别给同组的人放开w
权限,要么直接组内就那么几个人能查到,但是对于一个工作集群来说,other
身份人很多,一般给other
设置一个粘滞位。
对文件设置了粘滞位后,该目录下,只能文件的拥有者和root
才能删除文件,其他人无法删除文件。
在操作系统临时数据中的应用:
有时候,存在多个用户,或者系统中存在临时数据,系统会将所有的临时文件放在/tmp
目录下,这个目录的拥有者和所属组毫无以为是root
,又因为所有用户的临时数据都要放在这里,所以要把这里tmp
目录对o
的读、写、执行权限放开,才能让别人把自己的临时文件写到tmp
目录下,并且可以删除。
但是这样全放开每个用户却不仅可以删除自己的文件,还可以删除别人的文件。
我们想收回一部分权限,让每个用户在tmp
目录下只能删除自己拥有的文件,不可以删除别人拥有的文件,这就需要给tmp
目录权限设置粘滞位。
当一个目录设置粘滞位时,只有以下三个用户可以删除里面的文件:
- 文件的所有者(只能删除所拥有的文件)
- 目录的所有者(能删除所有的文件)
- 超级用户
root
(能删除所有的文件)
一般我们把需要粘滞位的目录都是用root
创建的,这样也符合root
超级用户的权限性质。
5 默认权限与权限掩码
为什么系统中的文件,创建出来的默认权限是下面我们看到的样子呢?
起始权限:
- 普通文件:起始权限 666
- 目录文件:起始权限 777
那为什么我们看到的创建目录和文件的权限不是起始权限呢?因为系统中有umask
,权限掩码。
后三位,凡是在掩码中出现过的权限,默认创建出来的文件都不准有这个权限。(这个最前面的0也是有用的,以后再议)
002 = 000 000 010
掩码的目的就是过滤掉掩码中的某些内容。
然后我们看普通文件的起始权限:110 110 110
,干掉掩码中是1的位后,变为110 110 100
,即664
这个干掉掩码中是1的位的操作是:default = default & (~umask)
.
某一个比特位&
上1,可以保持原来的模样,某一个比特位&
上0,,这一位必然变成0。
111 111 111 & ~(000 000 010) = 111 111 101 = 7 7 5
.
怎么修改umask
呢?umask 权限掩码
权限掩码的修改只在这次会话有效,所以不用担心忘了改回去,如果要修改全局的默认权限掩码,可以去修改权限文件。
Linux学习笔记3—Linux权限的初步认识(rwx、sudo、粘滞位、umask)相关推荐
- Linux中常用的文件目录,Linux学习笔记2——Linux中常用文件目录操作命令
ls 显示文件和目录列表 -l 列出文件的详细信息 -a 列出当前目录所有文件,包含隐藏文件 mkdir 创建目录 -p 父目录不存在情况下先生成父目录 cd 切换目录 touch 生成一个空文件 e ...
- 【Linux学习笔记】Linux服务器:配置与管理samba服务器
Linux系列文章目录 一.[linux学习笔记]红帽Linux 7.8系统在虚拟机上的安装 二.[Linux学习笔记]Linux系统的基本操作 三.[Linux学习笔记]管理Linux操作系统:用户 ...
- 【黑马程序员新版Linux学习笔记】Linux系统实用操作命令——操作演示
[黑马程序员新版Linux学习笔记]Linux 零基础快速入门: (一)Linux基本命令--操作演示 (二)Linux用户和权限 -- 操作演示 (三)Linux 小技巧快捷键 (四)Linux系统 ...
- Linux学习笔记:Linux常用命令总结
文章目录 前言 Linux学习笔记:Linux常用命令总结 1. 目录命令 1.1 Linux目录结构 1.2 cd命令 切换工作目录 1.3 ls命令 显示目录下文件 1.4 mkdir命令 创建目 ...
- Linux学习笔记之——Linux系统内部相关介绍
Linux学习笔记之--Linux系统内部相关介绍 摘要:主要记录一些比较有用的能够帮助理解和使用Linux的知识.比如一些相关概念.没兴趣的看看就好.知道有这么个东西.注意事项.和一些常用目录的作用 ...
- 【linux】三种权限的使用和更改、粘滞位和yum的使用
目录 1.权限问题 ①什么是权限? ②小问题 ③默认权限 ④如何更改"人"的权限呢? ⑤更改权限的八进制方案 ⑥强制改权限里的"人"(权限=人+文件属性) 2. ...
- Linux权限:权限的概念及管理、粘滞位
目录 Linux权限的概念 Linux权限管理 文件权限值的表示方法 文件访问权限的相关设置方法 目录的权限 粘滞位 Linux权限的概念 Linux下有两种用户:超级用户(root).普通用户 超级 ...
- 【Linux学习笔记】Linux获取CPU使用率,内存使用率和磁盘使用率
实现目标: 在Linux上使用shell脚本回显系统当前的CPU使用率.内存使用率和磁盘空间使用率 1.CPU使用率: 使用top命令能够实时显示系统中各个进程的资源占用状况,所以这边可以使用top命 ...
- 【嵌入式Linux学习笔记】Linux驱动开发
Linux系统构建完成后,就可以基于该环境方便地进行开发了,相关的开发流程与MCU类似,但是引入了设备树的概念,编写应用代码要相对复杂一点.但是省去了很多配置工作. 学习视频地址:[正点原子]STM3 ...
最新文章
- 寿光农商行计算机机房,寿光农商银行 举办2021年新员工入职仪式
- MATLAB可视化实战系列(二十四)-三维可视化如何利用圆锥图显示向量场?
- Appium Desktop介绍-xcodebuild failed with code 65 问题解决
- ejb 2.1 jboss_JBoss AS 8中的Java EE 7和EJB 3.2支持
- web前端开发之div+css教程精华收集二
- 直接写和放在函数中不同的R语言用法
- cas-client 使用(6)
- .net Core 2.*使用autofac注入
- docker学习笔记一:基本安装和设置容器静态ip
- linux c如何判断字符串是否为空
- 幻灯片母板_如何在Microsoft PowerPoint中创建幻灯片母版
- 推荐3个干净、资源多的看剧网站给大家
- FFmpeg命令(七)、 音频与视频合并成视频
- 首次登陆系统强制修改密码
- 深入浅出再谈Unity内存泄漏
- PHP文案馆头像壁纸小程序源码独立后台
- SAP MIGO生产订单入库校验BADI增强MB_MIGO_BADI
- 原来PWM这么简单!通过锯齿波作为载波和调制波经过比较,产生相应的PWM输出波形
- 交通灯控制系统设计左转倒计时protues仿真的c语言程序,交通灯控制系统设计
- 七巧板复原之匹配算法之代码实现