《探秘Linux》No.02 Linux权限管理

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

🕺作者: 主页

我的专栏
C语言从0到1
探秘C++
数据结构从0到1
探秘Linux
菜鸟刷题集

😘欢迎关注:👍点赞🙌收藏✍️留言

🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!

Linux权限的概念

在讲述Linux权限管理之前,我们要了解什么是权限?

在生活中最常见的权限相关的例子就是给视频网站充会员,没有会员就不让看,只能试看3分钟,而且就算是会员还有铂金和白金之分,这里面体现的权限的意思就是:一件事是否允许被你做,权限认证的是你的身份(是否是会员),而且也和事物的“属性”相关(不同的属性需要不同的权限、身份)。

在Linux下有两种用户,分别是:

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

怎么切换用户?

命令:su [用户名]

举例 :
我的用户名是venus,要从root用户切换到普通用户venus,则使用 su venus。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

《探秘Linux》No.02 Linux权限管理,《探秘Linux》,linux,java,数据库,服务器,青少年编程
那么普通用户能不能使用root的权限呢?

假设我们要暂时对普通用户的一条命令进行提权

它的指令规范是:sudo command

我们假设对ls进行提权

它显示的是这样的

《探秘Linux》No.02 Linux权限管理,《探秘Linux》,linux,java,数据库,服务器,青少年编程

需要输入root的密码可以理解,毕竟要使用它的权限嘛,但是后面一行是什么意思呢?

venus 不在 sudoers 文件中。此事将被报告。

怎么理解?

这是因为我们目前的用户是adduser新建的用户,没有颁发执行sudo,系统不信任你,除非未来将普通用户添加到系统的信任白名单里面

怎么添加?(了解即可)

要授予用户执行 sudo 命令的权限,需要以具有管理员权限的用户登录,并编辑 /etc/sudoers 文件。使用以下命令打开 sudoers 文件:

sudo visudo

sudoers 文件中,找到以下行:

## Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

