【linux】基本权限

目录

一、Linux权限(what)

1、用户分类

2、超级用户

3、用户提权 sudo

二、Linux文件权限:人+文件属性

1、文件访问者的3类 

2、文件类型和访问权限

2.1 ll中第一列字母到底是什么意思?

2.2ll中后面九个字符什么意思??

三、文件权限值(就是后九个字符)的表示方法

1、字符表示法

2、八进制数值表示法

四、修改文件权限(how)

1、chmod修改权限

1.1chmod 指令权限值的格式

1.2三位八进制数字

 2、chown ch是change缩写 修改user的人

3、chgrp 修改所属组的人

4、umask查看或修改文件掩码

5、file查看文件类型

五、 目录的权限

面试题:如果我们要进入一个目录,需要什么权限??

六、粘(nian)滞位

根据上篇博客,我们得知俩种用户:超级用户root、普通用户

相互转换的时候,需要用到su或者su - 

如果不切换用户,就想让普通用户以root的身份,执行对应的指令,该怎么去做呢

解决方法:需要将当前用户添加到系统的文件/etc/sudoers中。这里先不展开说明。后面会做补充。我们暂时使用root,root的权限是最大的,可以随便切换到其他普通用户。也就不存在没有权限的问题了。


一、Linux权限(what)

1、用户分类

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

  • 超级用户:可以再linux系统下做任何事情,几乎不受权限的限制;

  • 普通用户:在linux下做权限范围内的事情;

  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”;

2、超级用户

Linux 切换用户的指令是:su;

在 Linux 中,如果我们要从超级用户切换到普通用户,直接 “su username” 即可,没有任何限制

但是如果我们要从普通用户切换到超级用户,就需要输入 root 密码;普通用户切换到 root 用户有两种方式:

  • su:切换到root的当前目录
  • su-:直接切换到root的根目录

注:Linux 出于安全考虑,从键盘输入的密码在终端上是不会回显的,也就是说我们输入密码时屏幕不会显示任何东西(所以密码写的时候 一定得小心)

3、用户提权 sudo


二、Linux文件权限:人+文件属性

在这里插入图片描述 

1、文件访问者的3类 

什么是权限:定义:一点事情是否允许被谁做

在 Linux 下,文件的访问者被分为三类:

  1. 所有者:文件和文件目录的所有者 – u (user);
  2. 所属组:文件和文件目录的所有者所在的组的用户 – g (group);
  3. 其他用户:除所有者和所属组用户之外的用户 – o (other);

小疑问:这个所属组出来的意义是什么捏??

解答:如果没有所属组的话 那么团队之间的代码是不可以共享的 除了你自己以外 公司的所有人都

是others 很不方便团队之间的交流

人不等于角色:人是生命 角色就是user group other 这俩组概念不冲突,是互相补充的

2、文件类型和访问权限

2.1 ll中第一列字母到底是什么意思?

那么现在 xshell 启动!!

   

 这些前面的东西到底是什么?

 

这是文件第一列的符号表示

在在inux中,是通过ll显示的众多属性列中的第一列的第一个字符来区分文件类型

注意:

Linux区分文件与文件的后缀无关,但是不代表不可以使用后缀区分文件类型,但是仅仅是给

用户看的,Linux不通过这个方法来辨别可以用  是给人看的 是给用户做一个提示符号来展示

的 后缀的本质其实就是文件的一部分

d:目录文件


-:普通文件(源代码,库文件,可执行程序,文档压缩包等等)


l:链接文件(类似Windows的快捷方式)


b:块设备文件(例如硬盘、光驱等)


p:管道文件


c:字符设备文件(例如键盘,显示器)


s:socket文件

第一波字母 叫做文件类型!!  windows的文件是在后缀 

小插曲:

 gcc test.txt 为什么就不可以过?? 不是说不管后缀吗?? 

Linux系统不管 但不代表gcc工具对文件后缀没有影响 


2.2ll中后面九个字符什么意思??

文件拥有者、所属组和其他用户的权限,其中文件的权限一共分为三类:

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


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


x – 可执行权限:execute 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限;

其中对应位置上有代表权限的字符说明该用户拥有对应权限

如果显示 - 则代表该用户没有对应权限;


三、文件权限值(就是后九个字符)的表示方法

1、字符表示法

2、八进制数值表示法

在Linx中,之后修改权限chmod得写成八进制,所以有了八进制数值表示法

这里二进制的意思就是:1代表该权限拥有,0代表该权限不存在


四、修改文件权限(how)

1、chmod修改权限

语法:chmod [-r]    u/g/o  ±  r/w/x  文件名;

功能:设置文件的访问权限;

常用选项:

  • -R 递归修改目录文件的权限

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

1.1chmod 指令权限值的格式

常用选项:

用户符号:

  • u:拥有者;
  • g:拥有者同组用户;
  • o:其它用户;
  • a:所有用户;

