Linux学习之权限

2023-11-12

在学习Linux权限之前,我们先理解一下关于Linux内核与shell外壳之间的关系:

shell命令以及运行原理


Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:将使用者的命令翻译给核心(kernel)处理。同时,将核心的处理结果翻译给使用者。对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。
也就是说shell外壳就是一个中间商,用户无法直接与内核进行沟通,而是通过shell外壳,也就是中间商来进行沟通,通过中间商传达用户的意思给内核。就像你看上了一个小妹妹,你不好意思去直接沟通,通过媒婆将你的意思传达给小妹妹,而这个中间商也就是是我们常说的bash。

目录

Linux权限的概念

Linux权限管理

1.文件访问者的分类(人):

2.文件类型和访问权限(事物属性)

3.文件权限值的表示方法

 

04.文件访问权限的相关设置方法

chown

chgrp

file指令

目录的权限

粘滞位


Linux权限的概念


 Linux下有两种用户:超级用户(root)普通用户
超级用户:可以再linux系统下做任何事情,不受限制。(在某些指令执行下对root用户会有提示,而普通用户是没有的,其次对于yum下载软件之类的也只有在root下才行)
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令:su [用户名]
功能:切换用户。

例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。这里还可以运用su-来登录root账户,还是相同的输入密码。之后就会成为root用户。

su:单纯的更换用户为root

su-:重新登陆root用户

总的来说一般我们是不会去使用root账号去干一些事,我们一般也不会去频繁的登录root账号,普通用户一般就可以满足我们的需求,只有当执行一些权限比较高的的指令时,才会去切换为root账号。

除此之外,我们也可以变成其他普通用户,且root账号是不受限制的。

如果我们仅仅只是用root账户执行一条指令,也可以不用变成root账户,利用sudo 指令进行指令提权。

前提是也需要root账户同意添加为信任用户。

Linux权限管理

首先我们要知道权限是伴生文件的!

而对于权限我们是将他划分为两部分:

1.人--角色  每个人对因每一个角色,他们拥有不同的权限

对于文件:角色划分为:拥有者,所属组,other.

对于所属组:一般一个人就是一组,你也可以多人一组。所属组的只有本组内的人有对应的权限。

2.事物属性(读,写,执行)


1.文件访问者的分类(人):


文件和文件目录的所有者:u---User(中国平民 法律问题)
文件和文件目录的所有者所在的组的用户:g---Group(不多说)
其它用户:o---Others (外国人)


2.文件类型和访问权限(事物属性)

首先我们需要知道一件事:Linux区分类型与后缀无关。

Linux区分类型是根据这个文件是否具有可执行权限有关,后缀是为了用户区分文件。

利用第一列的第一个字符来区分类型:

—:代表普通文件  源代码 可执行文件

d:目录文件

c:字符设备文件

b:块设备文件

i:链接文件

p:管道文件

a) 文件类型

b)基本权限
i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
iv.“—”表示不具有该项权限


3.文件权限值的表示方法

字符表示法

如下图:

 8进制数值表示法

 

04.文件访问权限的相关设置方法

一般而言不同的用户在不同的目录。

:套接口文件
a)chmod
功能: 设置文件的访问权限
格式: chmod [ 参数 ] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和 root 才可以改变文件的权限
chmod
① 用户表示符 +/-= 权限字符
+: 向权限范围增加权限代号所表示的权限
-: 向权限范围取消权限代号所表示的权限
=: 向权限范围赋予权限代号所表示的权限
用户符号:  
u :拥有者
g :拥有者同组用
o :其它用户
a :所有用户
取消掉所有用户w权限,丧失了写的权限

 加上所有用户写的权限

 

chown

功能 :修改文件的拥有者
格式 chown [ 参数 ] 用户名 文件名
实例:

chgrp

功能 :修改文件或目录的所属组
格式 chgrp [ 参数 ] 用户组名 文件名
常用选项 -R 递归修改文件或目录的所属组
实例

 

file指令

辨识文件类型。
语法 file [ 选项 ] 文件或目录 ... 
常用选项
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容。
比特

目录的权限

