【Linux】权限管理

这篇具有很好参考价值的文章主要介绍了【Linux】权限管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


1. shell命令以及运行原理

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。

从技术角度, Shell的最简单定义:命令行解释器(command Interpreter)主要包含:

1. 将使用者的命令翻译给核心(kernel)处理。
2. 将核心的处理结果翻译给使用者

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。

shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户

实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。当我们输入一些非法指令时候,shell会拒绝执行,所以它可以帮助我们保护操作系统。其实一般而言,shell本身并不执行对应的指令。而是通过派生子进程的方式执行用户输入的指令。这么做其实也是为了保护shell。其实Windows的图形化界面。本质上也是一种外壳程序。

linux 421权限,Linux,linux,windows,服务器
所以综上所述,shell存在的意义有两点:

  • 帮忙进行命令行传递和返回结果
  • 保护操作系统

2. Linux权限的概念

Linux下有两种用户:超级用户(root)和普通用户。那么,超级用户和普通用户分别又有什么不同,他们之间又有着什么样的关系呢?

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

💕 su 指令

命令:su [用户名]
功能:切换用户
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令

linux 421权限,Linux,linux,windows,服务器

这里我们需要注意的是如果我们要是普通用户切换成root用户时,su 后面的root可以省略。同时,如果我们想要再次切换回我们原来的用户,那么可以按键盘上的 Ctrl + D 键来切换回去,或者输入指令:su 用户名 来完成。


3. Linux权限管理

3.1 文件访问者的分类

Linux下的文件访问者可以分为以下三类:

文件拥有者:文件和文件目录的所有者: u—User
文件所属组:文件和文件目录的所有者所在的组的用户: g—Group
other: 其他用户,除了拥有者和所属组之外的用户称为other

对于文件拥有者和其他用户这两者都很好理解,那么什么是文件所属组呢?
linux 421权限,Linux,linux,windows,服务器
如图所示,假定公司要求做一个产品,并打话考核一下A、B两个小组,且两个小组所做的工作是一模一样的,A组创建了一个目录A_code,B组创建了一个目录B_code,在这里如果张三写好了一个模块,且只开放给组内的成员看,那么作为同为一个组的成员的王五就可以看到他所写的内容,但是另一个小组的李四则看不到他所写的内容,所以,这样看来,A组就相当于文件所属组,其他组的用户是无法访问张三所写的内容的。


3.2 文件类型和访问权限

当我们用ll指令来显示我们所在的用户下的所有文件详细信息时,就会发现有着好多文件信息的标志。
linux 421权限,Linux,linux,windows,服务器
但是我们有没有发现,最前面还有10个字符呢,那么最前面的10个字符又是什么意思呢?

文件类型

drwxrwxr-x 

其实前10个字符代表了文件的属性,每一个字符都是有他的意义所在的,首先第一个字符就代表了文件的类型。那么在Linux操作系统中,不使用文件的后缀来区分文件类型的,而是用文件属性中的第一列中的第一个字符来区分文件的类型。

在这里我们可以来看一个有趣的事情:

linux 421权限,Linux,linux,windows,服务器

(一)我们先创建一个名字为test.c的文件。然后在里面写一个简单的C语言代码来打印 hello world,然后我们修改一下这个可执行程序a.out的后缀名,然后再来运行一下。

linux 421权限,Linux,linux,windows,服务器

(二)在这里我们可以发现程序仍然可以运行。这里我们就可以证明了在Linux中文件类型和后缀名是没有关系的。

linux 421权限,Linux,linux,windows,服务器

(三)如果我们要是把源文件的后缀名改了的话,然后再使用gcc这个编译器去编译的话就会发现编译不通过会报错,这又是什么原因呢?

其实原因也很简单,因为gcc是Linux中安装的一款软件,这款软件在进行编译的时候,他会通过文件后缀名来识别文件类型。在这里我们可以把Linux文件的后缀看成是文件名的一部分,因为我们可以根据文件名来判断文件的类型。

💕 Linux中常见的文件类型

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


file指令

💕 file指令

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

下面我们来看一下file指令的用法:

linux 421权限,Linux,linux,windows,服务器


文件权限

刚才我们已经介绍了Linux下文件的类型,第1个字符代表的是文件的类型,那么我们现在再来看一下后9个字符所代表的含义吧。他们所代表的含义和文件权限又有什么样的关系呢?

文件自身具有的权限属性具有四种,rwx-。这四种属性的含义如下所示:

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

linux 421权限,Linux,linux,windows,服务器

这里我们把后9个字符分为了三组,前三列表示的是拥有者权限,中间三列表示的是所属组权限,最后三列表示的是other权限。