确保 %sudo 行处于注释符号(#)之外。如果该行已经被注释掉,将其取消注释。

另外,如果想要单独授权用户 “venus” 执行 sudo 命令,可以添加以下行到 sudoers 文件中:

venus   ALL=(ALL:ALL) ALL

请注意,在进行任何修改之前,务必小心并确保对文件进行适当的备份,以避免不必要的问题。

编辑完成后,保存并关闭文件。现在,用户 “venus” 应该能够使用 sudo 命令并输入其密码来执行特权操作。

Linux权限管理

文件访问者的分类

  • 文件和文件目录的所有者:u–>user
  • 文件和文件目录的所有者所在的组的用户:g—Group
  • 其它用户:o—Others

这里有一个问题:

拥有着(user)、所属组(group)、其他人(others)和前面所说的 root 、普通用户之间的关系是什么?

如下图:
《探秘Linux》No.02 Linux权限管理,《探秘Linux》,linux,java,数据库,服务器,青少年编程

拥有着(user)、所属组(group)、其他人(others)表示的是身份或者说角色

root 、普通用户则表示的是“人”

文件类型和访问权限(事物属性)

《探秘Linux》No.02 Linux权限管理,《探秘Linux》,linux,java,数据库,服务器,青少年编程
文件类型包括哪些?

d:文件夹
-:普通文件(文本、可执行程序、库函数等基本都属于普通文件)
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件(用来进行通信的)
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

那Linux中文件名后缀的含义是什么?

Linux系统中文件名后缀没有直接意义,当然,不代表不用,那该如何看待呢,那就要看用户需求了

在Linux系统中,文件名后缀没有直接的意义,这意味着文件的后缀名并不决定文件的类型或内容。

文件名后缀在Linux系统中通常用来表示文件的类型或格式,以便用户和应用程序能够更容易地识别和处理文件。例如,一个以.txt为后缀的文件通常被认为是文本文件,而以.jpg为后缀的文件通常是JPEG图像文件。

然而,Linux系统并不依赖于文件名后缀来确定文件的类型。事实上,文件类型是由文件的内容和元数据来确定的,而不是由文件名后缀来决定的。这种设计使得文件在更改后缀或没有后缀的情况下仍然可以正确识别和处理。

对于用户来说,文件名后缀可以作为一个视觉提示,帮助他们更方便地辨认和组织文件。此外,部分应用程序可能会使用文件名后缀来选择适当的工具或默认操作。

虽然文件名后缀在Linux系统中并非决定性因素,它主要作用在于有助于用户根据需求进行文件分类、识别和处理。

文件的基本权限有哪些?

i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限

ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

iv.“—”表示不具有该项权限

括号里面的r、w、x可以理解,那么4、2、1是什么意思?

举个例子:
假设有这么一个文件
《探秘Linux》No.02 Linux权限管理,《探秘Linux》,linux,java,数据库,服务器,青少年编程

拥有者的权限是 rw-
r对应在二进制里面的位置在100,也就是4
w对应在二进制里面的位置在010,也就是2
x对应在二进制里面的位置在001,也就是1
这也是我们下面要讲的文件权限值的表示方法

文件权限值的表示方法

字符表示方法

也就是r、w、x这种方式
《探秘Linux》No.02 Linux权限管理,《探秘Linux》,linux,java,数据库,服务器,青少年编程

8进制数值表示方法

《探秘Linux》No.02 Linux权限管理,《探秘Linux》,linux,java,数据库,服务器,青少年编程
了解了文件权限的相关表示方法以后,有个问题:
**怎么设置文件访问权限呢?**毕竟我们也会遇到要修改权限的情况,别急,接着看下去

文件访问权限的相关设置方法

1.chmod

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:

R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限

chmod命令权限值的格式

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

举个栗子

《探秘Linux》No.02 Linux权限管理,《探秘Linux》,linux,java,数据库,服务器,青少年编程
前面还讲过可以用八进制数字来表示权限,这就是第二中方法了

②三位8进制数字

举个栗子
《探秘Linux》No.02 Linux权限管理,《探秘Linux》,linux,java,数据库,服务器,青少年编程

chown

功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
常用选项:-R 递归修改文件或目录的拥有者
示例:

# chown user1 f1
# chown -R user1 filegroup1

chgrp

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

chgrp users /abc/f2

好了,前面讲了这么多,假如没有权限会有什么现象呢?—无法读、无法修改…

《探秘Linux》No.02 Linux权限管理,《探秘Linux》,linux,java,数据库,服务器,青少年编程

umask

这是我之前创建的文件
《探秘Linux》No.02 Linux权限管理,《探秘Linux》,linux,java,数据库,服务器,青少年编程
为什么它们的默认权限是我们看到的那样?

普通文件:644
目录文件:755

在回答这个问题之前有些知识你需要了解:

  1. 默认给普通文件的起始权限是666
  2. 默认给目录文件的起始权限是777

想出来的吗?

其实这里有个权限掩码的东西,你一开始看到的并不是真的

最终权限 = 起始权限 & (~umask)

先看一下我这台虚拟机上的umask等于多少

《探秘Linux》No.02 Linux权限管理,《探秘Linux》,linux,java,数据库,服务器,青少年编程

《探秘Linux》No.02 Linux权限管理,《探秘Linux》,linux,java,数据库,服务器,青少年编程
在 Linux 中,umask 的值是一个八进制数,用于设置默认的文件和目录权限。umask 的格式为 4 位数字,其中第一个数字表示特殊权限(setuid、setgid、sticky bit),而后面的三个数字分别表示所有者、所在组和其他用户的权限。

对于 umask 值 0022,第一个数字 0 意味着不设置特殊权限。特殊权限包括 setuid(s)、setgid(s)和 sticky bit(t)。如果第一个数字为 1,则表示启用 setuid,如果为 2,则表示启用 setgid,如果为 3,则表示同时启用 setuid 和 setgid。在这里,0 表示不启用任何特殊权限。

后面的三个数字 022 表示文件和目录权限的掩码。它们用于从默认的权限中屏蔽掉特定的权限位。每个数字都代表一组权限:

  • 第一个数字 0 表示所有者权限的掩码。在此示例中,它是 0,表示不屏蔽所有者权限。
  • 第二个数字 2 表示所在组权限的掩码。在此示例中,它是 2,表示屏蔽了写权限。
  • 第三个数字 2 表示其他用户权限的掩码。在此示例中,它是 2,表示屏蔽了写权限。

通过将掩码值从默认权限中屏蔽,在创建新文件或目录时,umask 值会影响所创建的文件和目录的默认权限。在这个例子中,具体的权限是:

  • 文件的默认权限为 -rw-r--r--(owner 可读写,group 和 others 只可读)。
  • 目录的默认权限为 drwxr-xr-x(owner 可读写执行,group 和 others 只可读执行)。

请注意,umask 的值可以在不同的用户环境中有所不同,并且可以通过更改 umask 值来调整默认权限。
比如
《探秘Linux》No.02 Linux权限管理,《探秘Linux》,linux,java,数据库,服务器,青少年编程
功能
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

file指令:

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

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -z 尝试去解读压缩文件的内容。
    使用 sudo分配权限
    (1)修改/etc/sudoers 文件分配文件
# chmod 740 /etc/sudoers
# vi /etc/sudoe

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

(2)使用 sudo 调用授权的命令

$ sudo –u 用户名 命令

实例:

$sudo -u root /usr/sbin/useradd u2

目录文件的权限

《探秘Linux》No.02 Linux权限管理,《探秘Linux》,linux,java,数据库,服务器,青少年编程
在这里我们可以发现:

  1. 普通用户自己的家目录的权限是700,也就是说我在我家目录下创建的文件,别人都看不到
  2. 但是有时候我们多个用户想进行文件数据的共享
    ========
    这两点就说明了我们所建立的共享文件不能在任何一个人的家目录下
  3. 一个文件是否能删除并不由文件本身决定,而由这个文件所处的目录决定,如果该目录没有w权限,它目录里面的文件无论是什么情况都没有w权限,相当于覆盖

接下来介绍一下目录文件权限的具体内容:

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

于是, 问题来了~~
换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.

这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉? 我们用下面的过程印证一下.

[root@localhost ~]# chmod 0777 /home/
[root@localhost ~]# ls /home/ -ld
drwxrwxrwx. 4 root root 35  7月 27 20:10 /home/
[root@localhost ~]# touch /home/root.c
[root@localhost ~]# ls -l /home/
总用量 4
-rw-r--r--.  1 root     root        0  7月 27 20:21 root.c
drwx------. 15 venus    venus    4096  7月 25 15:16 venus
drwx------.  4 zhangsan zhangsan   92  7月 27 20:16 zhangsan
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ rm /home/root.c
rm:是否删除有写保护的普通空文件 '/home/root.c'?y
[zhangsan@localhost ~]$ exit
注销
[root@localhost ~]# cd /home
[root@localhost home]# ll
总用量 4
drwx------. 15 venus    venus    4096  7月 25 15:16 venus
drwx------.  4 zhangsan zhangsan  113  7月 27 20:22 zhangsan

为了解决这个不科学的问题, Linux引入了粘滞位的概念.

粘滞位

[root@localhost ~]# chmod +t /home/         	# 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 4 root root 35  7月 27 20:22 /home/
[root@localhost ~]# touch /home/abc.c
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ rm /home/abc.c
rm:是否删除有写保护的普通空文件 '/home/abc.c'?y		# zhangsan不能删除别人的文件
rm: 无法删除 '/home/abc.c': 不允许的操作

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

关于权限的总结

目录的可执行权限是表示你可否在目录下执行命令。

如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这
个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)

