Linux中的用户:
Linux中的root,我们刚买到云服务器,第一次登陆上,默认的就是root,root是我们Linux中的超级管理员,最大的特点就是不受权限约束。除了root,剩下的是普通用户。
用户切换
普通用户变为超级管理员:
命令:su
身份从普通用户切换为root但是当前所处路径不变
命令:su -
身份从普通用户切换为root且当前所处路径变为root的家目录
切换为root要输入root的密码
可以发现,普通用户的命令行提示符结尾是$,而超级用户的命令行提示符结尾是#
我们切换到超级用户后,ctrl + d退出会退回普通用户。
root变为普通用户:
命令:su + 用户名
不需要输入密码,直接从root变为普通用户,但是当前所处路径不变
命令:su - + 用户名
变为普通用户且当前所处路径变为用户的家目录
指令提权
命令:sudo + 操作
不变为root但是以root身份进行操作叫做指令提权
将当前用户切换到超级用户下,然后以超级用户身份执行命令,执行完成后,直接退回到当前用户。
我们sudo进行指令提权时要输入自己的密码
具体工作过程如下:
当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限
–>确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认
–>若密码输入成功,则开始执行sudo后续的命令
首次进行sudo可能不能执行,可以看链接: 如何配置sudo
文件的权限
文件相关信息
红色:文件名
黄色:文件最近一次修改的时间
蓝色:文件的大小
灰色:所属组
绿色:拥有者
拥有者:
文件是谁创建的,文件的主人
所属组:
所属组可以有很多人,所属组的存在方便了权限管理,方便多人协作,可以给所属组配置权限
other:
除了拥有者和所属组外的其他人都是other
文件的权限
第一个就是最左侧的
d:d代表目录文件
-:-代表普通文件
剩下9个
r代表具有可读权限,w代表具有写权限,x代表具有可以执行权限,-代表没有相应的权限,都是以rwx的顺序显示的
前三个:拥有者的权限
中间三个:所属组的权限
后三个:other的权限
修改文件的权限
只有拥有者和root可以修改文件的权限
命令:chmod u±rwx,g±rwx,o±rwx,a±rwx +filename
u:user
g:group
o:other
a:all
可以同时给不同的身份加减不同的权限,也可以给所有用all加减相同的权限
修改权限拥有者
命令:chown + 用户 + 文件
修改权限所属组
命令:chgrp + 用户 + 文件
修改拥有者和所属组的命令只有root可以执行,所有要进行指令提权或者切换为root账号进行改变
以进制方式修改
图中文件的权限,能读为1,不能为0,可以以二进制的形式描述权限,图中权限拥有者的权限就是110,所属组的权限时110,other的权限时001。化为8进制就是661,知道这个以后就是可以直接以8进制修改权限。
修改所有都为可读可写可执行就是chmod 777 file1
权限的体现
当三个角色不具有某种权限的时候,那么向相应地访问将被拦截,即使是拥有者,但是root除外,root不受权限的约束
Permission denied表示权限被拒绝,没有写权限就无法写入
当我们切换到另一个用户aaa,但是可以看到对ppp目录对other没有任何权限,所有在aaa尝试看ppp文件路径下的文件时也会被拒绝
下面我们对文件进行写入和读取都被拒绝,可以看到,拥有者没有权限,但是所属组有读写权限,但是ppp也是所属组啊,为什么无法读写呢?
这是因为系统只对用户进行一次身份匹配,如果发现我们时拥有者,那就匹配到拥有者,但是拥有者没有权限,就不会拒绝请求
当我们改变拥有者后,就可以读写了,因为匹配拥有者时失败,但是匹配所属组时成功
Linux的文件类型
Linux不以后缀名区分文件,但是只是Linux系统不以后缀区分,Linux里面的工具有的要求后缀,例如gcc就要求后缀为".c"
Linux以ls -l显示的第一个属性区分
-:普通文件,文本文件,可执行程序,库都叫做普通文件
d:目录文件
还要其他许多文件类型,不过不重要
修改后缀名以后,后缀名乱打,依然可以执行。
可执行权限与可执行
Linux中,对一个文件具有可执行权限不一样就能执行,相对应的文件本身也应该是一个可以执行的文件
test.c具有可执行权限,但是本身不是可执行文件,所以无法执行
目录的权限
目录的r权限:用户能否查看目录内的文件
目录的w权限:用户能否在目录下增删和修改文件
目录的x权限:用户能否进入该目录
现在使用root用户在ppp的文件夹下创建了拥有者和所属组都是root的文件,但是可以发现我们普通用户可以删除root的文件,这就是因为,我们删除文件实在ppp目录下进行的操作,我们具有写权限,所有可以删除。
所有要分清目录的权限和文件的权限,就像图中的root创建的文件,我们无法写入,因为我们没有写权限。
Linux的权限掩码
我们创建普通文件时,权限默认为0666,创建目录文件时权限默认为0777
但是创建文件时,发现不是默认的权限,目录文件是0775,普通文件是0664
不同的及其umask默认值可能是不同的,这台机器默认0002(最前面的0先不管)。Linux创建文件的时候要去掉umask里面的权限,0666和0777去掉0002后就是上面那个权限,我们通过命令把umask改为0000,发现创建的文件就是0777了,普通文件就是0666。
最终权限 = 默认权限 & (~umask)化为二进制,二进制按位与运算
粘滞位
命令:chmod +t 文件
如果想和其他Linux上的用户进行共享文件,我们要在根目录下的tmp下创建共享文件,因为此目录可以创建粘滞位,粘滞位就是,普通用户无法删除文件,其他无法创建粘滞位的文件,如果让共享者们进去,那么其他非共享的人也可以进去,因为都属于other。但是我们又不能删去读写的权限,不然我们没办法新建和删除文件了,所有就增加粘滞位,这样只有拥有者才可以删除文件,而其他人无法删除。
相当于x权限的加强版,x权限可以进去,但是把w权限打开,任何人都能删除里面的文件,t就可以限制只让拥有者删除文件。