首页 > 系统相关 >Linux权限理解

Linux权限理解

时间:2023-07-07 21:32:36浏览次数:56  
标签:文件 普通用户 用户 理解 Linux 权限 root 目录

一、Linux用户的概念

1.普通用户

除root用户以外的用户都是普通用户,普通用户的权限受到制约

2.超级用户(root)

root用户也就是超级用户,不受权限的约束

二、不同用户之间的转换

1.普通用户切换root用户

指令:su

Linux权限理解_linux权限

如上图所示,普通用户 lj 的命令行提示符为 $ ,切换root用户只需要输入指令: su, 然后再输入root用户的登录密码即可

2.root用户切换普通用户

指令:su 用户名

Linux权限理解_linux权限_02

如上图所示,超级用户(root)的命令行提示符为 # ,切换普通用户lj只需要输入指令:su lj  ,就可以切换到普通用户身份

3.比较

由root和普通用户之间的切换可以看到,root用户不受权限的制约,切换普通用户时不需要输入普通用户的密码,而普通用户的权限受到制约,在切换root用户时需要输入root用户的密码,否则无法切换

三、Linux权限管理

1.文件访问者的分类

文件访问者分为如下三类

文件所属组(或者文件拥有者): owner , 实际用u表示

文件所属组用户: group ,实际用g表示

其他用户: other  , 实际用o表示

2.文件类型与访问者权限

最常见的文件类型有两种:目录文件和普通文件

文件类型

通过指令mkdir创建的文件叫目录文件,用d表示,可以用指令cd进入

通过指令touch创建的文件叫普通文件,包括纯文本文件,二进制文件,数据格式的文件,用 -  表示,不可以用指令cd进入

文件访问者权限

我们知道文件访问者有三种:文件所属组(或者文件拥有者),文件所属组,其他用户,每一种访问者的权限都包括读权限,写权限,执行权限

举例说明:

指令ll等价于ls -l ,用来查看当前目录下文件的详细信息,下图是用指令mkdir和touch分别创建的exp和work两个文件,我们来分析一下exp和work前的信息都代表什么

Linux权限理解_可执行_03

解析如下图:

Linux权限理解_可执行_04

如果文件类型是普通文件,则第一个字符是- ,第11个字符表示的是文件具有的硬链接数

关于权限:

读权限:r表示可读

写权限:w表示可写

执行权限:x表示可执行

-:表示不具有该权限

3.文件权限的表示方法

1.字符表示法

r-- 表示只读;-w- 表示只写;--x 表示只可执行

rw-表示可读可写;r-x表示可读可执行;-wx表示可写可执行

rwx表示可读可写可执行;---表示无权限

2.八进制表示法

所属者,所属组用户,其他用户,每个文件访问者都有三个字符表示对应的读写执行权限,一个八进制数字可以表示一个三个二进制位的二进制数,每个二进制位上可以用1和0表示是否具有该权限(1表示有,0表示没有)

只读用八进制可以表示为400(8进制数字),4表示的是所属者的权限,用二进制表示就是100,0,0分别表示所属组用户和其他用户的权限

可读可写可执行用八进制可以表示为777(8进制数字),7用二进制表示是111,读写执行权限都具有

4.文件访问权限的更改

前情提要:只有root用户和文件的所属者(或者拥有者)可以更改文件访问权限

更改方法:

chmod 参数 +/- 权限 文件名

参数:

u  ,表示所属者用户

g ,表示所属组用户

o ,表示其他用户

a ,表示所有用户

+和-的含义:+表示添加权限,-表示去掉权限

权限:可以用字符表示或者八进制数字表示

举例说明:

1.通过字符修改权限:

Linux权限理解_可执行_05

目录文件exp原本的访问权限为所属者(拥有者):rwx,所属组:rwx,其他用户:r-x,上图通过指令分别对所属者,所属组和其他用户的权限进行了更改

2.通过三位八进制数修改权限

Linux权限理解_root用户_06