而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读
权限,在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

题外话:如何新建用户?

在 Linux 虚拟机中创建新用户可以通过以下步骤进行:

  1. 以超级用户身份登录虚拟机,或者使用 sudo 执行以下步骤。

  2. 打开终端或命令行界面。

  3. 使用 useradd 命令创建新用户。例如,要创建一个名为 “newuser” 的用户,可以运行以下命令:

    sudo useradd newuser
    
  4. 设置新用户的密码。可以使用 passwd 命令来设置用户密码。运行以下命令并按照提示输入密码:

    sudo passwd newuser
    
  5. (可选) 如果需要为新用户创建自定义的家目录,可以运行以下命令:

    sudo mkdir /home/newuser
    sudo chown newuser:newuser /home/newuser
    
  6. 新用户已创建成功。现在可以切换到新用户账户进行测试:文章来源地址https://www.toymoban.com/news/detail-620405.html

    su - newuser
    

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

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

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

相关文章

  • 《探秘Linux》No.01 Linux常用指令

    🕺作者: 主页 我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇 码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!! 当涉及到Linux系统管理和开发,了解常见的Linux指

    2024年02月14日
    浏览(40)
  • java项目实现读写分离,项目连接Linux部署的数据库异常javax.net.ssl.SSLHandshakeException: No appropriate protocol

    1、对项目进行优化实现读写分离,项目启动时报错如下: Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) 原因:javax.net.ssl.SSLHandshakeException:没有适当的协议(协议被禁用或密码套件不合适) 2、bug解决:     注意: useSSL=f

    2024年02月04日
    浏览(52)
  • Linux权限提升—定时任务、环境变量、权限配置不当、数据库等提权

      在上篇文章中提到了Linux权限提升之前的信息收集操作,这里就不在赘述,在前言中讲上篇文章为提到的内容进行补充,至于其它内容可参考上篇文章。   Linux权限提升—内核、SUID、脏牛等提权   这里提一下,之前在设计找EXP都是使用自动化进行编译,但是就会出现

    2023年04月08日
    浏览(103)
  • 必看>>>>Linux数据库被其他服务器远程访问(修改权限、开设端口)

    目录 一:修改权限 1.1 进入Linux数据库 1.2 修改数据库的远程连接权限 1.2.1 数据库远程权限修改命令 1.2.2 数据库远程权限查看命名 1.3 给Linux机添加端口 1.4 远程数据库连接 文章中的四:Linux中mysql数据库的安装 1.2.1 数据库远程权限修改命令 grant all privileges on *.* to \\\'root\\\'@\\\'%\\\'id

    2023年04月17日
    浏览(116)
  • 【Linux操作系统】探秘Linux奥秘:日志管理的解密与实战

    🌈个人主页: Sarapines Programmer 🔥 系列专栏: 《操作系统实验室》 🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS 🪐2 日志管理的解密与实战 🌍1. 实验目的 🌍2. 实验准备 🌍3. 实验内容 🌍4. 实验心得 📝总结

    2024年02月03日
    浏览(44)
  • 【Linux操作系统】探秘Linux奥秘:文件系统的管理与使用

    🌈个人主页: Sarapines Programmer 🔥 系列专栏: 《操作系统实验室》 🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS 🪐2 文件系统的管理与使用 🌍1. 实验目的 🌍2. 实验准备 🌍3. 实验内容 🌍4. 实验心得 📝总结

    2024年02月03日
    浏览(54)
  • 【Linux操作系统】探秘Linux奥秘:进程与任务管理的解密与实战

    🌈个人主页: Sarapines Programmer 🔥 系列专栏: 《操作系统实验室》 🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS 🪐2 进程与任务管理的解密与实战 🌍1. 实验目的 🌍2. 实验准备 🌍3. 实验内容 🌍4. 实验心得 📝

    2024年02月03日
    浏览(50)
  • 【MySQL】:探秘主流关系型数据库管理系统及SQL语言

    🎥 屿小夏 : 个人主页 🔥个人专栏 : MySQL从入门到进阶 🌄 莫道桑榆晚,为霞尚满天! 在现代信息技术领域中,数据库管理系统扮演着至关重要的角色。本文将介绍数据库、数据库管理系统和SQL等概念,并深入探讨主流的关系型数据库管理系统以及关系型数据库的数据模

    2024年01月20日
    浏览(69)
  • linux系统--------------mysql数据库管理

    目录 一、SQL语句 1.1SQL语言分类 1.2查看数据库信息    1.3登录到你想登录的库 1.4查看数据库中的表信息 1.5显示数据表的结构(字段) 1.5.1数据表的结构 1.5.2常用的数据类型: 二、关系型数据库的四种语言 2.1DDL:数据定义语言,用于创建数据库对象,如库、表、索引等 2.1.1库

    2024年03月24日
    浏览(53)
  • linux高级管理——访问MYSQL数据库

    一、认识数据库系统:  MySQL数据库系统也是一个典型的C/S(客户端/服务器)架构的应用,要访问MySQL数据库需要使用专门的客户端软件。在Linux系统中,最简单、易用的MySQL客户端软件是其自带的mysql命令工具。 1.登录到MySQL服务器 经过安装后的初始化过程,MySQL 数据库的默

    2024年02月04日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包