初识Linux:第五篇
😁本篇主要介绍Linux权限的相关知识👇
1.Linux下的用户
🤔在了解权限之前,先来了解一下Linux有哪些用户呢?
Linux下的用户有两种,超级用户(root用户),普通用户(也就是你adduser的用户);
windows:
在windows下的用户是管理员用户(超级用户)和普通用户,与Linux下的差不多,但是Linux的权限要比windows高;
🤔那么超级用户和普通用户有什么区别呢?
- 权限不同,对于超级用户而言基本不受权限约束(注意并不是说root拥有所有权限,有些特殊的权限root也是不行的),对于普通用户而言是受权限的限制的;
- 命令提示符不同,超级用户(root)的是’#‘,而普通用户的是’$ ‘;
🤔那么怎么在两种用户之间切换呢?
指令:su 或者 su -或者sudo(受限制的su)
su和su -的区别:
- 对于su而言,直接切换用户,无需重新登陆,所以路径不改变(原来的切换前的路径);
- 对于su -而言,以重新登陆的方式进入,所以路径会改变登陆后的路径(新用户的家目录);
- 退出当前用户都是exit/^+d;
sudo暂时先不说,sudo可以对指令进行提权等,需要配置文件(因为系统默认不信任你),需要用到vim(暂时还不知道)😭;
su和su -指令的用户切换:
1.root->普通用户:su+用户名/su - 用户名,无需输密码;
2.普通用户->root:su/su -,需要输入root密码;
3.普通用户->普通用户,su 用户名/su - 用户名,需要输入指定的用户名密码;
从这里可以看出,root的权限还是很大的(完全不需要输密码,随意切换);
2.Linux权限管理
🤔🤔说了这么多那么什么是权限?
举个简单的例子:
我们发现我们不充vip看不了这个电影,这个就是权限;
所以简而言之,权限就是一件事情是否允许被你做,Linux下权限=人+事物属性;
🤔我们前面所说的root或者普通用户是什么?
注意:root或普通用户是人,我们知道每个人都有自己的身份(文件中主要有三种身份:拥有者,所属组,其他人),所以权限认证的逻辑就是人和身份是否匹配;
2.1文件权限管理
权限=人+事物属性
😁谈到文件,就不得不说说文件的类型和属性了👇
- 文件类型(第一个字符)
d:文件夹
-:普通文件(文本,可执行程序,库等)
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件(用来进行通信的)
c:字符设备文件(例如键盘或显示器文件)
s:套接口文件
举几个例子:
Linux系统中,文件名后缀没有直接意义(不代表不用),我们主要看文件类型;
🤔🤔怎样理解上面的这句话?
我写了一个C语言代码并编译:
如何理解不代表不用?
这里阐明一下,Linux操作系统对文件名后缀没有直接意义,但是Linux中的软件(比如gcc),会使用文件名后缀;
- 文件属性(后面的9个字符)
🤔🤔不难看出,这里有四种字符,那么这四种字符到底是什么意思呢?
先细说普通文件的文件属性,r,w,x,-的意思,后面再学习目录文件的文件属性r,w,x,-的意思;
普通文件:
r:可读;
w:可写;
x:可执行;
-:不具有该项权限;
🤔那么为什么会有这么多?
这些权限对应的是身份,Linux中文件权限的身份主要有以下三种:拥有者(u:owner),所属组(g:group),其他人(o:others);
每三个字符对应一个身份:
所以我们进行权限认证时,就是拿你的用户名和身份匹配(相当于if…else if…else…逻辑);
2.2文件权限的更改
🤔那么文件的权限可以改吗?
可以,在学习如何去改之前,需要知道文件权限值的表示方法;
-
字符表示方法
-
8进制数值表示方法
🤔为什么可以用8进制数值表示方法?
因为在Linux中每三个字符的位置是确定的,第一个位置是r/-,第二个位置是w/-,第三个位置是x/-,那么我们可以看出每个位置要么有权限,要么没权限,有权限就可以用1表示,没权限就可以用0表示,那么三个字符就可以用三个数字(0/1)组成的二进制表示,也就可以化为一个8进制数字;
🤔如何改呢?
注意:改变权限对root用户无影响,也就是说超级用户基本不受权限约束;
2.21改变文件访问权限属性
- 改变文件访问权限属性
指令:chmod [参数] 文件权限值 目标文件
可改文件属性的人:拥有者或者root用户;
常用参数:-R : 递归修改目录文件的权限;
-
用字符表示方法修改文件权限
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
例如:
-
以8进制的表示方法修改文件访问权限
例如:
2.22改变文件的身份
- 改变文件的身份
权限=人+事物属性,所以我们也是可以改身份的;
权限认证是看你当前用户和身份是否匹配,root除外;
注意:改变权限对root用户无影响;
-
改拥有者的身份
指令:chown [参数] 用户名 文件名
可更改的人:root或者sudo;
常用选项:-R :递归修改目录文件的拥有者;
例如:
因为你要给别人拥有者这个身份,你需要征得别人同意,所以我们采用强制给别人;
sudo+指令(由于sudo暂时没说)或root用户更改文件拥有者;
-
改变所属组身份
指令:chgrp [参数] 用户名 文件名
可更改的人:sudo或者root;
常用选项:-R :递归修改目录文件的所属组;
例如:
-
改变所属组和拥有者(一起变)
指令:chown [选项] 用户名:用户名 文件名
可更改的人:sudo或者root;
常见选项:-R :递归修改目录文件的拥有者和所属组;
例如:
3.三个问题
在Linux下:
- 新建文件夹默认权限=0666
- 新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值;
问题一:
🤔为什么目录文件的默认权限值是0775,为什么普通文件的默认权限值是0664?
注意:第一个0是表示8进制的意思;
权限掩码umask:凡是在umask中出现的权限,不会在最终权限中出现;
原因就是创建文件或目录的时候还要受到umask(权限掩码)的影响。假设默认权限是mask,则实际创建的出来的文件权限是: 最终权限=mask & (~umask);
也就是说,我们所创建的文件或目录需要经过上述公式的计算才是我们真正看到的;
例如:
补充:
umask指令用法:
- umask:查看当前权限掩码;
- umask 三位8进制数字:更改权限掩码;
超级用户默认掩码值为0022,普通用户默认为0002;
问题二:
🤔🤔目录文件的rwx是什么意思?
- r:可读权限,如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容;
- w:可写权限,如果目录没有可写权限, 则无法在目录中创建或更改文件, 也无法在目录中删除文件;
- x:可执行权限,如果目录没有可执行权限, 则无法cd到目录中;
- -:无权限;
也就意味者我们无法通过家目录来进行文件共享需求;
所以我们需要在根目录下建立一个共享目录,这个共享目录能够让我们互相访问文件;
于是wang一气之下给我删了,因为删文件与目录文件的w权限有关,所以它可以删😭;
问题三:
🤔🤔🤔有没有方法让他删不了我的文件?(我能共享文件,但是不让别人删)
当然root除外,因为root不受权限约束;
为了解决这个不科学的问题, Linux引入了粘滞位的概念;
粘滞位是一个特殊的可执行权限( t ),只能放在other上且只能给目录设置(因为我们主要目的就就是防止其他用户删除我们的文件);
用法:chmod o+t 文件名
例如:
注意:粘滞位是给目录的other设置的,上述的设置是给普通文件设置的,自然没用;
注意点:
那个shared是我切成root自己创建的;文章来源:https://www.toymoban.com/news/detail-454657.html
总结
本篇主要介绍了如何切换用户,以及权限的操作,如何防范我们共享文件不被其他普通用户删除等,如果喜欢本篇不妨留下一个❤️,感谢大家观看,下期见;文章来源地址https://www.toymoban.com/news/detail-454657.html
到了这里,关于初识Linux:第五篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!