三位八进制数分别代表所属者,所属组和其他用户的权限

5.修改文件的拥有者

语句:chown 用户名 文件名

6.修改文件的所属组

语句:chgrp 用户名 文件名

7.目录文件的权限说明

1.读权限:如果没有读权限,可以用cd指令进入该目录,但看不到目录里的信息,也即没有读权限就不能查看目录里的文件信息

举例说明:

Linux权限理解_root用户_07

在exp目录文件下创建了三个子目录文件,并修改了所属者的权限为不可读,指令cd进入exp目录里,却不能用指令ll查看目录里的文件信息

2.写权限:如果没有写权限,可以用cd指令进入该目录,但不能对目录里的文件进行创建和删除

举例说明:

Linux权限理解_linux权限_08

修改了目录文件exp的权限为不可读,cd 指令可以进入该目录文件,但不能对文件进行删除和创建

3.执行权限:如果没有执行权限,则无法使用cd指令进入该目录

Linux权限理解_共享目录的创建_09

修改目录文件exp的权限为不可执行后,无法使用cd指令进入该目录文件

8.文件权限的小问题

1.在进行认证的时候,只能选择一个身份进行认证

对于一个目录文件,如果用户既是文件的拥有者,也是文件的所属组,拥有者权限没有读权限,所属组权限有读权限,那么该用户是否具有读权限的功能呢?

答案是:不具有。当该用户是拥有者时,对于该文件来说,在对该文件进行操作时时,会直接查看拥有者对应的权限,而不管所属组对应的权限,也就是说一个用户只能有一个身份

举例说明:

Linux权限理解_共享目录的创建_10

可以看到,目录文件exp的拥有者和所属组都是用户lj,所属组对应的权限具有可执行权限,但是拥有者对应的权限没有可执行权限,所有无法使用cd指令进入exp。也就是说,文件访问者有三种,但是用户只能是其中一种。

9.文件的最终显示权限

1.默认权限

目录文件的默认权限是777,普通文件的默认权限是666

2.权限掩码

查看指令:umask

Linux权限理解_共享目录的创建_11

默认权限掩码为0002,第一位的0我们可以忽略,或者将他看作是在表示后面的数字为八进制,接下来的002才是真正的权限掩码(8进制)

作用:可以通过修改权限掩码改变文件的最终权限

更改权限掩码:umask 新的权限掩码

Linux权限理解_共享目录的创建_12

3.文件最终显示权限

文件最终显示权限就是我们通过指令 ll 看到的

如下图:

Linux权限理解_linux权限_13

目录文件test1的最终显示权限为:rwxrwxr-x 转换为八进制是:775

普通文件test2的最终显示权限为:rw-rw-r-- 转换为八进制是:664

最终权限=文件默认权限&(~权限掩码)

也即最终权限等于文件默认权限和权限掩码取反后按位与,权限掩码在进行取反和按位与操作时,不看第一位,只操作第2到4位

四、多用户文件数据共享

多个普通用户如何实现文件数据共享呢?例如普通用户张三创建了一个文件,普通用户李四可以看到吗?

1.普通用户与目录文件权限的联系

linux下,万物皆文件,在路径/home 下有linux 普通用户对应的目录文件,也就是说,每创建一个普通用户,就会在路径/home下生成一个对应的目录文件

如下图,在家目录下存在两个普通用户,分别是lj和myq,可以看到这两个用户文件对应的拥有者和所属组都是用户本身,而所属组和其他用户对应的文件访问权限都是000,也就是说,普通用户李四没有访问普通用户李四的权限,而张三创建的文件都是在张三这个目录文件下,可李四连张三这个文件都进不去,更不可能看到张三创建的文件

Linux权限理解_普通用户_14

2.如何实现多用户文件数据共享

要想做到多用户文件数据共享,肯定不能把文件放到某个普通用户的家目录下,因为不同普通用户之间无法访问的文件

那究竟该如何做呢?

