当前位置: 首页 > news >正文

Linux入门基础 #7:Linux权限机制

---------------------------------------------------------------------------------



权限

  • 权限是操作系统用来限制对资源访问的机制,权限一般分为读,写,执行。系统中每个文件都拥有特定的权限,所属用户及所属组,通过这样的机制来限制哪些用户,哪些组可以对特定文件进行什么样的操作。
  • 每个进程都是以某个用户的身份运行的,所以进程的权限与该用户的权限一样,用户的权限越大,该进程拥有的权限就越大。



文件的权限


权限 对文件的影响 对目录的影响
r(读取) 可读取文件内容 可列出目录内容
w(写入) 可修改文件内容 可在目录中创建和删除文件
x(执行) 可作为命令执行 可访问目录内容


目录必须有x权限,否则无法查看其内容。x也叫浏览权限






UGO


Linux权限基于UGO模型进行控制:
  • U代表User,G代表Group,O代表Other
  • 每一个文件的权限基于UGO进行设置
  • 权限三个一组(rwx),对应UGO分别设置
  • 每一个文件拥有一个所属用户和所属组,对应UG,不属于该文件所属用户或所属组的使用O权限

命令ls -l可以查看当前目录下的文件信息

drwxrwxr-x 2 shuangde shuangde 4096 8月 25 00:33 hdu
-rw-rw-r-- 1 shuangde shuangde 26 8月 24 22:50 input.txt

drwxrwxr-x
d: 文件类型, d表示是目录,-表示是普通文件
rwx: U权限
rwx: G权限
r-x:  Other权限,  -代表没有该权限






修改文件所属用户,组


  • 命令chown(change own)用以改变文件所属用户
$ chown  shuangde   test.cpp   把test.cpp文件的用户修改为shuangde
-R 参数递归地修改目录下的所有文件的所属用户

  • 命令chgrp(change group)用来改变文件的所属组:
$ chgrp  lab104   test.cpp   把test.cpp文件的所属组修改为lab104
-R 参数递归地修改目录下的所有文件的所属组




修改权限

命令chmod用以修改文件的权限
   $ chmod  模式  文件
模式为如下格式:
u,g,o分别代表用户,组和其他
a可以代指ugo
+, -代表加入或删除对应的权限
r, w, x代表三种权限

示例:
$ chmod  u+rw   test.cpp   把test.cpp的用户权限增加rw
$ chmod  g-x   test.cpp      把test.cpp的组权限删除x
$ chmod  go+r  test.cpp     把test.cpp的组和其他权限增加r
$ chmod  a-x  test             把test.cpp的ugo权限删除x


命令chmod也支持以数字(二进制)方式修改权限, 3个权限分别由三个数字表示:
-r  = 4  (2^2)
-w = 2  (2^1)
-x  = 1  (2^0)
实际上就是按照二进制:  111,  每位代表rwx相同顺序的位置,如果该位为0,则表示没有该权限。
没有权限 = 0

使用数字表示权限时,每组分别为对应数字之和:
rw   =  4 + 2      = 4 | 2       = 6
rwx =  4 + 2 + 1 = 4 | 2 | 1  = 7
r-x  =  4 + 1       = 4 | 1       = 5  

所以,使用数字表示ugo权限使用如下方式表示:
chmod 660  test.cpp   等价于   rw-rw----
chmod 775  test.cpp   等价于   rwxrwxr-x



相关文章:

  • OI算法汇总[大纲]
  • [C++]高精度 bign (重载运算符版本)
  • [高精度][codevs 1145]Hanoi双塔问题
  • C/C++头文件一览
  • [MZ test.16]P1 评测
  • [MZ test.16]P2 math 乘方e
  • codevs#1287[题解] Key:矩阵乘法
  • codevs#3147[题解]矩阵乘法2
  • MZ test17# NOIP模拟题 # T1 第1题 时间计算(heaven.pas/cpp)[key.模拟]
  • MZ test17# NOIP模拟题 # T2 第2题 最优时间表(sche.pas/cpp) [key.DP]
  • MZ test17# NOIP模拟题 #T3 第3 题 登山机器人(robot.pas/cpp)
  • MZ test17# NOIP模拟题 # T4 第4题 路线统计(route.cpp/pas)[key:矩阵]
  • [线性代数] 矩阵#1
  • codevs#1116 [题解]四色问题 [key.搜索 dfs]
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • __proto__ 和 prototype的关系
  • 【React系列】如何构建React应用程序
  • 2017 年终总结 —— 在路上
  • JAVA多线程机制解析-volatilesynchronized
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Linux中的硬链接与软链接
  • Median of Two Sorted Arrays
  • mysql innodb 索引使用指南
  • nodejs调试方法
  • PaddlePaddle-GitHub的正确打开姿势
  • Twitter赢在开放,三年创造奇迹
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 包装类对象
  • 闭包--闭包作用之保存(一)
  • 从0实现一个tiny react(三)生命周期
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 关于Java中分层中遇到的一些问题
  • 讲清楚之javascript作用域
  • 码农张的Bug人生 - 见面之礼
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 设计模式(12)迭代器模式(讲解+应用)
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 想写好前端,先练好内功
  • 小程序button引导用户授权
  • ###STL(标准模板库)
  • (6)设计一个TimeMap
  • (C语言)fgets与fputs函数详解
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .Net 代码性能 - (1)
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NET4.0并行计算技术基础(1)
  • @Data注解的作用
  • @RequestMapping-占位符映射
  • [ Linux ] Linux信号概述 信号的产生
  • [Android 数据通信] android cmwap接入点