Linux权限理解

本文主要介绍linux系统中的权限管理和用户切换机制。权限是限制用户操作的关键,理解和正确使用权限有助于维护系统安全。

Linux权限理解

前言

本节主要讲解Linux的权限管理。权限是控制用户行为的机制,例如,你可以在力扣上刷题,但不能听音乐,这是由平台的权限设置决定的。如果你是VIP用户,你可以在QQ音乐上听任何音乐,而普通用户只能听非VIP的音乐。

概述

Linux系统中有两种类型的用户:

超级用户(root):可以在Linux系统中执行任何操作,不受限制。普通用户:在Linux系统中只能执行有限的操作。

超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

用户切换

用户之间可以通过以下命令进行切换:

命令:su [用户名]功能:切换到指定用户。

root用户切换到普通用户user,使用su user。从普通用户user切换到root用户,使用susu root,此时需要输入root用户的密码。

示例:超级用户切换到普通用户

root用户切换到普通用户gwj

[root@iZf8zhv7mi2thjdxsptkb8Z ~]# su gwj[gwj@iZf8zhv7mi2thjdxsptkb8Z root]$ whoamigwj[gwj@iZf8zhv7mi2thjdxsptkb8Z root]$

Linux权限理解

示例:普通用户切换到超级用户

从普通用户gwj切换到root用户,直接使用su,并输入root用户的密码:

[gwj@iZf8zhv7mi2thjdxsptkb8Z root]$ suPassword: [root@iZf8zhv7mi2thjdxsptkb8Z ~]# whoamiroot[root@iZf8zhv7mi2thjdxsptkb8Z ~]#

Linux权限理解

另一种切换方式

除了su命令,还可以使用su -命令。两者的区别在于,前者仅切换用户身份,不改变当前路径,而后者会切换到root用户的家目录。

使用sudo提升权限

普通用户可以通过sudo + 命令来临时提升权限,输入的是普通用户的密码:

[gwj@iZf8zhv7mi2thjdxsptkb8Z root]$ whoamigwj[gwj@iZf8zhv7mi2thjdxsptkb8Z root]$ sudo whoami[sudo] password for gwj: gwj is not in the sudoers file.  This incident will be reported.[gwj@iZf8zhv7mi2thjdxsptkb8Z root]$

Linux权限理解

初次使用sudo时会有如下提示:

Linux权限理解

Linux权限的理解

权限是角色与事物属性的结合。例如,某人有QQ音乐的会员身份,可以听会员专享的音乐,这是因为他有会员身份,而不是因为他叫什么名字。

因此,权限 = 角色 + 事物的属性。

Linux权限管理

文件访问者分为:

文件和目录的所有者(u – User)文件和目录的所有者所在组的用户(g – Group)其他用户(o – Others)

文件属性可以通过ls -l命令查看,属性从第二个字母开始,三个为一组。

Linux权限理解

权限字符表示:

r:可读w:可写x:可执行-:不具备该权限

Linux权限理解

权限值:

读(r/4):对文件可读取内容,对目录可浏览信息。写(w/2):对文件可修改内容,对目录可删除或移动文件。执行(x/1):对文件可执行,对目录可进入。

文件权限值表示方法:

字符表示法:

Linux权限理解

8进制数值表示法:

Linux权限理解

文件类型:

d:文件夹-:普通文件l:软链接b:块设备文件p:管道文件c:字符设备文件s:套接口文件

在Linux中讨论权限时,首先要确定当前用户是谁,然后查看文件的拥有者和所属组,判断当前用户的身份,最后查看该身份下的权限。权限与身份和文件属性相关。

权限修改

使用chmod命令可以设置文件的访问权限:

格式:chmod [参数] 权限 文件名常用选项:R递归修改目录文件的权限

只有文件的拥有者和root用户可以改变文件的权限。

示例:对text.txt文件进行权限修改

初始权限:

网龙b2b仿阿里巴巴电子商务平台 网龙b2b仿阿里巴巴电子商务平台

本系统经过多次升级改造,系统内核经过多次优化组合,已经具备相对比较方便快捷的个性化定制的特性,用户部署完毕以后,按照自己的运营要求,可实现快速定制会费管理,支持在线缴费和退费功能财富中心,管理会员的诚信度数据单客户多用户登录管理全部信息支持审批和排名不同的会员级别有不同的信息发布权限企业站单独生成,企业自主决定更新企业站信息留言、询价、报价统一管理,分系统查看分类信息参数化管理,支持多样分类信息,