+/-/= 的意义:

  • +:向权限范围增加权限代号所表示的权限;
  • -:向权限范围取消权限代号所表示的权限;
  • =:向权限范围赋予权限代号所表示的权限;

showtime

1、对单个用户 ± 权限

chmod u+x file.txt
chmod u-r file.txt
chmod g-rw test.txt
hmod o+rw test.txt

2、对多个用户 ± 权限(用一个逗号隔开)

 chmod u-rwx,g-rwx test.txt
 chmod u+rw,g+rw,o-rw test.txt

3、对于所有用户

chmod a-rwx test.txt

1.2三位八进制数字

文件的权限一共三种 – 读写执行,所以用三个二进制位就可以表示全部情况,如果用八进制则只需要一位

 

show~time

 2、chown ch是change缩写 修改user的人

格式:chown [参数] 用户名 文件名;

功能:修改文件的拥有者;

常用选项:

  • -R 处理指定目录以及其子目录下的所有文件

注意:当我们使用 chown 指令将属于我们的文件赋给别人时,需要获得别人的同意,所以在一般情况下我们是不能改变文件的拥有者的;只有 root 不受权限的约束,可以直接将属于 A 的文件赋给 B,而不需要征得 A 和 B 的同意

image-20221016220150906

 yzpq就是 user thj就是所属组

3、chgrp 修改所属组的人

格式chgrp [参数] 用户组名 文件名;

功能修改文件或目录的所属组;

常用选项:

  • -R 递归修改文件或目录的所属组;

注意:和修改文件的拥有者一样,我们也不能直接修改文件的所属组,需要征得别人的同意,而 root 不受权限约束

4、umask查看或修改文件掩码

格式umask 权限值;

功能:查看或修改文件掩码;

Linux下文件的默认权限如下 – 普通文件的默认权限是0666,目录文件的默认权限是0777,其中第一位数字代表这是三位八进制数,后面三位数字分别代表拥有者、所属组和其他人对文件的权限;但是我们发现,我们平时创建的文件的权限和上面的好像并不相同:

通过计算:rw-:110是6; r-- :100是4;rwx:7 ;r-x:101是5

所以文件在现实中不是我们预料的那种方式出牌

(一会我们来讲一个面试题,为什么目录要设置成777)

这是因为创建文件或目录的时候除了受默认权限的约束之外,还要受到 umask (文件掩码) 的影响;假设默认权限是mask,则实际创建的出来的文件权限是:

                                                        mask & ~umask

&:与运算,全部为1 才为1 有0则0

不是减法 不是减法 不是减法!!!!!!!!!!

注意:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限;超级用户默认掩码值为0022,普通用户默认为0002

权限掩码的作用:权限掩码:因为不同用户的默认umask不同,文件和目录的默认分别是666和777,所以根据用户的需求屏蔽掉不希望给别人的权限,这就是权限掩码的作用

经过大佬指点,我对权限掩码有了更多的理解,以及上升到权限管理:

权限管理:权限掩码简化了权限管理的过程。通过使用权限掩码,系统管理员可以为每个文件或目录分配特定的权限集合,而不需要单独为每个用户或用户组设置权限。这样可以减少管理复杂性,提高效率。 

show~time

 修改umask值设置后,我们发现我我们的目录就是777了

5、file查看文件类型

file一个文件名 就相当于它ll前面翻译之后代表的东西


五、 目录的权限

面试题:如果我们要进入一个目录,需要什么权限??

去掉 r权限不影响进入目录!!!

去掉x权限就不可以cd mkdir!! 但也不代表能进去就可以做事情(读或者写)

w权限:就是你进来了你能不能进行操作

这也就是为什么目录必须是777开始的:因为所有的目录被创建出来,一般都要能够被进入,也就是x权限一定得在,所以如果我们要进入一个目录,就必须有可执行权限!!

注意事项:

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


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

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


六、粘(nian)滞位

公共目录:root创建,张三李四都可以操作,但可能给予他们的权限不同

不同的用户需要在一个公共的目录下进行临时文件的增删查改,这个公共目录通常由 root 用户创建,然后将目录权限修改为777

问题:

但是这里出现了一个问题:由于这个公共目录的权限是777,所以任何一个用户都可以删除此目录下的文件,无论该文件是否属于自己

我去!喵的可以互删!!!!!

为了出来上面这种不科学的情况,Linux 引入了粘滞位的概念

粘滞位是权限的一种特殊情况,它不影响不同用户在公共目录下的读写执行操作,但是它可以禁止不同用户之间互删文件;粘滞位设置的方式很简单,只需要在已有权限基础上加上 t 即可,并且添加时不用指定用户,Linux 会自动识别。

chmod +t 公共目录文件名字

注:当一个目录被设置为 “粘滞位” 以后,该目录下的文件只能由文件的所有者或者 root 删除,其余用户不能删除。 

  • 19
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小羊oi!

小小的赞 会是精神百倍的重要源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值