【linux-Day5】Linux权限

linux用户

用户分类

linux中用户分为两类,分别是root用户和普通用户。它们分别对应超级账号和普通账号。

它们的区别是root用户权限高,可以在Linux系统下做任何事情1;普通用户权限低,且受root用户管控。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

Linux多用户之间是相互隔离的->linux允许多账号同时登录。

su:用户之间进行切换

总结su的用法:

从普通用户,切换到root用户,有以下两种方式:

  1. su - -> 输入root账户密码:从当前用户切换到root账户的根目录下
    在这里插入图片描述
  2. su -> 输入root账户密码:从当前用户切换到root账户,权限变了,路径没变。
    在这里插入图片描述

用root账户切换成普通账户:root的权限很大,不用输入密码可以任意切换。

  1. su 普通用户名:从root用户切换成普通用户。

在普通账户之间切换:

  1. su B -> 输入B的密码:从普通用户A切换到普通用户B。

exit/ctrl+d:退出当前账户/回退到上一个登录账户

exit或者xshell热键ctrl+d:退出当前账户、回退到上一个登录账户。

权限和文件

在Linux中,所有的文件其实只安装了一份,所有账户共同使用。但是能否操作一个文件,由每个用户拥有的权限决定。

sudo:暂时提高用户对指令操作的权限

如果在普通账户下,不想切换到root账户,只想拥有root账户的权限—>可以通过sudo指令实现,sudo:用来进行指令的短暂提权

总结sudo的用法:

  1. sudo 命令1 —> 输入当前账户的密码:在当前账户下以root身份执行命令1。
    在这里插入图片描述
  2. sudo -i :从当前用户切换到root账户的根目录下
    在这里插入图片描述

操作后,
发现报错信息:huabing is not in the sudoers file. This incident will be reported.

分析报错原因:
这是因为使用sudo命令还有一个前提,linux系统中有一份类似于白名单的文件sudoers,在sudoers文件中记录着一份 允许暂时获得root账户权限的普通账户名单。sudoers文件的操作权限只有root账户。

总结解决办法:
如果普通账户A想要通过sudo命令获得root权限,需要先让root用户在sudoers名单中添加账户A。
在Ubuntu系统中,ubuntu虽然是系统默认普通用户,但是ubuntu是在sudoers文件的白名单中的。

sudo的功能是暂时提高用户操作的权限,其实sudoers白名单正是暂时的体现。

Linux权限=身份+目标文件属性

权限:规定用户能或不能做什么事情。

权限可以控制用户的行为,防止错误的发生。

权限限制的是 账户的身份。
对于操作一份文件来说,所有的用户都必须确认两层身份,一是,该账户是root账户还是普通账户,二是,该账户是这份文件的拥有者,所属组,还是other。通过这两层身份限制每个账户对文件进行某个具体操作。

哪个账户创建了文件,该账户就是文件的拥有者;
拥有者把自己的权限给A账户,A账户就是文件的所属组,所属组也叫拥有者同组。
一个账户既不是文件的拥有者,也不是文件的所属者,该账户就是文件的other。

在文件属性中查看文件的拥有者和所属组:
在这里插入图片描述

Linux下一切皆文件,获取权限的目的是操作文件,操作文件无非三种情况:读、写、执行。所以,第一,目标文件必须支持读/写/被执行的属性,第二,用户有对文件进行读/写/执行的权限。 具备以上两点,有对应权限的用户才能对目标文件成功进行读/写/执行操作。
可执行权限 != 可执行。

所以Linux权限=身份+目标文件属性

对于一份文件来说,用户的两层身份决定该用户有没有操作它的权限,目标文件有无对应属性决定权限是否有效。

