权限笼统分为两种一种是人的权限,一种是文件的访问权限。而root(管理员)具有Linux最高的权限,最多只有一个。而普通用户可以有多个,要受到权限的约束。
一、切换root权限
既然root是最大的权限,那么这里就来了解一下如果切换到root用户。
su - //切换成root
这就是切换人的权限,但是大多数情况是root权限不会轻易的分给普通用户。
那么再切回普通用户。
su + [用户名]
![](https://img-blog.csdnimg.cn/6441d383dfa94e88be3921ada3ca423a.png)
root用户切换会直接切换到对应用户,普通用户切换要输入密码。如果发现切换错了用户,想快速回退可以使用快捷键 Ctrl+D。
二、文件的权限
Linux不像Windows以文件的后缀来区分文件类型,但是要注意Linux上的软件需要后缀来区别文件类型。
使用 LL 指令显示文件信息,第一列的第一个字符表示文件的类型。
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
对于文件来说权限是用来限制用户对自己的操作的,而文件自己一般只有三个操作:
读(read):具有读取文件内容的权限限。
写(write): 具有修改文件内容的权限的权限。
执行(execute):具有执行文件的权限。
这个比较好理解,但是要注意对于一个目录文件来说又有点不一样了,虽然有也是同样的三个操作,但是效果不一样。
读(read):查看目录下的文件列表的权限。
写(write): 具有删除移动目录内文件和创建文件的权限 。
执行(execute):具有进入目录的权限。
三、访问文件的用户的权限
对于一个文件来说能访问它的用户大致分为三种: 拥有者(owner)、所属组(grp)、其他(other)
拥有者(owner):文件和文件目录的所有者。
所属组(group):文件和文件目录的所有者所在的组的用户。
其它用户(other):不属于上面的两个。
![](https://img-blog.csdnimg.cn/bd02055b72e040f6896be6573853288c.png)
打印文件的信息可以看到, 对应用户的访问权限,三三一组,顺序对应owner,group,other。
比如这里第一个文件,表示拥有者只有读和写的权限,并没有执行的权限。其他用户什么权限都没有。
PS:这里rwx的顺序是固定的,每个位置表示的就 读、写、执行有就是有,没有用 — 表示。
使用 LL 命令能直接再第三列和四列,看到文件的拥有者和所属组,而不属于这两个的就是other。
四、修改文件的访问权限
由于权限是可以限制人也可以限制文件的,所以修改文件的访问权限,要么修改用户的权限,要么修改文件的属性。
更改文件属性:
指令:chmod 设置文件的访问权限。
- +:增加权限
- -:取消权限
- u:拥有者
- g:拥有者同组用
- o:其它用户
- a:所有用户
使用比较简单,除了这种方法还有一个方式,这里可以把有权限当做1,没权限为0,那么三个二进制就是一个8进制。
三个8进制数赋权限,那么这里最大的权限是777,最小的是000。
不过我觉的这个不的特别好用,还要计算8进制,不过要知道有这么个东西存在。
更改文件所属者和拥有者:
更改拥有者和所属组要提高权限,要么使用root权限,要么使用sudo指令,不过这个指令要添加到配置文件才能使用。(文件拥有者也可以改,但是拥有者把拥有者改了,感觉很怪,结果还是要提高权限)
指令:chown(更改拥有者)、chgrp(更改所属组)
PS:没有更改其他人的指令,因为只要更改了拥有者和所属组相当于就更改了其他人了。
PS:如果自己同时有拥有者和所属组的权限,就只看拥有者不看所属者,因为这里权限值判断一次。
Linux默认权限:
一个目录被创建,起始权限是从:777开始
一个普通文件被创建,起始权限是从:666开始
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask 的影响。
umask 权限掩码:
凡是在umask中出现的权限,都不应该在最终权限中出现。
最终权限 = 初始权限 & (~umask)
根据算式计算一下,发现实际默认生成的权限是775和664,并实验一下。
其实不用特地的去计算,这里只是为了证明一下。其实也简单就是原来准备要生成的权限减去umask就得到了最终权限,比如这里文件的权限本来应该是rw- rw- rw-,减去umask(002) --- --- -w-,就得到了rw- rw r--。
这里还可以更改一下umask试一试。
拓展:粘滞位
前面说了修改了目录文件的写权限,就可以删除目录下的文件,那么这里就有个问题,就是我自己写的文件,给别的用户开了权限后,别的用户就可以删除这个文件了,但是这是不好的,所以这里Linux引入了粘滞位的概念。
chmod +t 目录文件名 //添加粘滞位
chmod -t 目录文件名 //移除粘滞位
![](https://img-blog.csdnimg.cn/13e6b34140464dc8a96af4e61a5efa2f.png)
设置完粘滞位后会出现一个 t ,这样就可以让别的用户删除不了文件夹及其里面的文件了,但是自己可以删除自己的文件。
PS: 粘滞位只能给目录设置。 谁设置谁取消(root)。
sudo命令:
在Linux下有时候有的操作需要root权限,但是又不想来回的切换用户,这时就可以使用sudo命令,而这个命令需要在配置文件里面添加可以使用的用户。
打开配置文件sudoers
PS:要注意,设置用户的sudo权限这一个操作,其本身需要root权限。
打开文件后在其第110行下面,添加想要添加权限的用户,就可以使用sudo权限了,记得保存后关闭文件。
然后可以试试使用sudo命令来添加一个用户。
添加一个用户:
sudo useradd -m 用户名 -s /bin/bash
用户设置密码:
sudo passwd 用户名
删除用户:
userdel -r 用户名
发现sudo命令生效了,不使用root用户也能新建用户。
拓展:
添加用户失败,显示 useradd: cannot open /etc/passwd 或者 useradd: cannot open /etc/shadow
用 lsattr 命令查看 /etc/passwd 的隐藏权限
lsattr /etc/passwd //出现
-----a-------------- /etc/passwd
lsattr /etc/shadow //出现
-----a-------------- /etc/shadow
权限 a 说明设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。用chattr命令对/etc/group去除a权限位
chattr -a /etc/psswd
chattr -a /etc/shadow
这样就可以继续添加用户了。
版权归原作者 爽帅_ 所有, 如有侵权,请联系我们删除。