【Linux】文件的权限

        权限笼统分为两种一种是人的权限,一种是文件的访问权限。而root(管理员)具有Linux最高的权限,最多只有一个。而普通用户可以有多个,要受到权限的约束。


一、切换root权限

         既然root是最大的权限,那么这里就来了解一下如果切换到root用户。

su - //切换成root  

  

        这就是切换人的权限,但是大多数情况是root权限不会轻易的分给普通用户。

        那么再切回普通用户。

su + [用户名]

       

        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):不属于上面的两个。

        

        打印文件的信息可以看到, 对应用户的访问权限,三三一组,顺序对应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 目录文件名    //移除粘滞位

        

 

        设置完粘滞位后会出现一个 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

 

        这样就可以继续添加用户了。


  • 30
    点赞
  • 151
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值