【Linux】 Linux用户权限、文件权限、权限操作相关介绍

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

linux用户设置权限,Linux-系统编程,linux,运维,服务器



Linux 权限的概念


Linux 用户

Linux下有两种用户:超级用户(root)、普通用户

其中,root用户的权限 在Linux中可以看作是 不受任何管控 的,就像 Windows中的管理员linux用户设置权限,Linux-系统编程,linux,运维,服务器
而除了 root 之外的其他的所有用户都只是 普通用户,普通用户的权限是 受到管控

root 和 所有普通用户 都是需要设置密码的,且root和其他用户的密码最好不要设置为相同的,因为有时输入密码用户可能无法区分 系统所需要的是什么密码

whoami 是一句指令,可以显示的当前用户是谁:
linux用户设置权限,Linux-系统编程,linux,运维,服务器

su 用户名 可以切换用户,su -su 默认切换为 root,登录到其他用户之后,可以使用 exit 指令退出 :
linux用户设置权限,Linux-系统编程,linux,运维,服务器

root用户 的命令提示符是 # ,而 普通用户 的命令提示符是$
linux用户设置权限,Linux-系统编程,linux,运维,服务器

虽然 普通用户 的权限是受限制的,但是其实 普通用户 在执行命令时可以,可以 通过 sudo 来临时提升权限 为超级用户权限(需要在信任列表中配置)

Linux 权限

在理解 Linux权限 之前,先理解一下 生活中什么是权限?

通俗来讲生活中的权限就是:对于一件事物,人可以对其做什么,不能对其做什么
举个例子:你的好友有一本书,他让你看这本书,但是不让你在书上乱涂乱画,也不让你带走这本书,更不让你毁坏这本书。这样,你对这本书的权限就是:可看、不可画、不可带走、不可毁坏;而你的朋友对这本书的权限(如果没有更高层次的约束:比如父母 doge)就是:可看、可画、可带走、可毁坏,只是他愿不愿意罢了。并且,两人都不能用这本书炒菜,因为这本书本来就没这种功能。这种事物本身不具有的不能成为权限。

Linux权限 也是如此,不过在 Linux系统 中,你和朋友及其他人 都被称为用户,这些用户对文件可以做什么,不可以做什么,就是 Linux权限

Linux 文件访问者

首先,在上面介绍权限时,提到了 用户

在 Linux系统 中存在不同的用户:root 和 其他。Linux系统中的文件,也是由用户访问的,而对于每个文件的访问用户又可以被分为三种

  1. 文件和文件目录的所有者:u---User

    什么是所有者?顾名思义就是 文件当前的所有者User

    在上一篇Linux文章中介绍 ls 指令时,介绍了 -l 选项,可以将文件详细属性列出来:

    linux用户设置权限,Linux-系统编程,linux,运维,服务器

    默认情况下,谁创建的文件谁就是文件的拥有者,但是拥有者是可以更改的

  2. 文件和文件目录的所有者所在的组的用户:g---Grouper

    什么是组?在日常生活中,无论是上学还是公司,都有非常的大的概率会进行分组

    Linux 系统中也是如此,Linux中的 用户可以进行分组Group,当前用户所属组的其他用户,就是Grouper

    linux用户设置权限,Linux-系统编程,linux,运维,服务器
  3. 其它用户:o---Others

    除文件的所有者和其所在组的用户之外的用户,统称为其他用户

    也就是说,如果文件的所有者是普通用户,其所在的组用户也都是普通用户即便是root 也得称为其他用户

    由于 对一个文件来说,它的访问者的身份都是相对的,所有者和其所在的组用户和相对的其他用户,所以 文件的详细属性是不显示其他用户的,也无法显示完全

    为什么说:对与一个文件,它的访问者的身份都是相对的

    因为当这个文件的所有者是 root 时,此文件的其他用户就是其他的普通用户

    当这个文件的所有者是 普通用户时,如果root没在此用户组内,root也只能是此文件的其他用户

    即,文件访问者只是一种身份