4. 文件访问权限的设置

4.1 chmod指令

💕 chmod指令: 修改拥有者、所属组、和other的相关权限

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
other: R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限

💖 chmod命令权限的格式:

chmod 用户符号 +/-=权限字符

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限
  • 用户符号:
    u:拥有者
    g:拥有者同组用
    o:其它用户
    a:所有用户

下面我们来举几个例子:

(一)给拥有者 + 可执行x的权限

linux 421权限,Linux,linux,windows,服务器

(二)对全部用户都 - r的权限

linux 421权限,Linux,linux,windows,服务器

💖 3位八进制数字修改文件权限:

这里我们可以使用三位八进制数字来修改文件的权限,三位数字按照顺序分别表示拥有者、所属组、other的权限。

在这里我们需要知道的是这三位八进制数字中的每一个数字都是由相应的三个二进制数字转换而来的。

比如说:拥有者具有1 0 0这三个二进制数字,他所代表的八进制数字就是4,表示拥有者仅仅具有读(r)文件的权限;所属组具有0 1 0这三个二进制数字,他所代表的八进制数字就是2,表示所属组仅仅具有写(w)文件的权限;other具有0 0 1这三个数字,代表的八进制数字是1,表示了other仅仅具有执行(x)文件的权限。

那我们就可以用指令将这三个数字连接起来(421)给文件赋予权限。

linux 421权限,Linux,linux,windows,服务器

这里我们来总结一下分别总结一下r w x的权值:

读取权限r)=> 4
写权限w)=> 2
执行权限x)=> 1

权限值的总和,即在三个段中的每一个中的读取,写入和执行,都占给定文件或目录的完整权限。


4.2 chown指令—修改文件拥有者

💕 chown指令

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

chown指令的作用是修改文件的拥有者,这里我们先来演示一下:

linux 421权限,Linux,linux,windows,服务器

这里我们打话将cjl.txt这个文件的拥有者从Chenjiale改为Chenyuhang发现并不能修改成功,其实这也是显而易见的,因为就算在生活中我们要将一个东西给别人的时候也得经过别人同意。

当然Linux中也是这样的,既然我们普通用户无法将文件拥有者修改,当然了,我们还有root呢,root在Linux中就充当的是超级管理员的身份,他是可以强制帮我们将文件管理者修改。

linux 421权限,Linux,linux,windows,服务器
这里我们可以看到,当我们用su指令切换成root身份时,就可以很轻松的将文件拥有者修改掉了。


4.3 chgrp指令—修改文件所属组

💕 chgrp指令

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

同样的如果我们打话将文件所属组修改也必须要用su指令来切换成超级管理员的身份来修改。

linux 421权限,Linux,linux,windows,服务器
当然了我们也可以将chownchgrp这两个指令连在一起用:用法为,sudo chown 用户名:用户名 filename

这里我们需要注意的是:这些权限约束的是普通的用户,对于root而言,是不受这些权限的约束的。


4.4 umask指令

💕 umask指令

命令:umask
功能:查看或修改文件掩码
常用选项:
umask 权限值

umask指令的作用是查看或修改文件掩码,新建文件夹默认权限=0666,新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

linux 421权限,Linux,linux,windows,服务器
linux 421权限,Linux,linux,windows,服务器


5. 目录权限

目录的三种权限分别有不同的功能:

可读权限(r):如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容
可写权限(w):如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件
可执行权限(x): 如果目录没有可执行权限, 则无法cd到目录中

linux 421权限,Linux,linux,windows,服务器

这里我们一定要注意如果如果要是一个目录没有了可执行权限x,那么将不能进入该目录,并且也无法查看该目录下的文件信息。


6. 粘滞位

💕 背景

在使用Linux的时候,未来可能会有一些共享目录,被普通的用户共享,用来保护普通用户产生的临时数据。

但是在这里是有一个问题的:也就是说共享的文件是可以被别人随便删除的,想要文件不被人删除,我们可以将该共享目录的w权限给关闭,但是如果要是将w权限关闭,那么别的用户将也无法在这个目录下创建文件,那这个文件就达不到共享的目的了。所以为了解决这一问题,就有了粘滞位这一概念。

我们先在root用户下创建一个共享文件夹public,然后A用户先在其中创建一个test.c的文件,然后把otherr权限关掉,然后B用户去读该文件时,发现不能够读,但是B用户去删除的时候却发现可以成功。

linux 421权限,Linux,linux,windows,服务器

为了让大家共享文件且用户创建的文件不能被随意删除。这里引入了粘滞位,那么下面我们来演示一下粘滞位的用法:

