Linux下的权限

本文介绍了Linux系统中的外壳程序如何作为用户与操作系统交互的中介,以及权限的概念,包括不同用户类型(超级用户和普通用户)、文件和目录的权限设置、文件类型与访问权限、目录权限以及默认权限的计算。还涵盖了chomd、chown和chgrp等权限管理命令的使用。
摘要由CSDN通过智能技术生成

1. 操作系统的外壳 

在理解Linux权限之前,我们先来吃点小菜。

1.大部分指令都是文件,如果把指令对应的文件删除了,那么这条指令就使用不了了。

2.用户执行某种功能的时候,不是直接让操作系统执行对应的指令的,而是先交给外壳程序

常见的外壳程序有,图形化界面和命令行。

 

关于第一条,我们上一节有提过Linux基本指令(下)-CSDN博客

 我们的电脑里有着各种各样的可执行程序,比如我们要打开qq,在桌面点击qq的快捷方式,实际上就是点击qq的可执行程序,不过这个过程交给操作系统来做了。一旦删除qq的可执行程序,那么就打不开qq了。

第二条,大家看,下图有什么差别?

 

图中右边是图形化界面,左边是命令行,这两者都是外壳程序。

外壳程序是什么?

外壳程序实际就是介于用户和操作系统之间的软件,简单来说,就是命令行解释器  。

你通过外壳程序向操作系统发出指令,操作系统通过外壳向你进行反馈。 

同时外壳程序会对你发出的指令进行判断,不合法的指令会做处理。 

为什么要有外壳程序? 

 外壳程序承担着用户与操作系统进行交互的重要功能。普通用户不了解操作系统,那么要和他进行交互,只能通过外壳程序。类似Xshell的命令行外壳,使用者自然是程序员等,而图形化界面才是普及大众的外壳,不仅美观,而且操作简便。

      用户不善于与操作系统之间进行交互。

      外壳shell的存在,可以对请求进行合法性检测,变相的保护操作系统。

2. Linux的权限 

2.1 什么是权限?

通俗来讲,权限就是能与不能的概念。你能访问某类资源,也就是你对这类的访问具有权限。

2.2 权限的本质 

当你是学生或者教职工的时候,你就能进入学校的大门;

当你是店铺店主的时候,你就能查阅店铺的营销情况。

我们作为用户,可以在leetcode里写代码而不能看电影。

因此权限=人物(角色)+事物属性。 

2.3 Linux里的用户

Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”

 

类似于公司的老总与普通员工。那么如果老总创了小号,要怎么快速切换老总号与普通号呢?

这里有一个命令:

su [用户名] 

 

在普通用户下,直接su默认进入root,su -也是进入root 。区别在于su -会直接进入用户的家目录

 

那么我们不想进入root账号,却要行使root的权利该怎么做呢?

在指令前加sudo(提权)但当我们键入密码后,却发现我们收到了警告:用户不在sudoers文件中,并且本次事件将被报告。

在 Linux 中,普通用户默认没有 sudo 权限。这是为了防止普通用户执行一些可能对系统造成损害的命令。 如果普通用户需要使用 sudo 权限,可以通过以下方式进行设置: 1. 将普通用户添加到 sudo 组。 2. 修改 sudoers 文件,允许普通用户使用 sudo 命令。

3. Linux权限管理 

3.1 Linux中的文件访问者 

linux中文件的访问者共分为三类:

文件和文件目录的所有者:u---User
文件和文件目录的所有者所在的组的用户:g---Group
其它用户:o---Others

3.2 文件类型与访问权限 

 

windows区分文件类别的方式是什么?后缀!

那么Linux也是吗?

不,Linux是通过上图属性列的第一位来表示文件类型的。 (如gcc等工具可能会区分)

1. 文件类型 

d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

2. 基本权限 

属性列三三一组,分别代表拥有者,所属组,other

< > 读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
< > 写(w):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
< > 执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
< > “—”表示不具有该项权限

3. 文件权限值的表示 

字符表示 

 

八进制数值表示 

 

 我们画个图简单举个例子

4. 文件访问权限的相关设置方式 

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

eg:修改file文件权限为:拥有者可读,所属组可读可执行,other无权限

 

将三个访问者的权限全部打开。 

 

eg:我们编写了一个c语言代码,编译后修改拥有者的执行权限。

 

 但切记,这些权限的修改对root用户是没有作用的。

8进制数值表示方法

 拥有者,所属组,other都是三三为一组。

我们把是由否有权限:是用1代替,否用0代替。

那么rw,我们就可以对应的写成110,那么转成八进制就是6,所以6就等于rw的效果。

(2)chown

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

(3)chgrp

功能:修改文件或目录的所属组
格式: chgrp [参数] 用户组名 文件名

eg:

 

4. 目录的权限 

 在Linux一切皆文件的理念下,目录自然也是文件。

那么目录当然也有权限。

可执行权限: 如果目录没有可执行权限, 则无法cd到目录中

可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写
权限。

比如user01有user10用户家目录的写权限,那么user01就可以对user10家目录下的内容进行操作。而目录的内容则包括其下的文件。

5. 默认权限

新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。

我们可以看到新建目录的默认权限是0775,新建文件的默认权限是0664。

这是为什么呢?

 因为创建文件或目录的时候还要受到umask的影响。

umask
功能:查看或修改文件掩码

假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

我们看看Linux系统文件掩码默认值

eg: 创建文件默认权限是0666,那么0666还要  按位与 上取反的umask的值

  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值