Linux下的权限

2023-05-16

Linux下的权限

  • 用户分类
  • 文件类型
    • 具体文件类型
  • 基本权限
    • root用户:
    • 修改权限
      • 使用方法:
      • 通过8进制数字更改权限
    • 对于文件,权限的意义
      • 读权限
      • 写权限
      • 运行权限
    • 对于目录权限的意义
  • 更改文件拥有者/所属组
    • chown
    • chgrp
    • 一次性同时修改拥有者和所属组
  • 粘滞位
    • 使用方法
    • 使用场景
    • 作用
  • 默认权限
    • 权限掩码
    • 自定义默认权限

什么是权限?权限就是一件事情是否允许被特定的人做,权限约束的对象是人,而文件本身具有天然的权限属性(r(可读) w(可写) x(可运行))。

用户分类

Linux下分别有3类用户:
1、 拥有者:owner,文件和文件目录的所有者
2、 所属组:group,文件和文件目录的所有者所在组的用户
3、 其他用户:other 其他用户
在这里插入图片描述
这两个分别为拥有者和所属组。

文件类型

Linux与windows系统下标识文件类型的方式有一些区别,Windows系统下一般以后缀名作为区分文件类型的依据,而Linux环境下以ll显示的文件详细情况中开头第一个来标识文件类型,例如:
在这里插入图片描述

具体文件类型

那么Linux环境下又有哪些文件类型呢?
d:表示目录/文件夹
-:普通文件(文本,各种动静态库,可执行程序,源程序)
c:字符设备文件:键盘与显示器

在这里插入图片描述

b:块设备文件:磁盘
p:管道文件:通信
l:链接文件:软链接

基本权限

Linux下的权限每三个为一组,分别对应拥有者,所属组以及其他用户,例如:
在这里插入图片描述
其中:
r(是否具有读权限)
w(是否具有写权限)
x(是否具有执行权限)
-(代表没有该权限)

root用户:

在linux环境下有两类用户,root(超级用户)和普通用户,root用户的权限非常高,因此可以直接修改权限,哪怕该文件创建者不是root。
在这里插入图片描述
并且root即使没有可读可写权限依然可以访问修改文件,root用户几乎不受权限约束,权限是用来约束普通用户的。
在这里插入图片描述
但是,对于可执行权限而言,root用户仍然需要x权限才能运行文件,需要自己添加可执行权限才可以执行,这是为了安全考虑
在这里插入图片描述

修改权限

使用chmod命令来设置文件访问权限,可进行永久修改。

使用方法:

chmod u(拥有者)/g(所属组)/o(其他) +(-)权限 文件名,可以对拥有者/所属组/其他进行权限设置,也可以同时设置所有人的权限(a)。
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限 用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
在这里插入图片描述

通过8进制数字更改权限

由于读写执行权限位置是确定都是两态的(是否可读,是否可写,是否可执行),因此可以用二进制0/1来表示,由于权限是每三个为一组,可以使用8进制方案来表述权限,例如:
rw-r–r--可以表示为110100100用8进制表示为644,具体操作如下:
在这里插入图片描述

对于文件,权限的意义

读权限

对于文件,如果没有读权限,则不能进行文件的访问
在这里插入图片描述

写权限

文件如果没有写权限,无法对文件进行写入修改。
在这里插入图片描述

运行权限

没有运行权限无法运行,需要注意的是有些文件例如文本文件等,即使给他加上写权限也仍然无法运行,因为他本身并不具备可执行能力。
在这里插入图片描述

对于目录权限的意义

目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
而如果目录具有x权限,但没有r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
在这里插入图片描述目录读权限:没有读权限则无法查看目录内容,但是可以进入目录
在这里插入图片描述
目录写权限:在目录下创建文件
在这里插入图片描述

进入目录需要什么权限:需要x权限
在这里插入图片描述
只有读权限没有访问权限:无法访问文件内容

在这里插入图片描述

更改文件拥有者/所属组

chown

使用chown命令,可以改变拥有者,但是普通用户即使是创建者仍然不能直接改变拥有者,例如:
在这里插入图片描述需要以root身份来设置拥有者,root用户可以直接改变拥有者
在这里插入图片描述

chgrp

chgrp命令与chown类似,普通用户不能直接修改所属组,需要进行权限提升,但是与chown区别在于 文件拥有者可以直接将自己文件的所属组更改回来不需要进行权限提升
在这里插入图片描述

一次性同时修改拥有者和所属组

在这里插入图片描述

粘滞位

使用方法

在这里插入图片描述

粘滞位:一般是限制other权限,只能对目录设置。

使用场景

如果目录对其他人(other用户)具有写权限,other可以删除该目录下的文件内容,如果目录本身对other没有写权限,other不可以删掉任何文件,但是如果既想要实现other可以在特定目录下创建文件并写入但是不让other用户删除该文件,于是可以使用粘滞位。

作用

对设置了粘滞位的目录,在该目录下,只能文件的拥有者或者root用户可以删除,其他人不能删除。例如,有多个人或者系统的临时数据,所有的临时文件放在tmp目录下 需要让所有人都能够访问tmp目录,需要将tmp目录权限全部放开,所以需要设置粘滞位,让每个人只能删除自己的文件。

默认权限

我们可以看到,每个文件被创建时,都有自己的默认权限,这种默认权限是怎么产生的呢?
在这里插入图片描述

权限掩码

这需要涉及到权限掩码这个概念,权限掩码是将在掩码中出现的位会在起始权限中去掉。
使用umask命令可以查看当前的权限掩码
在这里插入图片描述