网龙b2b仿阿里巴巴电子商务平台 0 查看详情 网龙b2b仿阿里巴巴电子商务平台

-rw-rw-r-- 1 gwj gwj    0 Dec 10 15:02 text.txt

Linux权限理解

给拥有者添加执行权限:

chmod u+x text.txt

Linux权限理解

从所属组删除写权限:

chmod g-w text.txt

Linux权限理解

从拥有者删除执行权限,给所属组添加写权限,给其他人添加写和执行权限:

chmod u-x,g+w,o+w,o+x text.txt

Linux权限理解

给所有用户添加读、写、执行权限:

chmod a+rwx text.txt

Linux权限理解

使用8进制数值修改权限:

chmod 777 text.txt

Linux权限理解

Linux权限理解

chown命令

用于修改文件的拥有者:

格式:chown [参数] 用户名 文件名

示例:

chown nanqiao text.txt

Linux权限理解

同时修改文件的拥有者和所属组:

chown gwj:nanqiao text.txt

Linux权限理解

chgrp命令

用于修改文件或目录的所属组:

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

示例:

chgrp gwj text.txt

Linux权限理解

umask命令

用于查看或修改文件掩码:

新建文件的默认权限为0666新建目录的默认权限为0777

实际创建的文件和目录权限会受到umask的影响:

实际权限 = 起始权限 & (~umask)

格式:

umask 权限值

超级用户默认掩码值为0022,普通用户默认为0002

普通用户创建的文件默认权限为664,目录为775

Linux权限理解

通过umask查看掩码:

Linux权限理解

掩码会影响初始权限,凡是在权限掩码中出现的权限,不会出现在最终文件权限中:

666 -> 110 110 110002 -> 000 000 010~umask:     111 111 101666 -> 110 110 110111 111 101按位与&110 110 100 -> 664

file命令

用于辨识文件类型:

语法:file [选项] 文件或目录...常用选项:-c:详细显示指令执行过程-z:尝试解读压缩文件的内容

使用sudo分配权限

修改/etc/sudoers文件分配权限:

chmod 740 /etc/sudoersvi /etc/sudoers

格式:接受权限的用户登陆的主机 =(执行命令的用户) 命令

使用sudo调用授权的命令:

sudo –u 用户名 命令

目录权限

可执行权限:没有可执行权限无法进入目录。可读权限:没有可读权限无法查看目录中的文件内容。可写权限:没有可写权限无法在目录中创建或删除文件。

注意:只要用户具有目录的写权限,就可以删除目录中的文件,无论是否有该文件的写权限。因此引入了粘滞位的概念。

粘滞位

当一个目录被设置为“粘滞位”(用chmod +t),则该目录下的文件只能由:

超级管理员删除该目录的所有者删除该文件的所有者删除

以上就是Linux权限理解的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/811624.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
掌握 JavaScript 数组指南
上一篇 2025年11月26日 22:54:42
多商户O2O商城系统开发多少钱?不用编程,开发本地门户论坛O2O商城
下一篇 2025年11月26日 22:54:49

