权限:权力的限制,体现在Linux上就是超级管理员比普通用户的权力大,普通用户的权力相对而言就被限制住了ᐖ
关于白名单
怎么体现呢?首先我们要先创建一个普通用户来与超级管理员用户做比较
新建用户:用户名为name
useradd name
新建完毫无反应,然后新建密码
passwd name
确认用户创建成功
1.登录root用户,查看home目录是否有“name”成员
2.直接登录name用户
当然我们su root也是可以回到root用户的,但是这时候就需要输入密码了,而su name不用输入密码
当我们用普通用户身份时,我们的权限变小了。以前我们可以胡作非为随便创建文件夹再删除,现在不可以了
那么怎么做到呢
使用sudo命令,在我们的命令前加一个sudo
这时候你需要输入你的密码,不是root的密码,而是普通用户的密码
然后你就会悲催的发现这个普通用户太普通了,甚至不能狐假虎威地使用root的权力。所以还需要root给他权限--将name用户放到白名单里,手动给他权限
怎么放到白名单里呢?使用vim编辑器,找到白名单文件
vim /etc/sudoers
然后把root ALL=(ALL) ALL这一行复制粘贴到下一行,然后改个名字就好啦。
按esc键,输入“:wq!”强制保存退出
好了我们现在再借用root的权限创建一个文件
(顺便一提普通用户在进入白名单前看不见根目录)
其中,普通用户借root的权力这个东西,叫做指令提权
为什么用户在使用指令提权时,需要输入自己的密码?
答案是为了验证该用户是不是白名单的成员
为什么要存在白名单这种东西?一些共同使用服务器的成员,在确保他们不会攻击系统、对系统造成损害之后,就可以把他们加入白名单,可以使用sudo命令提权执行
Linux文件角色
Linux系统下一切皆文件,那么文件的所属就很重要了。
在Linux系统中,对于文件的使用角色分为三种:拥有者,所属组,other
我们分别解释
首先ll可以查看文件信息
(前面带d的是目录文件,没有d的是普通文件)
拥有者:就是文件的拥有者,上图左边的root那一行,就是文件信息中文件拥有者信息,例如上图main1.c和test1的拥有者就是root
所属组:经常应用在多人共做一个项目时,一个文件的权限可以交给一坨人,但是他们又不是管理员,这一坨人就是所属组,可以方便多人共同协作时进行更好的权限管理
other:既不是拥有者,也不是所属组
我们要把这个使用文件的角色和root账户分开
root账户,普通用户,他们是人
拥有者,所属组,other,他们是角色
文件的属性权限
文件的属性一般有三种:r(读),w(写),x(可执行权限)
权限=角色+可以使用的文件属性
拥有者:rwx
如果上面的任何一个权限被去掉了,就用“-”代替
作为文件的所属者,我们可以修改文件的权限
chmod u-r name
当我们修改所属者非自己的文件时,会看到下图的结果
修改前
修改后,可以看见前面少了r
再加上也是可以的
chmod u+r name
更改所属组的权限时输入
chmod g-r test.txt
更改other权限时输入
useradd 用户名 -g 组名
chmod o-r test.txt
想同时操作多个角色
chmod u-w,g-w test.txt
想同时操作所有人
chmod a-r test.txt
顺便一提在Linux里创建组
输入指令
groupadd 组名
添加成员
usermod -G 组名 用户名
更改密码
password 用户名
只有root或有sudo权限的用户才能创建新组
查看组信息:cat /etc/group
查看单个组信息:getent group 组名
即使你是拥有者,也是所属组,把你的拥有者权限去掉后就不能使用对应操作了,即使你是拥有者。因为Linux对用户身份识别只有一次。
文件拥有者和所属组改变
如果把文件的所属权赠与别的用户,使别的用户成为拥有者,那么在Linux系统下,应该先向那个用户打个招呼,要告知ta你要给ta一个文件。如果想免去这个打招呼的过程,就可以使用sudo,短暂的指令提权,强行给别人
给拥有者:sudo chown 用户名 test.txt 给所属组:sudo chgrp 用户名 test.txt
改变文件拥有权前:
改变后:
改变所属组前:
改变后:
想要同时更改拥有者和所属组
chown 用户名1:用户名2 文件名
只要把拥有者和所属组改了,other就也变了
二进制表示文件权限
一个文件的权限只有有和无这两个状态,可以用二进制表示,用1代表有0代表无
用二进制表示:110(rw-),111(rwx),000(---)
把它们转换成十进制就是:6,7,0
也就是说6就代表了读写两个权限,以此类推
那么我们在更改权限时也可以
chmod 000 test.txt //三种角色的所有权限都被取消 chmod 777 test.txt //三种角色的所有权限都被赋予
那么给予读写权限时,就这么写
chmod 660 test.txt //赋予拥有者和所属组文件的读写权限