普通文件的起始权限(666)
目录文件起始权限(777)
具体操作方式就是对掩码进行按位取反然后按位与上起始权限。

自定义默认权限

用户可以通过修改权限掩码的方式来修改文件的起始权限,通过这种方式修改的权限掩码仅在当前用户生效并且仅在本次登录生效,这也是系统为了安全考虑,使用默认的权限掩码。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux下的权限 的相关文章

  • 远程 ssh 命令:第一个回显输出丢失

    我试图通过 ssh 1 liner 调用在远程机器上运行多个命令 方法是将它们指定为传递给 bash c 的分号分隔字符串 它适用于某些情况 但不适用于其他情况 看一下这个 Note the echo 1 output is lost ba
  • 套接字发送并发保证

    如果我在两个进程 或两个线程 之间共享一个套接字 并且在这两个进程中我尝试发送一条阻塞的大消息 大于下划线协议缓冲区 是否可以保证这两个消息将按顺序发送 或者消息可以在内核内部交错吗 我主要对 TCP over IP 行为感兴趣 但了解它是
  • 除了 iptables 之外还有数据包管理实用程序吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 Linux 实用程序 它可以根据一组规则更改网络数据包的有效负载 理想情况下 我会使用
  • :: 右侧的非法标记

    我有以下模板声明 template
  • 类似 wget 的 BitTorrent 客户端或库? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 是否有任何
  • 如何随时暂停 pthread?

    最近我开始将 ucos ii 移植到 Ubuntu PC 上 我们知道 在pthread的回调函数中的 while 循环中简单地添加一个标志来执行暂停和恢复是不可能模拟ucos ii中的 进程 的 如下解决方案 因为ucos ii中的 进程
  • 使用 linux perf 工具测量应用程序的 FLOP

    我想使用 perf Linux 性能计数器子系统的新命令行接口命令 来测量某些应用程序执行的浮点和算术运算的数量 出于测试目的 我使用了我创建的一个简单的虚拟应用程序 请参见下文 因为我找不到任何为测量 FP 和整数运算而定义的 perf
  • 如何修改s_client的代码?

    我正在玩apps s client c in the openssl源代码 我想进行一些更改并运行它 但是在保存文件并执行操作后 我的更改没有得到反映make all or a make 例如 我改变了sc usage函数为此 BIO pr
  • 当存在点和下划线时,使用 sed 搜索并替换

    我该如何更换foo with foo sed 只需运行 sed s foo foo g file php 不起作用 逃离 sed s foo foo g file php Example cat test txt foo bar sed s
  • 如何查找或计算Linux进程的页表大小和其他内核占用?

    我怎样才能知道 Linux 进程页表有多大 以及任何其他可变大小的进程统计 如果您真的对页表感兴趣 请执行以下操作 cat proc meminfo grep PageTables PageTables 24496 kB
  • 如何使用sprof?

    请举例说明 从邮件中找到here http sources redhat com ml libc alpha 2003 07 msg00029 html and here http sourceware org ml binutils 20
  • 如何“grep”连续流?

    可以用吗grep在连续的流中 我的意思是有点tail f
  • Nasm 打印到下一行

    我用 nasm Assembly 编写了以下程序 section text global start start Input variables mov edx inLen mov ecx inMsg mov ebx 1 mov eax 4
  • bash双括号问题

    我对 bash 脚本非常陌生 在使用双括号时遇到了问题 我似乎无法让它们在 Ubuntu Server 11 10 中工作 我的下面的脚本位于 if test sh 中 bin bash if 14 14 then echo FOO fi
  • Bash 中 $() 和 () 之间的区别

    当我打字时ls l echo file 支架的输出 这只是简单的回显 被获取并传递到外部ls l命令 就等于简单的ls l file 当我打字时ls l echo file 我们有错误 因为不能嵌套 内部外部命令 有人可以帮助我理解之间的区
  • 测试linux下磁盘空间不足

    我有一个程序 当写入某个文件的磁盘空间不足时 该程序可能会死掉 我不确定是否是这种情况 我想运行它并查看 但我的测试服务器不会很快耗尽空间 有什么办法可以嘲笑这种行为吗 看起来没有任何方法可以在 Ubuntu 中设置文件夹 文件大小限制 并
  • Linux TCP服务器:在接受连接之前读取客户端的IP地址

    Related C Winsock API如何在接受连接之前获取连接客户端IP https stackoverflow com questions 716209 c winsock api how to get connecting cli
  • 如何使用 bash 脚本关闭所有终端,在每个终端中有效地按 Ctrl+Shift+Q

    我经常打开许多终端 其中一些正在运行重要的进程 例如服务器 而另一些则没有运行任何东西并且可以关闭 如果您按 重要 则会弹出确认提示Cntrl Shift Q在其中 如下所示 我想要一个 bash 脚本 它可以关闭所有终端 但将 重要 终端
  • 退出 bash 脚本但保持进程运行

    我正在运行服务器 需要使用参数执行以下命令 这些脚本目前工作得很好 但问题是当我运行脚本时我无法返回到控制台 它在控制台中保持运行 如果我强行停止它 那么该过程也会停止 我想继续运行该进程并返回到控制台 bin sh php home st
  • 静态链接共享对象?或者损坏的文件?

    我有一个从专有来源获得的库 我正在尝试链接它 但出现以下错误 libxxx so 文件无法识别 文件格式无法识别 Collect2 ld 返回 1 退出状态 确实 ldd libxxx so statically linked 这究竟意味着

随机推荐