可执行权限 : 如果目录没有可执行权限 , 则无法 cd 到目录中 .
可读权限 : 如果目录没有可读权限 , 则无法用 ls 等命令查看目录中的文件内容 .
可写权限 : 如果目录没有可写权限 , 则无法在目录中创建文件 , 也无法在目录中删除文件 .
于是 , 问题来了 ~~
换句话来讲 , 就是只要用户具有目录的写权限 , 用户就可以删除目录中的文件 , 而不论这个用户是否有这个文件的写
权限 .
这好像不太科学啊 , 我张三创建的一个文件 , 凭什么被你李四可以删掉

粘滞位

于是引入粘滞位给目录防止他人删除

一般默认是给other添加的

如给a.txt的other权限改为t  ---粘滞位   
当一个目录被设置为 " 粘滞位 "( chmod +t), 则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
关于权限的总结
目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有 -x 权限,则无法对目录执行任何命令,甚至无法 cd 进入目 , 即使目录仍然有 -r 读权限(这
个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
而如果目录具有 -x 权限,但没有 -r 权限,则用户可以执行命令,可以 cd 进入目录。但由于没有目录的读
权限
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux学习之权限 的相关文章

  • 错误:NVIDIA-SMI 失败,因为无法与 NVIDIA 驱动程序通信

    NVIDIA SMI 抛出此错误 NVIDIA SMI 失败 因为无法与 NVIDIA 通信 司机 确保安装了最新的 NVIDIA 驱动程序并且 跑步 我清除了 NVIDIA 并按照提到的步骤重新安装了它here https askubun
  • perf stat中的cycles注释是什么意思

    8 014196 task clock 0 004 CPUs utilized 204 context switches 0 025 M sec 32 cpu migrations 0 004 M sec 0 page faults 0 0
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • 确保 config.h 包含一次

    我有一个库项目 正在使用 Linux 中的 autotools 套件移植到该项目 我对自动工具很陌生 本周 我已经了解了其操作的基础知识 我有一个关于如何保留内容的问题config h免遭重新定义 我惊讶地发现生成的config h文件也没
  • 如何在 Linux 主机上的 docker 容器中挂载目录 [重复]

    这个问题在这里已经有答案了 我想将一个目录从 docker 容器挂载到本地文件系统 该目录是网站根目录 我需要能够使用任何编辑器在本地计算机上编辑它 我知道我可以跑docker run v local path container path
  • “grep -q”的意义是什么

    我正在阅读 grep 手册页 并遇到了 q 选项 它告诉 grep 不向标准输出写入任何内容 如果发现任何匹配 即使检测到错误 也立即以零状态退出 我不明白为什么这可能是理想或有用的行为 在一个程序中 其原因似乎是从标准输入读取 处理 写入
  • 如何成功使用RDAP协议代替whois

    我对新的 RDAP 协议有点困惑 也不知道何时进一步追求它有意义 在我看来 每个人都同意它是 whois 的继承者 但他们的数据库似乎是空的 在 ubuntu 上我尝试了 rdapper nicinfo 甚至他们的 RESTful API
  • numpy 未定义符号:PyFPE_jbuf

    我正在尝试使用一百万首歌曲数据集 为此我必须安装 python 表 numpy cython hdf5 numexpr 等 昨天我设法安装了我需要的所有内容 在使用 hdf5 遇到一些麻烦之后 我下载了预编译的二进制包并将它们保存在我的 b
  • 构建 makefile 依赖/继承树

    如果我解释得不好或者问了一些明显的问题 我很抱歉 但我是 Linux 内核的新手 而且有点深入 我们有一个嵌入式 Linux 系统 它附带一个 文档非常糟糕的 SDK 其中包含数百个文件夹stuff 大多数文件夹包含rules make m
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • 伊迪德信息

    重新定义问题 有什么方法可以获取所连接显示器的序列号吗 我想收集显示器的Eid信息 当我使用 logverbose 选项运行 X 时 我可以从 xorg 0 log 文件中获取它 但问题是 如果我切换显示器 拔出当前显示器 然后插入另一个显
  • 停止服务时单元陷入故障状态(状态=143)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这是我的问题 我有 CentOS 和 java 进程在上面运行 Java进程是通过启动 停止脚本来操作的 它也创建了 java 实例的 p
  • 在 LINUX 上使用 Python 连接到 OLAP 多维数据集

    我知道如何在 Windows 上使用 Python 连接到 MS OLAP 多维数据集 嗯 至少有一种方法 通常我使用 win32py 包并调用 COM 对象进行连接 import win32com client connection wi
  • 如何不断刷新屏幕并实时更新[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在linux上写一个C程序 不断刷新屏幕并实时更新 例如类似于top终端中的命令 谁能指出我正确的方向 为了保持它跨终端类型的可移
  • 如何在Python中独立于语言安装(linux)获取用户桌面路径

    我找到了 如何找到用户桌面的路径 的几个问题和答案 但在我看来它们都已失效 至少我找到的那些 原因是 如果用户安装的 Linux 不是英语 他或她的桌面很可能位于除 Desktop 例如 对于瑞典语 我相信它是在 Skrivbord 谁知道
  • Linux shell 脚本:十六进制数字到二进制字符串

    我正在 shell 脚本中寻找一些简单的方法来将十六进制数字转换为 0 和 1 字符的序列 Example 5F gt 01011111 是否有任何命令或简单的方法来完成它 或者我应该为其编写一些开关 echo ibase 16 obase
  • Linux 桌面快捷方式和安装图标

    我需要添加什么到我的 spec文件来创建桌面快捷方式并在安装过程中为快捷方式分配一个图标 rpm 如果需要脚本 一个示例将非常有帮助 您在 Linux 下使用 desktop 文件作为图标 图标放置的位置取决于您使用的发行版和桌面环境 由于
  • diff 文件仅比较每行的前 n 个字符

    我有2个文件 我们将它们称为 md5s1 txt 和 md5s2 txt 两者都包含a的输出 find type f print0 xargs 0 md5sum sort gt md5s txt 不同目录下的命令 许多文件被重命名 但内容保
  • 在 Linux 上的 Python 中使用受密码保护的 Excel 工作表

    问题很简单 我每周都会收到一堆受密码保护的 Excel 文件 我必须解析它们并使用 Python 将某些部分写入新文件 我得到了文件的密码 当在 Windows 上完成此操作时 处理起来很简单 我只需导入 win32com 并使用 clie
  • 在 Linux 中禁用历史记录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 要在 Linux 环境中禁用历史记录 我执行了以下命令 export HISTFILESIZE 0 export HISTSIZE 0 u

随机推荐

  • 搜集Shader一些参数(为自己)

    Shader ConfigurableShaders Rendering Properties Header Stencil Stencil Stencil ID 0 255 Float 0 ReadMask ReadMask 0 255
  • PLC控制运料小车往返运动

    实验要求 1 实验控制电路应该具有控制回路的总控制 其功能是启动和停止控制电路 它可以使小车停站的位置行程开关处于压合的位置 脱离延迟控制往返时为启动状态 及零压保护电路功能 2 小车沿轨道自动往返运动时 小车在行程内的任何位置时都可以起动
  • c++实现创建一个cocos2d-x的场景类

    文件 http pan baidu com s 1ntlu14H createVSClass cpp 定义控制台应用程序的入口点 include stdafx h include
  • RocketMQ消费者端消息列队六种负载均衡算法分析

    在RocketMQ启动的时候会启动负载均衡线程 过程如下 DefaultMQPullConsumerImpl start mQClientFactory start 上面点进去 gt MQClientInstance start rebal
  • 区间调度1.找到移除区间的最小数量

    求出最多有几个互不相交的区间 则做法是按end升序排序 选择一个结束最早的x 然后把区间中与它冲突的全部删除 别的区间的start要大于这个区间的end 接着重复步骤直到堆中没有区间 不用堆只用数组的话可以用一个for循环遍历整个数组 记录
  • 火猴之arc以及gesturemanager的应用(firemonkey)

    效果 目标 1 向左滑动 环形进度条从0 100 2 向右滑动 环形进度条从100 0 思路 1 放置3个arc组件 rotationangle设置为270 stroke的thickness设为30 2 放置gesturemanager组件
  • [Windows] 在磁盘管理中,脱机选项不可选,无法将磁盘脱机

    1 在磁盘管理中遇到无法脱机磁盘的情况 脱机选项不可选 可能是由于将虚拟内存设置到该磁盘上导致的 2 进入电脑属性 gt 高级系统设置 gt 高级 gt 性能设置 gt 高级 gt 更改 3 取消在该磁盘上设置的虚拟内存 4 再进入磁盘管理
  • Qt 智能指针

    C 11 标准中的提供的智能指针 在 Qt 中也提供了类似的替代功能 并且比 C 11 标准中提供的功能还要强大 所以如果我们使用 Qt 作为基础库 Qt 智能指针包括 QSharedPointer QScopedPointer QScop
  • 【react】js表达式和js语句(代码)的区别

    何为表达式 一定注意区分 js语句 代码 与 js表达式 1 表达式 一个表达式会产生一个值 可以放在任何一个需要值的地方 下面这些都是表达式 1 a 2 a b 3 demo 1 4 arr map 5 function test 2 语
  • Tomcat载入配置

    错误出现原因 未配置环境变量
  • (N1盒子) Openwrt 下 docker 容器访问互联网故障排除

    环境 硬件 N1盒子 Openwrt版本 openwrt flippy 60 o 情况描述 先是跑了个运行php的docker容器 日志里报错信息为 cURL error 7 Failed to connect to 域名 port 端口号
  • 《基于Linux物联网综合项目》常见问题汇总fae

    关于该课程说明 1 本课程目标 通过web浏览器访问服务器 实现登录 注册 数据库操作 远程操控硬件 采集环境信息 远程监控 拍照 图片显示等功能 将单片机 linux html 摄像头 数据库等知识点融入到一个项目中 2 什么群体适合学习
  • 自然语言处理卷积神经网络c 代码,卷积神经网络CNN 在自然语言处理中的应用

    序言 CNN在文本分类中取得了不俗的结果 而运用在这里的卷积可以分为1d 2d甚至是3d的 我们知道 CNN一般用来做图像 图像是可以通过预处理 将每幅照片都处理成一样的size的 也就是height和width具有一样的像素值 然后用一个
  • SPRINGBOOT学习记录

    SPRINGBOOT 1 入门 1 1 springBoot具体流程 1yaml 配置文件 2 自动装配 3集成web框架 4 集成数据库 5分布式开发 Dubbo rpc zookeeper 6 swagger 接口文档 7 任务调度 8
  • 图论--差分约束

    小引入 如果一个系统由n个变量和m个约束条件组成 形成如xi xj lt k ij 1 n 的不等式 则称其为查分约束系统 写成一个矩阵形式的不等式组的话则系数有且仅有一个1和一个 1 解这种不等式组为何会与图论扯上关系呢 在我们求解最短路
  • kindle刷机ttl_[原创]只需USB线对Kindle 3修砖的小白教程

    文章的最后有笔者用的电池测试方法和笔者在网盘上传的文件链接 正式开工 1 运行ATK 把i MX CPU设为iMX35 TO2 Device memory initial设为MDDR Host Setting设成USB 2 连接Kindle
  • WCF系列(五) -- 也谈序列化(下)

    1 DataContractSerializer支持的类型 2 1 1 用 DataContract 属性标记的类型 2 1 2 net 原生类型
  • 在Visual Studio 2017 中编写C#安装NuGet、使用元组特性的详细步骤

    主要是解决一下小白的迷茫 一 安装NuGet管理器 1 打开vs2017 打开 工具 扩展与更新 2 左侧目录点 联机 右上侧搜索栏输入 Nuget 搜索 3 下载NuPack NuGet Packager扩展 一次点击可能会下载不成功 那
  • 04_Qt信号与槽机制

    文章目录 一 信号和槽 1 1 Qt5的书写方式 1 1 1 处理子窗口的信号不带参数 1 1 2 处理子窗口的信号带参数 使用函数指针 1 2 Qt4的书写方式 1 3 Lambda表达式 匿名函数对象 二 自定义信号槽 2 1 信号 2
  • Linux学习之权限

    在学习Linux权限之前 我们先理解一下关于Linux内核与shell外壳之间的关系 shell命令以及运行原理 Linux严格意义上说的是一个操作系统 我们称之为 核心 kernel 但我们一般用户 不能直接使用kernel 而是通过ke