也可以说 Linux权限就是围绕着用户和文件属性展开的

Linux 权限管理

Linux 文件类型、访问权限

ls -l 列出文件详细属性时,有一列由 d - r w x 等组成的内容,这些内容都是什么意思呢?

linux用户设置权限,Linux-系统编程,linux,运维,服务器

这些东西,其实表示的是 文件的类型和访问权限

Linux系统 是 不以文件后缀来区分文件类型的,而是通过详细属性中第一个字符来区分文件类型的
linux用户设置权限,Linux-系统编程,linux,运维,服务器

Linux系统规定:

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

而在Linux系统中 一般接触到的文件,90% 都是 d 目录文件- 普通文件

**d 目录文件不必多说,那么什么是- 普通文件**呢?
其实,Linux系统中的 文本文件,源代码文件,可执行程序,第三方动、静态库等 都是普通文件,把握不准的可以 ll 或 ls -l 查看详细属性区分

llls -l 作用基本一样,单位区别
linux用户设置权限,Linux-系统编程,linux,运维,服务器

注意:不以文件后缀来区分文件类型的是 Linux系统,而不是系统上的其他软件

比如:

使用gcc编译一个非.c后缀的文件会报错
linux用户设置权限,Linux-系统编程,linux,运维,服务器

这就说明了, gcc这个软件是需要检测到文件的后缀是.c

那串符号中的第一个字符,已经知道是啥意思了,那后面的 9个字符呢?

后面的 其实表示此文件的访问权限
linux用户设置权限,Linux-系统编程,linux,运维,服务器

文件详细属性的第一列的后 9位字符,以 每3位 为一部份,分别表示 所有者权限、所在组权限、其他成员权限
linux用户设置权限,Linux-系统编程,linux,运维,服务器

这 9 位字符只由 r w x - 组成,且 3个 为一组,其中:

  1. r : read 代表读权限,r表示可读,-表示不可读
  2. w :write 代表写权限,w表示可写,-表示不可写
  3. x :execute 代表执行权限,x表示可执行,-表示不可执行

并且,每3位中 读写执行权限的位置是固定的,顺序必须为 rwx 不能为 wrxxrw,即:
每三位中,首位读权限,次位写权限,末尾执行权限

file 文件类型显示

file 是一个指令,可以辨识指定文件的类型

功能说明:辨识文件类型
语法:file [选项] 文件或目录...
常用选项:

选项 功能
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容
linux用户设置权限,Linux-系统编程,linux,运维,服务器

file 没有 .c 后缀,也可以识别出它是 C语言源文件,因为 Linux不以文件后缀识别文件类型

Linux 文件访问权限的相关设置

上面介绍了 Linux系统中文件的类型和文件访问的权限,其实这些属性是可以修改的

访问权限的修改

只有文件的拥有者和root才可以改变文件的权限

修改访问权限的方法有两种,但都是通过**chmod**实现的:

chmod 中的 chchange 的缩写

  1. chmod [选项] 身份+/-/=权限 文件

    其实用法就像这样:
    linux用户设置权限,Linux-系统编程,linux,运维,服务器

    chmod [选项] 身份+/-/=权限 文件:

    1. 选项
    选项 功能
    R 对目录使用,递归修改目录内所有文件权限
    1. 身份

    u : user 表示所有者权限

    g : grouper 表示组成员权限

    o : others 表示其他成员权限

    a : all 表示所有成员

    1. +/-

    + : 表示增添权限

    - : 表示取消权限

    = : 表示只赋予权限,一般与 a 结合使用

    1. 权限

    r : read 表示读权限

    w : write 表示写权限

    x : execute 表示执行权限

    可以使用 chmod a=权限 文件只赋予 所有成员相应的权限,什么是只赋予呢?:
    linux用户设置权限,Linux-系统编程,linux,运维,服务器

    当然,= 后可跟多个权限

  2. chmod 权限八进制 文件

    通过观察可以发现,各权限(读、写、执行)只存在 可和不可 两种状态,可以看作一种二进制的形式
    而对应用户身份权限的表示 又是每三位表示一种用户,这三位结合就可以看作是一种八进制

    举例子:

    对于文件所有者,一共存在这八种权限情况:

    --- --x -w- -wx r-- r-x rw- rwx
    可以看作一种二进制,分别对应
    000 001 010 011 100 101 110 111
    即八进制的:0 1 2 3 4 5 6 7

    Linux也就就可以直接使用这种类八进制的方式,设置权限

    用法:
    linux用户设置权限,Linux-系统编程,linux,运维,服务器