root用户下: chmod +t public,这样我们就成功给public文件夹设置了粘滞位。

linux 421权限,Linux,linux,windows,服务器

当我们设置好粘滞位后,除了root这个超级管理员外,就发现别人想要删除我们的文件夹时,是删不掉的了。文章来源地址https://www.toymoban.com/news/detail-789875.html


到了这里,关于【Linux】权限管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 服务器网口聚合(Linux&windows)

    1、什么是bond 网卡bond是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的技术。Kernels 2.4.12及以后的版本均供bonding模块,以前的版本可以通过patch实现。可以通过以下命令确定内核是否支持 bonding: 2、bond的模式 bon

    2024年02月04日
    浏览(44)
  • linux 服务器安装多版本 cuda (无 sudo 权限 非 root 用户也适用)

    linux 服务器安装多版本 cuda (无 sudo 权限 非 root 用户也适用) 下载想要版本的 cuda toolkit 下载对应版本 cudnn 以 cuda 10.0 为例 每个用户修改自己home目录下的 /bashrc 文件 对于无 sudo 权限 或者 非 root 用户,在安装第一步中安装cuda的时候,将cuda toolkit的安装路径设置为自己有权限

    2024年02月10日
    浏览(52)
  • Windows→Linux,本地同步到服务器

    本地-远程,增删改移全自动,不限文件/夹文件。注意是 本地到远程 单向,反之 远程-本地 无法自动同步,需要手动download到本地。 当然远程文件都是只读的,你肯定是操作本地文件的,除了远程代码生成的新文件,这里是唯一需要手动download到本地的。 配置文件会生成在项

    2024年03月25日
    浏览(53)
  • 服务器之间的文件挂载(Linux、Windows)

    文件挂载,是指加载文件系统到指定的加载点,比如:将服务器A上的某个目录与服务器B上的指定路径进行映射,使服务器B通过访问指定路径就能获取到服务器A上的目录详情,此时,A服务器被称为服务端,B服务器被称为客户端;A服务器上被映射的目录被成为挂载源,B服务

    2024年02月06日
    浏览(50)
  • 自建服务器系列-0元搭建linux服务器(windows笔记本)

    下载地址 准备一个32G以上的U盘 工具: ultraISO :下载地址 1、打开UltraISO工具,左上角点击文件选项-打开,选择下载好的iso镜像,如下: 2、点击工具栏启动选项-写入磁盘映像…-如下图弹窗中点击写入 3.等待刻录完成即可。 我的这台机器是dell inspiron 14 cpu: i7 4774 内存:8G (

    2024年04月25日
    浏览(52)
  • Linux服务器同步Windows目录同步-rsync

    最近需要,Linux的服务器同步Windows的一个目录。查了下,大概有三种方法:网盘同步;rsync同步;挂载目录。 网盘同步,可以选择搭建一个Nextcloud 。但是问题在于,我需要的是,客户端和服务端的同步,而不是客户端和客户端的同步。服务端没有界面,安装客户端的网盘软件

    2024年02月11日
    浏览(62)
  • 配置与管理Apache服务器(linux)

    1、安装Apache服务软件 # yum install -y httpd 2、启动Apache服务 # systemctl start httpd systemctl的其它选项 start:启动 stop:停止 restart:重启 enable:设置开机自动启动 disable:禁用服务,从开机启动项把服务移除 status:查看服务状态 3、关闭selinux #setenforce 0 4、关闭防火墙 # systemctl stop

    2024年02月09日
    浏览(66)
  • 配置与管理samba服务器(Linux)

    1.了解samba服务器的功能 2.掌握samba服务器的配置管理 3.掌握samba 客户端程序的使用 4.掌握Windows主机和Linux主机共享文件互访的方法 1、物理机(windows客户端):samba_windows_client (1)启用VMnat8网卡 (2)按拓扑图设置IP为192.168.37.20 2、Linux客户端:samba_linux_client (1)克隆1台虚拟

    2024年01月20日
    浏览(50)
  • Windows使用Notepad++编辑Linux服务器的文件

    🚀 Windows使用Notepad++编辑Linux服务器的文件 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发

    2024年02月15日
    浏览(75)
  • 查看服务器的监听端口(Windows、Linux、MacOS)

    打开命令行窗口(Windows)或终端(Linux/MacOS)。 输入以下命令: 按下回车键,将会列出所有正在监听的端口及其对应的进程ID。 如果需要查看某个特定端口的监听情况,可以使用以下命令: 其中,将“端口号”替换为需要查看的端口号。 如果需要查看进程ID对应的进程名称

    2024年02月08日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包