Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令: su [用户名]
功能: 切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。
从root用户切换到普通用户是不需要输入密码的。
sudo指令可以使普通用户短暂提升权限,执行一些需要root用户才能执行的命令。
语法为:sudo 要执行的命令
。
如果普通用户想要使用这条指令,需要先将普通用户添加到信任列表。
使用root用户用vim打开文件/etc/sudoers进行添加:
在root后面添加一个你的用户名,后面照写即可
wq保存后,在信任列表中的普通用户就可以使用su命令短暂提升权限了。
也可以等学会使用vim再来添加,可以直接切换到roor用户进行相关操作。
文件和文件目录的所有者:u—User(文件拥有者)
文件和文件目录的所有者所在的组的用户:g—Group(文件所属组)
其它用户:o—Others
一般情况下,用户新建一个文件,文件的拥有者和所属组默认是这个用户自己。
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
连接数对于目录文件,表示它的第一级子目录的个数。每个目录的默认连接数是2,因为每个目录下都有两个隐藏目录.和…分别表示当前目录和上一级目录,父目录里创建一个子目录,父目录的连接数增加1。
对于其他文件,表示指向它的链接文件的个数。
在Linux系统中,文件由元数据和数据块组成。 数据块就是多个连续性的扇区(sector),扇区是文件存储的最小单位(每个512字节)。 块(block)的大小,最常见的是4KB,也就是连续8个sector组成,存储文件数据和目录数据。
所以,“total”的值,是指该目录下所有文件及其子目录所占用块数的总和。
字符表示方法 | 说明 | 八进制表示方法 | 二进制 |
---|---|---|---|
r- - | 只读 | 4 | 100 |
-w- | 仅可写 | 2 | 010 |
- -x | 仅可指向 | 1 | 001 |
rw- | 可读可写 | 6 | 110 |
r-x | 可读可执行 | 5 | 101 |
-wx | 可写可执行 | 3 | 011 |
rwx | 可读可写可执行 | 7 | 111 |
- - - | 无权限 | 0 | 000 |
功能: 设置文件的访问权限
格式: chmod [参数] 权限 文件名
常用选项:
说明: 只有文件的拥有者和root才可以改变文件的权限
chmod命令修改权限的两种方式
用户符号:
如果要同时设置不同类用户的访问权限,则用户和用户之间要用逗号隔开。
2. 三位8进制数字
第一个8进制数字代表修改拥有者的权限,第二个代表所属组的,第三个代表其他用户的权限。
例如:
功能: 修改文件的拥有者
格式: chown [参数] 用户名 文件名
常用选项:
注意:
修改文件的拥有者需要root用户进行操作,若是普通用户则需要sudo进行权限提升。使用chown指令同时修改文件的拥有者和所属组,将拥有者和所属组的用户名用冒号隔开即可。
功能: 修改文件或目录的所属组
格式: chgrp [参数] 用户组名 文件名
常用选项:
功能说明: 辨识文件类型。
语法: file [选项] 文件或目录…
常用选项:
目录的可读可写可执行代表的含义与文件是不同的:
读权限(r)表示具有读取目录结构列表的权限,可以看到目录中有哪些文件和子目录。一旦对目录拥有读权限,就可以在此目录下执行 ls 命令,查看目录中的内容。
写权限(w)对于目录来说,w 权限是最高权限。对目录拥有 w 权限,表示可以对目录做以下操作:
执行权限(x)目录是不能直接运行的,对目录赋予 x 权限,代表用户可以进入目录,也就是说,赋予 x 权限的用户或群组可以使用 cd 命令。
无论是r还是w,都得先进入目录,所以如果没有x权限,rw会报错:
一个用户拥有某目录的可写权限,就可以删除该目录当中的文件
而不论这个用户是否有这个文件的写权限.
这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉?
如果目录本身对other具有w权限,other可以删掉任何的目录下的文件
如果目录本身对other没有w权限, other不可以删掉任何文件
粘滞位解决了这个不合理的问题:
语法: chmod +t 目录名
功能: 给目录加上粘滞位。
加上粘滞位以后,目录的其他用户的可执行权限就由x变成了t
需求:
other可以在特定的目录下创建文件,并写入但是不想让任何人删掉自己的文件
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
每个用户创建文件时,都有一个默认属性,这个属性由文件的原始属性减去权限掩码而生成。
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。
功能: 查看或修改文件掩码
使用umask指令可以查看权限掩码:
超级用户默认掩码值为0022,普通用户默认为0002。
第一位代表特殊权限(suid:4、sgid:2、sbit:1),不是八进制的意思。一般将其设置为0,即系统默认。
可以看到umask后三位为002,转化成二进制位也就是000 000 010,这个1代表其他用户的可读权限,而凡事在umask中出现的权限,就要在默认权限中去掉。那是怎么减去的呢?
假设默认权限是default,则实际创建的出来的文件权限是: default & ~umask
同理可值,目录的初始创建权限为:775
权限掩码是可以被设置的,指令为 umask 权限的八进制表示
可以看到,将权限掩码设置为0777后,新创建的普通文件和目录文件就要去掉全部的权限。
权限掩码设置只在本次登录有效