访问用户的修改

文件的访问权限可以修改,其所属用户即组也都可以修改

修改文件的所有者,就像赠送别人东西,是需要经过被赠人的同意的,正所谓:己所不欲勿施于人 doge

所以,修改文件的所有者,其实也是需要新所有者同意的
但是,修改所有者的动作并不是一个请求动作,被赠人也不能主动同意,所以只能让其被动同意

怎么让其被动同意呢?
使用 root 修改,或者 sudo 临时提升权限root 就像是上帝,是不受任何限制的,sudo 可将此操作提升到同等的地位

如果没有使用 root用户sudo 就会提示:
linux用户设置权限,Linux-系统编程,linux,运维,服务器

PS:想要将文件给某个用户,此系统需要有此用户

  1. chown

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

    选项 功能
    -R 对目录使用,递归修改目录内所有文件权限

    chown 可以将文件的所有者,改为其他用户:
    linux用户设置权限,Linux-系统编程,linux,运维,服务器

  2. chgrp

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

    选项 功能
    -R 对目录使用,递归修改目录内所有文件权限
    linux用户设置权限,Linux-系统编程,linux,运维,服务器

相关问题 *

文件权限、用户对其所属关系的修改,已经介绍过了

但是还有一些问题:

  1. 问题1:进入目录需要什么权限?

为了得到答案,可以逐权限测试:
读权限:linux用户设置权限,Linux-系统编程,linux,运维,服务器

写权限:linux用户设置权限,Linux-系统编程,linux,运维,服务器

执行权限:linux用户设置权限,Linux-系统编程,linux,运维,服务器

可以看到,想要进入目录,访问者需要有执行权限

  1. 问题2:查看文件是怎么样查看的?目录文件又是怎么查看的?

之前指令中提到,查看文本文件可以直接使用 cat more less
linux用户设置权限,Linux-系统编程,linux,运维,服务器

那么,目录文件的内容是怎么查看的呢?文件内容是什么呢?

Linux系统中,所有东西都可看作是文件,目录也是文件。目录是由什么组成的呢?

目录 = 属性 + 内容,而目录的内容其实就是 子目录 和 内部文件 的属性

所以
读目录的操作就是 ls 查看目录内文件列表写目录的操作就是 mkdir touch 等可创建文件的操作执行目录的操作就是 cd 进入目录

可以验证一下:
用户对目录只有执行权限:linux用户设置权限,Linux-系统编程,linux,运维,服务器

用户对目录只没有读权限:linux用户设置权限,Linux-系统编程,linux,运维,服务器

用户对目录只没有写权限:linux用户设置权限,Linux-系统编程,linux,运维,服务器

用户对各个文件的权限是独立的,目录内文件的内容是否可以查看,与目录无关 与 文件本身有关

假如用户对一个目录没有读权限,但不能说明用户对目录内的文件没有读权限

但是,如果用户对一个目录没有读权限,也就没有办法获取目录内容,即无法获取目录内文件的属性

因为 Linux系统是不根据文件名识别文件的,是根据每个文件在系统中对应的ID,所以即使知道目录内文件的文件名,原则上也是无法直接查看目录内文件的内容的

但是,实际的测试发现,即使 用户对目录没有读权限,也是可以查看目录内文件的内容的:
linux用户设置权限,Linux-系统编程,linux,运维,服务器

