加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_池州站长网 (https://www.0566zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

【Linux】文件的权限

发布时间:2022-10-05 11:30:48 所属栏目:Linux 来源:
导读:  权限笼统分为两种一种是人的权限,一种是文件的访问权限。而root(管理员)具有Linux最高的权限,最多只有一个。而普通用户可以有多个,要受到权限的约束。

  一、切换root权限

  既然root是最大的权限
  权限笼统分为两种一种是人的权限,一种是文件的访问权限。而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):不属于上面的两个。
 
  linux怎么把文件复制到目录_linux删除目录及目录下所有文件_Linux 文件与目录管理
 
  打印文件的信息可以看到,对应用户的访问权限,三三一组,顺序对应owner,group,other。
 
  比如这里第一个文件,表示拥有者只有读和写的权限,并没有执行的权限。其他用户什么权限都没有。
 
  PS:这里rwx的顺序是固定的,每个位置表示的就 读、写、执行有就是有,没有用 — 表示。
 
  使用 LL 命令能直接再第三列和四列,看到文件的拥有者和所属组,而不属于这两个的就是other。
 
  四、修改文件的访问权限
 
  由于权限是可以限制人也可以限制文件的,所以修改文件的访问权限,要么修改用户的权限,要么修改文件的属性。
 
  更改文件属性:
 
  指令:chmod 设置文件的访问权限。
 
  linux删除目录及目录下所有文件_Linux 文件与目录管理_linux怎么把文件复制到目录
 
  使用比较简单,除了这种方法还有一个方式,这里可以把有权限当做1,没权限为0,那么三个二进制就是一个8进制。
 
  三个8进制数赋权限,那么这里最大的权限是777,最小的是000。
 
  不过我觉的这个不的特别好用,还要计算8进制,不过要知道有这么个东西存在。
 
  更改文件所属者和拥有者:
 
  更改拥有者和所属组要提高权限,要么使用root权限Linux 文件与目录管理,要么使用sudo指令,不过这个指令要添加到配置文件才能使用。(文件拥有者也可以改,但是拥有者把拥有者改了,感觉很怪,结果还是要提高权限)
 
  指令:chown(更改拥有者)、chgrp(更改所属组)
 
  linux怎么把文件复制到目录_Linux 文件与目录管理_linux删除目录及目录下所有文件
 
  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

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

(编辑:我爱制作网_池州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!