相关推荐

  • composer require-dev和require有什么不同_Composer Require与Require-Dev区别解析

    require用于声明项目运行必需的依赖,如框架、数据库组件和第三方SDK,这些包会随项目部署到生产环境;2. require-dev用于声明仅在开发和测试阶段需要的工具,如PHPUnit、PHPStan、Faker等,不会默认部署到生产环境;3. 安装时composer install根据环境决定…

    2026年5月10日
    900
  • php常量怎么用_PHP常量(define/const)定义与使用方法

    PHP中可通过define函数和const关键字定义常量,用于存储不可变值。define适用于全局作用域,支持动态名称和条件定义,如define(‘SITE_NAME’, ‘MyWebsite’);const在编译时生效,语法简洁但限制多,只能在类或全…

    2026年5月10日
    000
  • Python命令怎样使用profile分析脚本性能 Python命令性能分析的基础教程

    使用Python的cProfile模块分析脚本性能最直接的方式是通过命令行执行python -m cProfile your_script.py,它会输出每个函数的调用次数、总耗时、累积耗时等关键指标,帮助定位性能瓶颈;为进一步分析,可将结果保存为文件python -m cProfile -o ou…

    2026年5月10日
    000
  • c++如何实现UDP通信_c++基于UDP的网络通信示例

    UDP通信基于套接字实现,适用于实时性要求高的场景。1. 流程包括创建套接字、绑定地址(接收方)、发送(sendto)与接收(recvfrom)数据、关闭套接字;2. 服务端监听指定端口,接收客户端消息并回传;3. 客户端发送消息至服务端并接收响应;4. 跨平台需处理Winsock初始化与库链接,编…

    2026年5月10日
    000
  • 谷歌浏览器如何截图 谷歌浏览器页面截图技巧

    谷歌浏览器如何截图 谷歌浏览器页面截图技巧谷歌浏览器如何截图 谷歌浏览器页面截图技巧谷歌浏览器如何截图 谷歌浏览器页面截图技巧谷歌浏览器如何截图 谷歌浏览器页面截图技巧

    使用谷歌浏览器的开发者工具截图步骤:1. 按ctrl+shift+i(windows/linux)或cmd+option+i(mac)打开开发者工具。2. 点击右上角三个点,选择”更多工具”,再选择”截图”。3. 选择截取整个页面。推荐的谷歌浏览器扩展…

    2026年5月10日 用户投稿
    100
  • Go语言接口与切片:如何识别和操作[]interface{}

    本文将深入探讨Go语言中如何识别和操作`[]interface{}`类型的切片。我们将介绍类型断言(Type Assertion)的关键作用,并通过`switch`语句演示如何安全地检测`[]interface{}`类型,并进而遍历其内部元素。文章旨在提供清晰的示例代码和专业指导,帮助开发者有效地处…

    2026年5月10日
    000
  • pycharm解析器怎么添加 解析器添加详细流程

    在pycharm中添加解析器的步骤包括:1) 打开pycharm并进入设置,2) 选择project interpreter,3) 点击齿轮图标并选择add,4) 选择解析器类型并配置路径,5) 点击ok完成添加。添加解析器后,选择合适的类型和版本,配置环境变量,并利用解析器的功能提高开发效率。 在…

    2026年5月10日
    000
  • c++中头文件和源文件的区别_c++头文件与源文件作用对比

    头文件声明接口,源文件实现逻辑。头文件含类、函数声明及宏定义,通过#include被多文件共享,用include守卫防重;源文件实现具体功能,编译为目标文件后由链接器合并。声明与实现分离提升模块化与编译效率,模板和内联函数因需编译时可见故常置于头文件,命名空间避免符号冲突,整体结构使项目更清晰易维护…

    2026年5月10日
    000
  • JavaScript Electron桌面应用

    答案:使用JavaScript开发%ignore_a_1%桌面应用需结合Web技术与Node.js,通过主进程管理窗口、渲染进程展示界面,并利用IPC通信,调用系统功能如文件对话框,最后用electron-builder打包发布,注意安全与进程职责分离。 用JavaScript开发Electron桌…

    2026年5月10日
    000
  • Go语言中复制数组的几种方法详解

    本文介绍了在 Go 语言中复制数组和切片的几种方法,重点讲解了内置的 `copy` 函数的使用方式,以及在多维切片场景下深拷贝与浅拷贝的区别,并提供了相应的代码示例。通过本文,你将掌握在不同场景下选择合适的复制方法,避免潜在的陷阱。 在 Go 语言中,复制数组和切片是一个常见的操作。根据不同的需求,…

    2026年5月10日
    000
  • Linux文件系统iostat命令使用技巧

    Linux文件系统iostat命令使用技巧Linux文件系统iostat命令使用技巧Linux文件系统iostat命令使用技巧Linux文件系统iostat命令使用技巧

    iostat是Linux系统中用于监控I/O设备负载的关键工具,能分析磁盘性能并识别瓶颈。默认输出包括CPU使用率和设备I/O统计,分为系统启动以来的平均值和当前采样周期数据。核心指标有:%util反映设备利用率,持续接近100%可能表示I/O瓶颈;await为平均I/O等待时间,过高说明响应变慢;…

    2026年5月10日 用户投稿
    000
  • C++ 函数递归详解:递归查找列表中的元素

    递归查找列表元素的步骤如下:递归基础条件:如果列表为空,则元素不存在。递归过程:使用递归调用查找列表的剩余部分,并调整返回的索引。检查列表的第一个元素:如果第一个元素与所查找的元素相等,则元素位于索引 0 处。找不到:如果递归和第一个元素检查都没有找到,则元素不存在。 C++ 函数递归详解:递归查找…

    2026年5月10日
    000
  • 如何测试html5编码_测试HTML5页面编码兼容性方法【编码测试】

    HTML5页面编码兼容性测试需五步:一查meta charset是否正确且前置;二验HTTP响应头Content-Type charset是否为utf-8;三用file或chardet工具探测实际编码;四跨浏览器测试URL参数中中文、Emoji解析;五通过W3C验证服务检查编码声明与字节一致性。 如…

    2026年5月10日
    100
  • 后缀php怎么打开_php文件打开方式与运行环境搭建指南

    要打开PHP文件需根据用途选择方式:查看代码可用文本编辑器或IDE,运行则需服务器环境。推荐新手使用XAMPP、WAMP等集成环境,将文件放入htdocs目录后访问localhost;开发者可利用PHP内置服务器,命令行执行php -S localhost:8000运行;高级用户可手动配置Apach…

    2026年5月10日
    000
  • 解决PHP foreach循环中变量“继承”问题:理解与避免意外数据泄露

    本文探讨PHP foreach循环中一个常见的陷阱:当循环内部的数组或变量未被显式初始化时,其值可能会“继承”自上一次循环迭代,导致意外的数据泄露和逻辑错误。文章将深入分析这一现象的根源,并通过示例代码展示如何通过在每次迭代开始时正确初始化变量来解决此问题,确保代码行为的预期一致性。 引言:fore…

    2026年5月10日
    100
  • 解决Python脚本中相对路径文件找不到的常见问题与策略

    本文旨在解决python脚本中因相对路径处理不当导致的文件找不到错误,尤其是在项目迁移后。文章将深入探讨python中相对路径的工作原理、当前工作目录(cwd)的影响,并提供使用`os.getcwd()`诊断问题以及利用`os.path.dirname(__file__)`结合`os.path.jo…

    2026年5月10日
    000
  • Golang如何提升TCP长连接处理效率_Golang TCP长连接处理性能优化实践详解

    答案:通过非阻塞I/O、单Goroutine双工模型、sync.Pool对象复用、TCP_NODELAY优化及高效心跳管理,结合系统调优,可显著提升Golang百万级TCP长连接处理效率。 在高并发网络服务场景中,TCP长连接的处理效率直接影响系统的吞吐能力和资源消耗。Golang凭借其轻量级Gor…

    2026年5月10日
    000
  • php源码怎么运行手机_php源码手机运行环境搭建步骤【教程】

    可在手机上通过特定工具运行PHP源码。首先选择支持PHP的移动应用,安卓用户可安装UserLAnd或KSWEB,iOS用户可尝试iSH Shell或a-Shell;然后配置本地服务器环境,启动HTTP和PHP服务,将PHP文件放入指定根目录;接着可通过Termux搭建完整开发环境,更新包列表并安装P…

    2026年5月10日
    000
  • Pandas:基于条件和 Groupby 替换列中的特定字符

    本文介绍了如何使用 Pandas 库,结合 groupby 函数和字符串操作,根据特定条件替换 DataFrame 列中的字符。通过累积计数和字典映射,能够灵活地修改列中的特定部分,并根据替换值调整相关文本,实现数据清洗和转换的目的。 在数据分析和处理中,经常需要根据特定条件修改 DataFrame…

    2026年5月10日
    000
  • Go语言:检查预编译库的构建版本与平台信息

    本文详细介绍了如何利用go语言内置的`go tool pack`工具,从预编译的go静态库(`.a`文件)中提取其构建信息,包括go编译器版本、操作系统和cpu架构。当`go build`因库版本不匹配而失败时,此方法能帮助开发者准确诊断问题,确保构建环境与库的兼容性。 在Go语言的开发实践中,我们…

    2026年5月10日
    000

发表回复

登录后才能评论
关注微信