如下图

Linux权限理解_普通用户_15

在root用户的根目录下,创建了一个目录文件shared,使用chmod 777 更改权限,使得除root用户以外的其他用户拥有对该文件的可读可写可执行权限,

那么其他普通用户就可以在shared下共享文件数据,说明如下图

Linux权限理解_linux权限_16

普通用户lj 进入根目录下,发现确实存在root用户创建的shared文件,进入目录后创建普通文件test,并写入"hello how are you",可以看到普通文件test对应其他用户的权限只有可读,也就是说,其他用户拥有访问该文件内容的权限

Linux权限理解_linux权限_17

在普通用户myq的根目录下,也看到了root用户创建的shared文件,进入其中后也看到了普通用户lj创建的普通文件test,用cat语句也确实可以打印该文件的内容

Linux权限理解_普通用户_18

我们可以看到,普通用户myq对于普通用户lj创建的普通文件test,只具有读权限,因此用户myq向test追加信息时失败了

至此,多人文件共享的问题是不是就这样解决了呢?

并不是,这种多人共享文件数据的方法有极不合理的一点,那就是,一个用户可以删除另一个用户创建的文件,即使该用户没有对该文件的任何权限,说明如下:

Linux权限理解_linux权限_19

Linux权限理解_linux权限_20

我们更改了普通用户lj创建的普通文件test的权限,使得其他用户对该文件不具有任何权限,在普通用户myq这里,确实连读取文件的能力都没有,但是在删除该文件的时候确发现,可以删除,即使myq没有对普通文件test的任何权限,在实际的多人文件数据共享中,这一点无疑是及其不合理的

那么为什么可以删除呢?test是在根目录下目录文件shared下的一个普通文件,而shared对应的其他用户权限为7,所以其他用户可以在shared目录下进行文件的创建和删除。

也就是说能否删除一个文件,并不由该文件决定,而是由该文件所处的目录决定

3.改进方法

为了解决在共享目录下不同用户可以任意删除对方所创建的文件的问题,我们最容易想到的是,可以利用root用户去除其他用户对共享目录shared的写权限,但是,一旦去掉了写权限,其他用户就无法在该目录下创建和删除文件,也就无法实现文件数据的共享

真正的解决方法:粘滞位

在root用户下,对共享目录文件shared的权限做出如下修改:

Linux权限理解_可执行_21

o就代表其他用户,t就表示粘滞位,+表示增加权限

可以看到输入指令后,shared文件对应其他用户的权限变为了rwt,t代替了原本的x,其实t本身也有可执行的意思,不过相比可执行权限,它增加了一个限制,那就是在拥有粘滞位权限的目录文件下,不同用户彼此之间无法删除对方所写的文件,验证如下:

Linux权限理解_linux权限_22

Linux权限理解_普通用户_23

跟目录下的共享目录文件shared增加了粘滞位后,普通用户lj在shared目录下创建了文件test1,当普通用户myq想要删除该文件的时候,却提示无法删除

至此,多人文件数据共享得以正确实现

须知:粘滞位只能对目录文件进行添加,粘滞位是一种特殊的x权限,粘滞位一般作用于共享目录,设置了粘滞位后,在共享目录下,除文件的拥有者和root外,其他用户都不能对文件进行删除

实际上,在每个用户的根目录下,都存在一个带粘滞位,并且权限全部打开的目录文件 tem,tem就是默认建立的一个共享文件,作用和我们创建并增加粘滞位的共享目录shared相同

五、root须知

在linux下,root是几乎是万能的,root用户没有权限限制,任何对root用户 的权限限制都无效,root用户可以做到自己想做的几乎所有事





标签:文件,普通用户,用户,理解,Linux,权限,root,目录
From: https://blog.51cto.com/u_15466618/6656340

