一、用户与提权
1、root用户与普通用户
Linux下有两种用户:超级用户(root)、普通用户。
- root:可以再linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情。
- root的命令提示符是 “#” ,普通的命令提示符是“$”。
命令:su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用
su user
要从普通用户user切换到root用户则使用
su root (root可以省略)
此时系统会提示输入root用户的口令。
2、普通用户指令短暂提权
sudo whoami
当该用户被添加至 etc/sudoers 中,sudo为最近的一条指令提权至root,需要输入当前普通用户密码。
在一次密码认证过后,接下来的几分钟使用sudo提权操作,将无需再次输入密码。
为什么sudo提权需要输入当前用户的密码,而不是root密码呢?
这样做是为某些被信任的用户,提供最少的执行障碍。而不是直接将 root 的密码交给某人。
二 、文件权限
1、文件访问者的分类(人)
- u—User :文件和文件目录的所有者
- g—Group :文件和文件目录的所有者所在的组的用户
- o—Others :其它用户
权限限制的不是某个用户,而是这个用户当前所处的角色
。
2、文件类型和访问权限(事物属性)
(1)文件类型
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
(2)基本权限
r (读):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
w (写):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
x (执行):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
— :表示不具有该项权限
(3)文件权限值的进制表示
3、文件访问权限的设置
(1)设置访问权限
chmod u-r text01 #将text01的拥有者减去可读权限
chmod g+x text01 #将text01的所属组加上可执行权限
chmod o-rwx text01 #将text01的其他用户减去读、写、可执行权限
chmod u+rx,g-w,o-rwx text01 #可以组合操作权限的增减
chmod a-rwx text01 #对所有角色减去读、写、可执行权限
也可以通过八进制的表示方法
chmod 777 test01 # 此时权限将变为 rwxrwxrwxx
(2)文件所属的更改
sudo chown Opfish text01 #把text01的 拥有者 改成Opfish
sudo chgrp Opfish text01 #把text01的 所属组 改成Opfish
sudo chown Opfish:Opfish text01 #把text01的拥有者、所属组改成Opfish
递归修改目录以及目录内的文件所属
chown Opfish mytmp -R
(3)目录的起始权限及权限掩码 umask
Linux规定,目录的起始权限从777开始,普通文件的起始权限从666开始。
系统默认配置好的权限掩码为 0022,即000 010 010
凡是在umask中出现的权限,必须在起始权限中去掉,即最终权限 = 起始权限 &(~umask)。
所以,我们创建出来的目录的权限是755(rwx r-x r-x),普通文件的权限是644(rw- rw- r–)。
umask 0444 #更改umask的值,即 100 100 100
修改后创建出来的目录权限变为 333(即 -wx -wx -wx)
普通文件权限变为 222
4、目录的权限
目录的 r 权限 :能否查看目录中的文件。
目录的 w 权限 :能否在目录中创建文件和删除。
目录的 x 权限 :能否进入、执行目录中的文件
所以,目录的起始权限从777开始,是因为所有角色都需要x权限进入目录。
三、粘滞位(公共目录使用)
由上面目录的权限可以知道,就是只要用户具有目录的写权限, 该用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.
这好像不太科学啊,就如我张三创建的一个文件, 凭什么被你李四可以删掉?
因此 Linux 引入了粘滞位的概念
当一个目录被设置为 " 粘滞位 " (用chmod +t) , 则该目录下的文件只能由
- 一、root 删除
- 二、该目录的所有者删除
- 三、该文件的所有者删除
chmod +t ./mytmp # 在当前目录下的mytmp目录中加上粘滞位
加上粘滞位后,该公共目录的 other 的 x 权限变为 t,也就是该目录下other的可执行权限变为粘滞位,其他用户无权删除不属于他的文件。
权限的总结
- 目录的可执行权限是表示你可否在目录下执行命令。
- 如果目录没有 -x 权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有 -r 读权限
- 而如果目录具有 -x 权限,但没有 -r 权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读
权限 - 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档