这其实是因为 虽然系统不根据文件名识别文件,但是文件名与文件的ID 存在一定的映射关系,如果这个关系被系统缓存了,也可以通过文件名来找到文件,就可以通过文件名查看 没有读权限的目录内的文件

umask 权限掩码

一个文件的默认权限是什么?为什么是这样?

权限掩码可以解释这两个问题

新创建一个普通文件和目录文件,查看它们的默认权限:linux用户设置权限,Linux-系统编程,linux,运维,服务器

用户刚创建出文件时的权限被称为 最终权限775664 即为不同类型文件的最终权限

而 Linux规定,目录文件的默认权限是从 777 开始的,普通文件的默认权限是从 666 开始的

那为什么,创建出来的目录文件是775,普通文件是664呢?

这一切都与 权限掩码有关

umask 可以查看、修改权限掩码:
linux用户设置权限,Linux-系统编程,linux,运维,服务器

权限掩码是干什么用的?

默认的权限掩码为 002,目录文件的默认权限是从 777 开始的,普通文件的默认权限是从 666 开始的
而刚创建出来的 目录文件的权限是 775 ,普通文件的权限是 664

可以看出,这三者像是有一种相减的关系

这三者之间确实存在一定的关系,但并不是相减的关系,而是:最终权限 = 默认权限 & (~umask)

当目录文件的默认权限为 777,默认权限掩码为 002,则目录文件的最终权限就是 777 & (~002) -> 775

可以试着验证一下,这三者的关系究竟是最终权限 = 默认权限 - umask,还是最终权限 = 默认权限 & (~umask)

当默认权限 设置为 000
linux用户设置权限,Linux-系统编程,linux,运维,服务器

粘滞位

Linux系统中存在一些,可供不同用户一起存储文件的公共目录,这些公共目录的所有者和所属组都是 root,其他用户可以 others的身份 对其内容 读、写、删除等

但是,不同用户使用同一个目录,如果不加以限制 那么用户各自的文件的安全性就得不到保障

举个例子:

**root**创建一个公共目录PublicDir,用户July 和 Julyxx 都可以使用:
linux用户设置权限,Linux-系统编程,linux,运维,服务器

两个用户都可以在 这个目录里存放属于自己的文件,并加以限制:
linux用户设置权限,Linux-系统编程,linux,运维,服务器

看似已经非常安全了,但是,由于所有用户都可以对此目录内容进行修改、删除,所以即使设置了其他用户无权限,其他用户依然可以删除此文件 :
linux用户设置权限,Linux-系统编程,linux,运维,服务器

但又无法避免多用户需要共同使用一个目录的需求,又得保证公共目录下各自文件的安全,所以 Linux引入了粘滞位

每个用户可以对属于自己的目录文件 使用**chmod +t 目录文件 就可以设置粘滞位**:
linux用户设置权限,Linux-系统编程,linux,运维,服务器

任何目录文件都可以设置粘滞位
linux用户设置权限,Linux-系统编程,linux,运维,服务器

设置了粘滞位的目录,用户就无法在此目录内随意删除文件,该目录内的文件只能由:文章来源地址https://www.toymoban.com/news/detail-752183.html

  1. root用户删除
  2. 该目录的所有者删除
  3. 该文件的所有者删除
linux用户设置权限,Linux-系统编程,linux,运维,服务器

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

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

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

