超级用户可以在Linux系统中做任何的事情,命令提示符是#
普通用户只能做在自己权限之内的事情,命令提示符是$
超级用户切换成普通用户,只需要su username即可;

普通用户切换成超级用户,有两种方式:
直接su,然后输入root的密码,工作目录不变

直接su-,然后输入root的密码,工作目录变为root的家目录

在Linux下超级用户可以做任何事情,而普通用户由于权限的约束只能做一部分事情,所以普通用户想要做超出自己权限的事情必须要进行提升权利,在普通用户下,任何需要进行提升权利的操作,只需在最前面添加sudo,然后输入普通用户的密码。
但是有小伙伴在用sudo的时候会出现如下提示:

这是因为,root的权限不是普通用户想用就能用的,必须要得到root的信任,而想得到信任,就必须将普通用户的名字加入到/etc/sudoers这个文件夹下,看下面的解决方案
vim /etc/sudoers
然后找到
找到root这一行拷贝一份,将root改为自己的名字,就如同上面我拷贝了一份将名字改成了wyn,这时保存退出即可完成信任。
注意退出的时候,可能有权限的限制,所以我们先w!强制保存,再q!强制退出即可。
那么到这里有一个问题,就是,普通用户想用超级用户的时候输入的竟然是普通用户的密码,这不是很违背常理吗?
其实并不是,因为上面的过程中也暗中提示了一些信息,就是我们在未信任的时候使用sudo,输入密码不成功,但是在信任之后sudo,输入密码就可以成功。所以这里输入普通用户的密码并不是为了获得root的权限,真正能够获得root的权限的操作是我们将普通用户的名字添加到了root的信任名单里。而输入密码这一操作仅仅只是为了给我们一个最低的执行障碍。毕竟自己的密码自己最清楚,总不能将root的密码告诉普通用户吧?
我们使用ll指令可以列出目录、文件的全部属性

这里我们只看红框里的内容
权限并不能单单是对于人或者文件来说的,真正的权限应该是一件事情是否允许被谁做
所以,文件属性才会出现上面两个方框的内容
先来解释方框的内容:
rwx分别表示,read、write、excute,-表示无属性,前面分别列了三列;但后面才列出了两列用户名。
文件在Linux中会属于三种人,第一种是拥有者,第二种是所属组,第三种是其它人。很显然一个人既不是拥有者也不是所属组那么他就是其它人,所以这里文件属性才只列两列用户名。
而三列rwx分别对应这三种人。
所属组的出现解决了一个文件可以被一群人rwx,因为如果没有所属组的话,拥有者想让别人rwx那么就只能给其它人放开权限,但是给其它人放开权限的同时,这个文件就变得极其危险,所以出现了所属组,我们可以放开所属组的权限,然后给想看的人所属组的身份。
使用chmod命令
格式:
chomd [角色][-/+][权限] [文件/目录名]
拥有者的符号为u,所属组的符号为g,其它人的符号为o,a可以表示这三种角色
这是默认创建的文件权限

比如我们想给myfile的拥有者去掉r和w权限

比如我们想给myfile的三种角色全加上x权限

是否给这个文件赋予这个属性,就好比给这个属性一个1,而不给这个属性,就给一个0
所以rwx是否拥有权限就代表这三个位置是1还是0,比如rwx就是111,r-x就是101,这三个二进制数字加起来范围为0-7,假设这个文件的三种角色全具有rwx,则用数字表示就是111 111 111,而如果我们想给这个文件用八进制法加权限,则可以777

假设我们想给拥有者去掉r,给所属组去掉w,给其它人去掉x,数字表示011 101 110,八进制表示为356

当然了还可以用加减法,想给所有角色都去掉w的话,可以-222

chown改变文件的拥有者,chgrp改变文件的所属组
格式:
chown username filename
chgrp username filename
更改所属人的权限,只有root和拥有者才可以,其它人必须要添加root

一个文件的名字并不是存储在文件的内容里的,而是存储在文件所在目录里,所以即使拥有文件的w权限也不能改变文件的名字!
所以说一个目录的权限就是对其文件列表的权限。
当一个目录只有x权限时

可以看到,可以进入目录,但是看不到目录里面的文件,也不能往目录里写入文件。
当一个目录只有rx权限时

此时,仅仅可以看到目录里的文件,但是还是不能删除文件和写入文件
只有给目录加上rwx权限时

这时才能够对目录里的文件进行任意的操作。
而这时我们把x权限去掉

这时rw的权限没有任何意义,根本操作不了。
目录的r权限决定是否可以读取文件列表,w权限决定是否可以更改文件,x权限决定该目录是否可以成为工作目录。所以x权限是rw权限的基础。

为什么我们目录创建的时候默认权限是775,文件默认权限是664呢?
我们创建目录的一般目的就是为了能够进入目录然后对文件进行操作,所以作为目录的创建者,前两列的权限是rwx自然是应该的,而第三列则限制了别人不能够对目录里的内容做任何修改,但是可以访问目录。所以是775
我们创建文件的一般目的就是为了能够对文件进行写入和阅读,至于x权限,一般文件即使有也没有任何意义,当然也不能让其它人拥有w权限。所以是664
但其实Linux中规定了目录创建的默认权限为777,文件创建的默认权限为666,这时又出现了一个掩码umask,值为002。
将默认权限“减去”掩码值,就得到了775和664。
但这里其实并不是减去,而是777&(~umask)得到的775,664&(~umask)得到的664。
umask的意义是:在umask中出现的权限要在文件的默认权限中去掉,这也意味着并不能是简单的做减法。
举个例子:

规定文件的默认权限为666,在umask002的作用下变为了664,这没问题。但是umask改为了111,文件的权限此时应该在umask的作用下变为555,也就是r-xr-xr-x,但此时文件的权限确是666,rw-rw-rw-,没有发生变化!!!
如果用减法来解释的话,是完全说不过去的。因为实际的算法也不是减法,而是取反后的umask去&了666。
来算一下过程:
111->001 001 001
~111 ->110 110 110
666->110 110 110
~111&666->110 110 110
那么其实umask真正应该怎么解释呢?
凡是在umask中出现的权限,是应该在默认权限中去掉的!!!
来解释一下这句话:在umask中出现的权限也就是1,我们先取反得到0,然后去&,就能够在默认权限中去掉。
假设我们在同一目录下进行工作时,这时目录的权限一般都是全开的rwx,不然的话无法在同一目录下工作,但此时就会出现一个,由于该目录的权限全开,所以里面的文件就能够被任意人删除。这一点也不合理,所以为了防止别人删除不属于自己的代码,就给了目录一个额外的权限t,使得用户能够在目录中进行各种操作,但就是不能够删除不属于自己的文件。而这个权限就称为粘滞位

目录dir此时的权限是全开的,zsw对于里面的文件是其它人,但是zsw竟然可以进行删除操作。所以为了防止该操作,现在给dir加上粘滞位

当给dir加上粘滞位后,其它人就不能够删除不属于自己的文件了。