1. 认识Linux下用户的分类
- root: 超级用户(在windows上的以管理员身份运行,相比较下,Linux的root比windows的root权限高一点)
- 普通用户:我们新建的用户。(adduser)
root基本不受权限的约束,普通用户是受权限约束的。
Linux下所有的用户都有账号和密码,建议root和普通用户的密码不要一样,这样便于区分。
- 切换用户
su
和su -
- 将一句指令暂时进行提权(提升至root权限)
sudo
目前我们用adduser
新建的用户,没有办法执行sudo
,因为系统不信任该用户,除非未来将普通用户添加到系统的信任白名单中。
2. 什么叫做权限
即你能否做某件事。
-
权限认证的是身份、角色
-
权限也和事物的“属性”有关(比如书本不具备踢足球的属性)
文件属性:可读、可写、可执行-
第一个字母
上述两行的第一个字母是区分文件类型的:-
-:普通文件:文本、可执行程序、库
-
d:目录文件
-
b:块设备文件:磁盘文件
-
c:字符设备文件:键盘、显示器文件等
-
p:管道文件:用来进行通信的
-
l:软链接(类似Windows的快捷方式 )
-
s:套接口文件
Linux系统中文件名后缀没有直接的意义(当然不代表没有用):
在Linux系统中,文件的类型是看第一个字母的,但是别的情况不一定,比如说:一个.c文件,可以被gcc编译,但是把它后缀改成.txt文件时,就无法编译通过,原因是gcc是一款编译器(软件),Linux系统不看后缀,但是gcc要看后缀的。所以说看不看后缀,取决于软件、用户要不要看。 -
-
文件权限属性
- r:可读
- w:可写
- x:可执行
- -:对应的权限位置没有权限
上图中,每3个字母为一组看,前三个是拥有者,中间三个是所属组,最后三个是其他人。
每三个字母为一组,第一个字母的位置是读权限,第二个字母的位置是写权限,第三个字母的位置是执行权限。这三个位置的含义是固定的(读、写、执行)。 -
身份、角色
拥有者:文件由拥有者创建的
所属组:希望组内协同,但不想让其他人读写,就可将组员划入所属组
其他人:除了拥有者和所属组以外,都是其他人
在进行身份认证的时候,只能认证一个身份,比如某用户既是onwer(r–),又是grope(rw-),此时他只能读不能写,只能认证一个身份:owner。 -
但是root不受身份的约束,就算root的身份是其他人,不允许读写,它也能读写。
-
3. 见一见没有权限会有什么现象(少量实验)
Permission denied
4. 权限的修改问题
只有在root下或者提权的时候才能用下面的指令改。
-
chmod
:修改权限属性-
chmod u+w,g+w,o-rwx test.txt
-
对于一个角色,可以用3个二进制数表示权限,比如111,可读可写可执行
3个二进制可以用一个八进制数表示,所以三个角色就是三个八进制数字。
chmod 000 test.txt
全无权限
chmod 777 test.txt
全有权限
-
-
chown
:修改拥有者 -
chgrp
:修改所属组
chown AQL:AQL test.txt
一次把拥有者和所属组都改了
5. 其他问题(3个问题)
-
创建普通文件的权限是664(rw-rw-r–),目录文件的权限是775(rwxrwxr-x) ,为什么是这样呢?
权限掩码umask(002)
:凡是在umask中出现的权限,不会在最终的文件权限中出现。
Linux默认给普通文件的起始权限是666,目录文件的起始权限是777,在通过umask后,就变成了664和775。
原默认:110 110 110
umask:000 000 010
通过后:110 110 100
它的算法是:最终权限 = 起始权限&(~umask)
-
目录也是文件,它的读、写、执行是什么?
读权限:能否能读目录内的文件的内容。
写权限:能否在目录内创建、更改、删除文件。
可执行权限:是否允许用户进入对应的用户。 -
一个文件能否被删除,并不由文件本身决定,而是由它所处的位置决定
每个用户自己的家目录(如home/AQL),别的用户是不能rwx的。
在共享的目录下(非家目录),用户A写了个文件,并把权限设置成660,那么用户B就不能r/w它,但是此时用户B可以删除它。
为了避免这么情况,有一个新的权限位:粘滞位。
chmod o+t dir
此时other的可执行权限位会从-变成t(粘滞位)。
粘滞位:大家可以在此目录中进行各自的文件的增删查改,但是只允许文件拥有者和root删除这个文件,其他用户不允许删除。t是一种特殊的x权限!