目录
👩💻用户的分类
Linux下有2种用户:超级用户,普通用户。
- 超级用户:可以在Linux系统下做任何事情,不受限制
- 普通用户:在Linux下做有限的事情
- 超级用户的命令提示符是"#",普通用户的命令提示符是"$"
👩💻用户切换
Linux中所有的用户,都要有密码,无论是root还是其他,即便是多个普通用户,也都要设置密码
👩🏾💻su命令
su命令来自于英文单词“switch user”的缩写,其功能是用于切换用户身份。
管理员切换至任意用户身份而无需密码验证,而普通用户切换至任意用户身份均需密码验证
另外添加单个减号(-)参数为完全的身份变更,不保留任何之前用户的环境变量信息。su - 命令 就登录上了root用户了
👩🏾💻su -和su的区别
su命令 只是身份上的改变成root了,并不是登录
su - 命令 就登录上了root用户了
su命令和su -命令最大的本质区别就是:
- 前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;
![]()
- 后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。而用su -命令切换以后,工作目录变成root的工作目录了。
用echo $PATH命令看一下su和su -以后的环境变量有何不同。
以此类推:要从当前用户切换到其它用户也一样,应该使用su -命令。
退出直接ctrl +d
👩🏾💻sudo命令
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。
如果我们想暂时对一条指令进行提权 sudo command, sudo命令来自于英文词组“super user do”的缩写,中文译为“超级用户才能干的事”.
比如:普通用户没有安装tree指令,但是普通用户无法安装这个指令
- root用户安装指令 yum install tree
- 普通用户安装指令 sudo yum install tree
sudo就是暂时对一条指令的提权,拥有超级用户的权力
👩💻文件访问者的分类(人)
- 权限认证的是身份(人+身份)[权限和'人'有关]
例如:张三是个人,他是有校长的角色,所以身份是校长+人组成
👩🏾💻拥有者
👩🏾💻所属组
这个文件是自己设定的,所以我既是文件的拥有者,也是文件的所属组
便于理解:分成俩个小组,张三写了一段代码,张三是拥有者,另一组的李四想看看张三的代码,但是张三只设定了权限,拥有者只见,但是王五是张三同组成员也是领导,想看张三写的代码,但是张三只设定拥有者可见,所以这时候就引入了所属组的概念,将王五和张三都放进所属组可见,而李四是其他人不可见。
- 身份分成三类:拥有者,所属组,其他人
- 为什么出现用户角色:我们只想自己所在的组可见,又不想让其他人看见,所以设定了角色分配。
👩🏾💻其他人
不同于拥有者(clizyf)和所属组(clizyf)的名称都是其他人,比如zyficl用户访问拥有者和所属组,那么zyficl就是其他人。
👩💻文件类型和访问权限(事物属性)
- 权限认证的是身份(人+身份)[权限和'人'有关]
- 权限也和事物的“属性”有关
👩🏾💻文件类型
👩🏻💻后缀的作用
gcc是一款编译器,软件,不代表其他Linux系统上运行的其他软件不需要后缀。
.c文件是可执行文件,后缀不能改变,改成.txt后缀就无法编译
👩🏾💻文件权限
👩🏻💻文件权限值的表示方法
三三为一组
- 拥有者是rwx-----可读可写可执行
- 所属组是r-x------可读不可写可执行
- other r-x------可读不可写可执行
- 位置是什么含义是确定的
- 每一个位置只有是或者否,具有指定的权限
- 你是谁?(拥有者(u),所属组(g),其他人(o))
- 这个文件的拥有者所属组是谁?
- 拥有者,所属组,other各自的权限是什么?
与人有关,与权限有关,对于以上3个问题是不是更加了解。
👩🏾💻没有权限的现象
premission denied root用户拥有任何权限。
👩🏾💻权限的修改问题(一)
👩🏻💻拥有者(u)修改权限
chmod u+(r/w/x) chmod u-(r/w/x)
👩🏻💻所属组(g)修改权限
chmod g+(r/w/x) chmod g-(r/w/x)
👩🏻💻其他人(o)修改权限
👩🏻💻三种身份组合(a)修改权限
👩🏾💻权限的修改问题(二)
👩💻三身份遵循的规律
👩🏾💻chown身份更改
chown root test.txt
chown root:root test.txt (冒号前是拥有者,冒号后所属组,将拥有者和所属组都进行了更改)
👩🏾💻每个用户指定一个权限
看上面的图片,r-- rw- ---
问:拥有者只具有读的权限,但是所属组具有读写的权限,所属组也是拥有者,为什么不能进行w的权限?
答:三种(拥有者,所属组权限,other权限)遵循一个规律:在进行认证的时候,只能选择一个角色进行认证
1.用chown将拥有者改成root用户
(如果所属组和拥有者的名称一样,那么先看拥有者的权限)
2.拥有者用户改成root,所属组用户还是clizyf,然后clizyf的文件权限是可读可写,可以完成echo。
【这就是拥有者和所属组不一样,此时clizyf不再是拥有者了,那么就只能识别第二个身份-所属组,所属组的属性是可读可写】
- 拥有者和所属组相同,只能看 拥有者 的属性
- 拥有者和所属组不同,如果自己不是拥有者,就看自己是否是所属组,然后确定前面的权限
每一个用户都指定一个权限
👩💻创建文件默认权限(起始权限)
问:
默认给普通文件的起始权限是666,默认给目录文件的起始权限是777,为什么我们看到的样子不一样.....而下图目录起始权限是775,普通文件起始权限是664?
接下来我来详细解答这个疑问?
👩🏾💻权限掩码
凡是在umask中出现的权限,不会再最终的文件权限中出现
👩🏾💻解答起始权限疑问
最终权限=起始权限&(~umask) (相同1,不同0)(~按位取反)
👩🏻💻普通文件
普通文件起始权限其实是666,最后显示的是664
👩🏻💻目录文件
目录文件起始权限其实是777,最后显示的是775
👩🏾💻修改umask
普通文件系统默认666,umask是0001,665
👩💻目录文件的rwx
- r:是否允许我们查看指定目录下的文件内容
- w: 是否允许我们在当前目录下进行创建,更改,删除
- x:是否允许用户进入对应的目录
👩🏾💻共享文件
- 1.普通用户自己的家目录权限是700,我在我的家目录的文件,别人都看不到,除了root用户
- 2.有时候,我们多个用户想进行文件数据的共享
结合以上2句:我们所建立的共享文件,不能再任何一个人的家目录下(除了root)
1.我们需要通过root用户创建一个共享目录(share)
2.虽然这个目录所属组和拥有者都是root,但是在其他人中是拥有可读(r)的权限,我们将share目录弄成777的权限, 让其他人可读可写可执行,全部公开
3.在share目录中创建test.txt,这个文件创建是clizyf,所属组和拥有者都是clizyf,然后写入内容进入test.txt
4.clizyf用户将文件权限改成600,让其他人和所属组都不可见写(rw- --- ---)
5.所以其他人和所属组都是不能写读,然后zyficl用户想给这个文件删除了,虽然zyficl用户没有对这个文件有写读的权限,但是他依旧能删除。因为他对这个目录具有写读的权限。
换句话来讲, 就是只要用户具有目录的写(w)权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.
理解:share目录是允许所有人写读权限,目录中的文件只对拥有者(clizyf)具有写读的权限,但zyficl用户依旧可以删除该目录下的文件。
这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉? 我们用下面的过程印证一下.
clizyf用户具有读写权限,但是zyficl用户没有读写权限,但是也可以进行删除目录中的文件。
为了解决这个不科学的问题, Linux引入了粘滞位的概念。
👩🏾💻粘滞位
chmod o+t
粘滞位:给目录设置,一般是共享目录,大家可以进行在目录中进行各自文件的增删查改,只能文件拥有者和root能删除这个文件,其他人一概不允许,t是一种特殊的x权限
ps:Linux系统自带tmp文件就是带有粘滞位的。
熬得住就出众,熬不住就出局。