相关文章

  • Linux中Postfix反病毒和垃圾邮件(十)
    摘自:http://www.ywnds.com/?p=1817 amavisd-newamavisd-new呼叫器是一个连接MTA和内容检测工具(诸如病毒扫描工具和SpamAssassin)的高性能接口程序,使用perl语言写成。它一般通过SMTP、ESMTP或者LMTP和MTA进行通讯,可以将位于队列的邮件取出来,调用ClamAV对邮件进行病毒扫描,调用Sp......
  • Linux中Postfix邮件认证配置(五)
    摘自:http://www.ywnds.com/?p=1784Postfix+Dovecot+Sasl工作原理1.A用户使用MUA客户端借助smtp协议登陆smtpd服务器,需要先进行用户和密码认证,而SMTPD服务器端支持sasl认证,例如有一个sasl客户端,就会去连接SASL。当SASL接受到验证请求时就会根据验证方式去进行验证,常用的有PAM,pass......
  • Linux中Postfix虚拟用户及虚拟域(六)
    摘自:http://www.ywnds.com/?p=1797 Postfix基于虚拟用户虚拟域的邮件架构 上图是一个几乎完整的邮件系统架构图,这里基于Mysql数据库进行用户认证,不管是Postfix、Dovecot、webmail都需要去Mysql数据库中进行用户认证。1、用户可以基于outlook连接postfix然后通过Courier-au......
  • CygWin:windows上运行类linux命令
    CygWin是一个在Windows平台上运行的类UNIX模拟环境,是CygnusSolutions公司开发的自由软件。它提供了类似于Linux系统的终端环境和工具,使用户可以在Windows平台上运行Unix-like的程序,如Bash、awk、sed和grep等。下载setup.exe安装Cygwin,您需要下载setup.exe,此程序根据您选择的软......
  • Linux中Postfix邮件安装配置(二)
    摘自:http://www.ywnds.com/?p=1764Postfix安装配置本套邮件系统的搭建,从如何发邮件到收邮件到认证到虚拟用户虚拟域以及反病毒和反垃圾邮件等都有详细的介绍。在搭建过程中必须的参数解释以及原理都有告诉,这样才能更好地理解邮件系统。一、卸载自带postfix 123......
  • linux环境变量配置文件
    在linux系统中有很多地方可以配置环境变量,有时候我们需要增加一个或者查找具体是谁修改了环境变量,往往找不到地方。这里列举一下有哪些文件会影响环境变量。配置文件正常情况,linux系统启动的时候会按照如下加载环境变量/etc/environment/etc/profile/etc/bash.bashrc/etc/z......
  • linux HAproxy
     HAproxy服务可以完成负载均衡,和反向代理,不仅可以完成几十万的高并发请求,而且可以完成保护真实服务器。 目录一、HAProxy概念二、HAProxy主要特性三、HAProxy负载均衡策略四、LVS、nginx和HAProxy区别五、部署HAproxy六、日志分析七、总结        ......
  • Linux | curl命令详解
    curl是一个命令行访问URL的计算机逻辑语言的工具,发出网络请求,然后得到数据并提取出,显示在标准输出“stdout”上面,可以用它来构造httprequest报文,curl(CommandLineUniformResourceLocator),即在命令行中利用URL进行数据或者文件传输。在Linux中curl是一个利用URL规则在命令行......
  • Linux修改ip
    1、打开终端;2、在终端执行“vi/etc/sysconfig/network-scripts/ifcfg-eth0”命令;3、点击i进入编辑模式,修改IPADDR、NETMASK等项的值;4、esc退出编辑模式,shift+:,输入x就保存好了;5、重启网卡:servicenetworkrestart;6、检查ip是否更新成功:ifconfig-a......
  • linux环境安装golang
    在使用pprof工具分析性能时,发现我们的环境上默认没有装go,所以执行不了gotoolpprof命令,于是自己手动装了下。步骤如下:首先下载一个对应系统架构的golang包,这里我用的是arm包,装的1.14.12版本。(见附件)。在环境上创一个个人目录,把包传上去,然后执行以下命令解压到/usr/local目录下(官......