相关文章

  • Linux基础命令 - 文件及目录操作, 打印输出, 查找命令, 用户及权限管理, vi的使用等

    vi - 纯文本编辑器 vi命令 是UNIX操作系统和类UNIX操作系统中最通用的 全屏幕 纯文本编辑器。Linux中的vi编辑器叫 vim ,它是vi的 增强版 (vi Improved),与vi编辑器 完全兼容 ,而且实现了很多 增强功能 。 vi编辑器支持 编辑模式 和 命令模式 ,编辑模式下可以完成文本的编辑功

    2024年02月06日
    浏览(83)
  • linux用户权限相关命令笔记

     1.1 ls 扩展  ls -l   1.2 chmod 简单使用(重要)  + 是加权限, - 是减权限 chmod 修改文件权限   chmod 修改目录权限: 想要在目录下执行终端命令,就必须要有可执行权限。 1.3 超级用户     groupadd 组名 :添加组     chgrp -R 组名  文件/目录名:修改文件/目录的所属组  本来

    2024年02月06日
    浏览(43)
  • Linux权限相关介绍

    目录 前言 1.Linux操作系统下的两种用户  Linux权限管理 Linux文件访问对象分类 文件类型和访问权限 文件类型 基本权限  文件访问权限的相关设置方法 chmod chown chgrp  umask掩码  目录权限 粘滞位     权限指的就是我们对于某件事物所能够相关操作,而对于不同对象该所能进行

    2024年02月06日
    浏览(31)
  • DOCKER权限设置:LINUX新增用户添加ROOT权限

    一、首先在LINUX下创建新用户 二、为用户添加ROOT权限 如果,在修改/etc/sudoers 文件,你该错误了,会导致使用不了sudo命令,使用vim也打不开该文件了;如下提示:   解决方式 :执行下面的命令 三、为非ROOT用户添加DOCKER执行权限 方式一:创建docker组   方式二:直接修改  

    2024年02月11日
    浏览(54)
  • Linux 权限设置 用户只能访问指定目录

    Linux每个文件和文件夹都有其用户和用户组,用户和用户组默认是创建者,一般情况下都是root。 命令 ls -al可查看,第一列是权限,第三列是用户,第四列是用户组。 主要思路是设置目录的权限为其他用户不可访问,只有设置指定的用户可访问。 将权限设置其他用户和其他组

    2024年02月09日
    浏览(56)
  • Linux:给普通用户设置sudo权限

    1、修改配置文件 sudo 的英文全称是 super user do,即以超级用户(root 用户)的方式执行命令。用户是否拥有sudo命令的执行权限,要看是否在于 /etc/sudoers 文件进行了设置。 /etc/sudoers 是一个文本文件,有其特定的语法,不要直接用 vim 或者 vi 来进行编辑,而是采用 visudo 命令。

    2024年02月14日
    浏览(39)
  • android 12版本文件操作需要的权限,需要跳转设置页面,提醒用户手动设置

    安卓12版本的,API31,在对文件file操作时,除了申请 这个是在API30以上都需要的,否则就会报找不到文件的错误  跳转设置项,用户手动打开当前APP的文件操作权限

    2024年02月12日
    浏览(58)
  • 如何在Linux系统上设置和管理用户和权限?

    在Linux系统上,用户和权限的管理是非常重要的,特别是在多用户环境下。下面是一些基本的用户和权限管理任务: 1. 创建新用户:可以使用useradd命令来创建新用户。例如,输入sudo useradd username命令即可创建一个名为username的新用户。 2. 设置用户密码:可以使用passwd命令来为

    2024年02月15日
    浏览(55)
  • Linux中shell外壳,用户权限,文件权限

    所属专栏:Linux学习❤️ 🚀 博主首页:初阳785❤️ 🚀 代码托管:chuyang785❤️ 🚀 感谢大家的支持,您的点赞和关注是对我最大的支持!!!❤️ 🚀 博主也会更加的努力,创作出更优质的博文!!❤️ 🚀 关注我,关注我,关注我,重要的事情说三遍!!!!!!!!

    2024年02月08日
    浏览(44)
  • 【Linux】用户和文件权限管理

    💗个人主页💗 ⭐个人专栏——Linux学习⭐ 💫点击关注🤩一起学习C语言💯💫 Linux一切皆文件,文件都是有对应的权限的,而今天我们就来了解一下Linux中的权限。 在Linux系统中,有三种不同类型的用户:root用户、系统用户和普通用户。 区分这三种用户类型的目的是为了安

    2024年01月22日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包