文件的权限表示

  1. 对文件的操作就三点:读、写、执行。在Linux中,r表示读,w表示写,x表示执行。

  2. ll指令获取到文件的详细信息后,每个信息对应的属性如下:
    在这里插入图片描述

    • 文件类型:

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

    • 文件类型后紧跟着的九位是文件的权限值。
      在这里插入图片描述
      前三位代表拥有者的权限,中间三位代表所属组的权限,后三位代表other的权限
      在前三位中,第一位只有两种情况—>r或----->分别表示允许拥有者读该文件或不许拥有者读该文件;
      第二位也只有两种情况—>w或-–>分别表示允许拥有者写该文件或不许拥有者写该文件;
      第三位也只有两种情况—>x或-—>分别表示允许拥有者执行该文件或不许拥有者执行该文件;
      中间三位代表所属组的权限,同理;后三位代表other的权限,同理。

      • 例如,描述文件text.txt的权限信息:
        在这里插入图片描述
        text.txt的拥有者是root,root能对text.txt进行读、写操作,不能执行;text.txt的所属组是ubuntu,ubuntu只能进行读文件内容;非root账户也只能对text.txt文件进行读操作。
  3. 除了通过组合r、w、x、-四个字符表示文件的权限值,权限信息还可以用八进制和二进制表示。

    • 用二进制表示权限:
      也是三位数,第一位代表读,第二位代表写,第三位代表执行,每个位数上只有1和0两个选择,是1表示可读/可写/可执行,是0表示不可读/不可写/不可执行。

    • 把二进制转化成八进制---->八进制数也能表示权限值。

    • 总结:文件权限的三种表示方法
      在这里插入图片描述
      例如:在这里插入图片描述
      text.txt的权限信息可以表示为:rw- r-- r--或者110 100 100或者6 4 4

修改文件的权限

  1. 只有文件的拥有者和root才可以改变文件的权限。
  2. 修改权限----->
    • 设置文件的拥有者、所属者;
    • 设置拥有者、所属组、other对文件的操作权限。
  3. 用户A要访问文件a,系统会先确认,用户A是不是拥有者,是,根据拥有者的权限再访问文件a;不是,继续确认用户A是不是所属组,是,根据所属组的权限访问文件a;不是,继续确认用户A是不是other,是,根据other的权限访问文件a。
  4. 用户没有权限,系统会直接拒绝用户访问。

chmod:设置文件的读/写/执行权限

chmod是拥有者权限、root权限。

总结chmod的用法:

  1. chmod 设置符号权限值 文件1:修改文件1的操作权限。
    设置符号权限值:
    u/g/o/a/:拥有者/所属组(拥有者同组)/其他用户/所有用户。
    +/-/=:增加/取消/赋予指定用户权限。
    r/w/x:权限值。
    例如:
    chmod o+wr text.txt:
    在这里插入图片描述chmod o+wr,g-r text.txt:这样也行。

  2. chmod 设置八进制权限值 文件1:修改文件1的操作权限
    例如:chmod 777 文件1:设置所有账户都能对文件1进行读、写、执行。
    在这里插入图片描述

chown:修改文件的拥有者、所属组

修改文件的拥有者和所属组—>需要先切换到root用户然后再改或者先获取root的权限然后再改

总结chown的用法:

  1. chown 账户A 文件1:把文件1的拥有者更改为账户A。
    在这里插入图片描述

  2. chown 账户A:账户B 文件1:把文件1的拥有者和所属组分别更改为账户A,账户B。
    在这里插入图片描述

chgrp:修改文件的所属组

只有root权限能使用这个命令。

总结chgrp的用法:
chgrp 账户A 文件1:把文件1的所属者更改为账户A。
在这里插入图片描述

权限和目录

对于目录来说,
r表示用户可以用ls等指令查看目录中的内容。
w表示用户可以在目录中创建、删除文件。
x表示用户可以进入该目录。

如果用户对目录没有x权限,即使有rw权限,也没用。
如果用户对目录有x权限,但是没有r权限,即使能执行ls指令,但是没结果。

只有上面这点和文件不一样,其他没有区别。

Linux用户之间是互相“隔离”的

