1. 超级用户和普通用户
root就是超级用户,普通用户就是我们新建的用户(adduser)。root不受权限的约束,普通用户受全权限的约束。
1.1 两者的转换
1.2 提权问题
如果想暂时对一条命令进行提权,可以用sudo 命令。例如sudo whoami,对其进行提权,以超级用户执行。此时需要输入当前用户的密码。但是,目前我们用adduser新建的用户没有办法执行sudo,系统不信任我们。除非将普通用户添加到白名单。
2. 权限
2.1 权限的概念
权限:一件事情是否允许被你做。linux中权限有两个特点:(1)权限认证的是身份(权限与“人”有关);(2)权限也和事物的属性有关。
2.2 文件的权限
- 权限认证的是身份
人代表的权限身份 (角色)有拥有者、所属组和其他人。具体的用户有root和普通用户。root和普通用户既可以是拥有者、所属组,也可以是其他人。为什么会有所属组?需要组内协同,又不想让其他人看到。
- 权限也和事物的属性有关
(1)文件的类型:
-:普通文件(文本,可执行程序,库基本都是普通文件)
d:目录文件
b:块设备文件(磁盘文件)
c:字符设备文件(键盘,显示器,文件)
p:管道文件(用来进行通信的)
(2)从文件的类型看,Linux系统中文件名后缀没有直接意义。但是,不代表其他linux系统上运行的软件不需要后缀。window系统中文件名后缀可区别文件。
(3)linux中,事物的属性就是文件的属性:可读(r),可写(w),可执行(x)。rwx位置是确定的,每个位置只有是或者否,具有指定的权限。
(4)权限的修改
法1
文件的拥有者和root可以修改权限
root不受权限约束。例如,root没有读权限,依旧可以读。
法2
用比特位的1和0表示权限属性的是与否,3个比特位表示一个身份的的一个权限 ,可以用一个八进制位表示。
更改文件的拥有者和所属组
验证
(5)其他问题
问题1
为什么创建的文件和目录的默认权限是我们所见的那样?
预备知识:默认给普通文件的起始权限是666,默认给目录文件的起始权限是777。权限掩码(umask):凡是在umask中出现的权限,不会在最终的文件权限中出现。
这也是为什么我们看到的普通文件的权限是664,目录的权限是775。
权限掩码可以修改
起始权限与权限掩码不是减法关系。最终权限 = 起始权限 & (~umask),或者按定义记,凡是在umask中出现的权限,在最终权限中不出现。
问题2
对于目录,读,写,可执行意味着什么?
总结:
目录的r权限:是否允许我们查找指定目录下的文件内容。
目录的w权限:是否允许我们在当前目录下进行创建、更改、删除。
目录的x权限:是否允许用户进入对应的目录。
问题3
普通用户自己的家目录权限是700,我在我的家目录创建的文件,别人都看不到。有时,我们多个用户想进行文件数据的共享。我们所创建的共享目录不能在任何一个人的家目录下。所以在root的根目录下创建。
一个文件能否被删除,并不由文件本身决定,由这个文件的目录决定。不能去掉共享目录 的w权限。我们也同时无法创建文件!要求:任何用户在共享下都可以创建和销毁,但不想看到删除别人的文件。
可以用粘滞位:t。
此时,在nihao这个用户想删除,zn_174创建的文件,不能实现。
结论:粘滞位:给目录设置,一般是共享文件,大家可以在该目录下进行各自文件的增删查改,只允许文件拥有者或者root能删除这个文件,其他人一概不允许,是一种特殊的x权限。