Linux用户之间是如何实现互相“隔离”的?
每次创建一个新用户A,Linux系统会默认在/home路径下创建一个A命名的目录,此时,/home/A就是A用户的家目录。家目录不会对other身份的用户开放rwx权限,即使对所属组开放了一定权限,但所属组默认和拥有者一致。
在这里插入图片描述

所以:除root外的任何用户,无法进入其他用户的家目录---->Linux用户之间实现了互相“隔离”。

chmod +t:粘滞位

假设:
目录A里存储了文件B,

  • 文件B的拥有者是用户b,
  • 目录A的拥有者是其他用户---->目录A的拥有者允许:用户a和用户b都能进入目录A(x),并对其中的文件进行删除操作(w)。

此时,用户b设置用户a不能对文件B进行任何操作。

这时候会出现一种情况:用户a虽然不能读/写/执行文件B,但是它能直接删除文件B。

在Linux系统中,一个文件能否被删除,与文件本身无关,与文件所处的目录权限有关

  1. 如果你不想让别人读/写/执行/删除你的文件,最重要的操作是要把文件放到你的目录底下且该目录不对外开放x权限。
    Linux对每个用户的家目录就是这样做的。其他用户对家目录没有x权限,都进不来家目录,更别提其他操作。
    在这里插入图片描述

  2. 如果你必须要把文件放到公共目录下供大家一起使用(大家有目录的xw权限),但是只能你和目录拥有者有删除权限,Linux系统对此也提供了其他解决办法:让root用户或目录拥有者对目录执行chmod +t命令—>即给目录设置粘滞位。

补充chmod的用法:

chmod +t 目录:该目录下的文件只能由超级管理员删除、 该目录的所有者删除 、该文件的所有者删除。

例如:
root用户创建的公共目录demo:对所有用户开放rwx权限–>所有用户可进入demo目录进行删除,创建,查看文件操作。
头插demo目录下有一个ubuntu用户创建的test.txt文件。
在这里插入图片描述
进入目录的所有人可删除test.txt文件。
demo目录的拥有者或者超级账户对demo目录执行粘滞位操作后,demo下的所有文件只能由超级管理员删除、 demo目录的所有者删除 、对应文件的所有者删除。
在这里插入图片描述
在这里插入图片描述

缺省权限

权限掩码

新建一个普通文件,起始权限是666,默认不带可执行(可执行文件带可执行);新建一个目录,起始权限是777,默认带x。

在这里插入图片描述
一波操作发现:理论和实际不符合啊。

分析原因:
实际刚创建出来的文件/目录权限等于默认权限值 & ~umask的后三位。

umask是权限掩码,它由四个八进制数构成,但参与计算的只有它的后三位。
权限掩码位于Linux系统中,有默认值,可通过指令查看或修改。

比如:新建一个普通文件,默认权限666,系统的权限掩码值是0002,此时该文件的实际权限为666&(~002)=664。

umask的作用是什么:
权限掩码也叫权限屏蔽码。它的作用是,umask的后三位中出现的权限,不希望在文件/目录的最终权限中出现。
比如:新建一个普通文件,默认权限666,系统的权限掩码值是0002,文件的实际权限是664。002代表的权限是只允许other对文件进行写操作,则实际权限中则不允许other对文件进行写操作。
通过umask可以控制文件/目录最终的操作权限。

Linux系统为什么要什么设计umsk:
新建文件/目录的默认权限是由操作系统决定的,无法在创建前进行修改。但是不同的用户对文件/目录的初始权限可能有差异,umask的存在让不同用户自己通过配置,满足自己的需要。

umask:查看或修改权限掩码

总结umask指令的用法:

  1. umask:查看权限掩码
  2. umask 三位八进制数:修改权限掩码
    用户对umask的修改是临时的。系统默认umask值存在于系统的配置文件中。


  1. root用户的权限就是没有权限!只有一点要注意:当卸载程序的时候,程序是打开状态,这个时候root账户也必须先把程序关闭再卸载。 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值