Linux笔记---Linux权限理解

打印 上一主题 下一主题

主题 692|帖子 692|积分 2076

1. 用户的权限的概念

在Linux下,多个用户可以同时登录一台主机。
在这样的条件下,为了对各个用户的权限举行精细化管理,每个文件都将访问其的用户分为三类脚色来举行权限区分:
   拥有者:文件和文件目次的所有者:u---User
  所属组:文件和文件目次的所有者所在的组的用户:g---Group
  other:其它用户:o---Others 
  用ls -l指令可以看到如下的文件属性:

这些文件属性表现的含义如下图:
所属用户即拥有者,所属用户组即所属组。
例如上图中,所有文件的拥有者和所属组都是root。
除了这两种人以外的所有用户都是other,所以不需要记载other。
而文件属性最前面的这一串字符串中,第一位表现该文件的类型:
   d:文件夹   -:普通文件   l:软链接(类似Windows的快捷方式) b:块设备文件(例如硬盘、光驱等) p:管道文件   c:字符设备文件(例如屏幕等串口设备) s:套接口文件
  后面每三位表现一类人的权限(依次为拥有者,所属组,other)。
每类人的三位权限分别为:
   第一位(r/-) :该类用户可以读取文件内容(目次:可以查看目次中的文件)。
  第二位(w/-) :该类用户可以修改文件内容(目次:可在该目次下删除/新建文件)。
  第三位(x/-) :该类用户可以运行该文件(目次:可以进入到该目次下)。
   例如上面图中的test.c的文件属性中的字符串解释为:
   普通文件---拥有者可读/可写/不可运行---所属组可读/不可写/不可运行---other不允许任何行为
   每个文件对不同用户的脚色判定与对不同脚色的权限开放程度,就构成了各个用户的权限。
固然,这一说法并不适用于root,root的权限就是统统皆可,可以实行任何操纵。 
除此之外我们可以看到,只要是目次,任何用户默认都可以运行,这里运行指的是进入该目次。
2. 用户的切换

su指令

用户之间的切换可以使用su指令来做到:
  1. su 目标用户 // 切换到目标用户
  2. su -或su root // 切换到root
复制代码
root作为超级用户(管理员),在切换成其他用户时无需输入密码。
而普通用户无论是切换到root还是切换到其他普通用户,都需要输入对应用户的密码。
sudo修饰指令

将sudo加到指令前,就表现以管理员(root)的身份实行该指令。
这样的指令在初次实行时,会要求用户输入自己的密码

输入自己的密码就可以以管理员的身份实行指令,那岂不是每个人都是管理员?还要root来干嘛?
事变肯定不会这么简单,当我们输完密码后会表现这样的报错:

"shishen"用户不在"sudoers"这个文件中, 该次事件将会被陈诉。
sudoers白名单

"sudoers"这个文件相称于是root为普通用户列的白名单,只有用户被添加到该名单中才可以使用sudo来实行指令。

其中,"/etc/sudoers"就是我们要找的白名单,打开并进入其中(这里要用root账号举行操纵,普通用户对该文件没有任何权限,既不可以读也不可以写更不可以实行):
 

 找到这一行,这里就表现了可以使用sudo的用户:

默认情况下只有root,我们可以把shishen也添加进来,除了用户名以外照抄即可:

这下,我们的shishen用户就可以使用sudo,以管理员身份运行指令了:

可以看到,shishen使用管理员身份创建的文件也是属于管理员的。
也就是说,sudo只是给予了某用户临时使用root账号的权力,权限本质上还是root的,该用户的权限本质上也没有提高。
在Windows和树莓派等操纵系统中,默认的用户不是管理员,但是在管理员的白名单中,也就是像shishen一样。
3. 文件访问权限的相关设置方法

chmod指令

设置文件的访问权限:
  1. chmod [参数] 权限 文件名
复制代码
常用选项:
   -R:递归修改目次文件的权限
阐明:只有文件的拥有者和root才可以改变文件的权限
   这里的权限用"用户表现符+/-=权限字符"表现:
   +:向权限范围增长权限代号所表现的权限
  -:向权限范围取消权限代号所表现的权限
  =:向权限范围赋予权限代号所表现的权限
  
  用户表现符:
  u:拥有者
  g:拥有者同组用
  o:其它用户
  a:所有用户 

  八进制表现权限

权限符号(读写运行)二进制八进制
--x0011
-w-0102
r--1004
-wx0113
r-x1015
rw-1106
rwx1117
---0000
基于上表,我们用三位的八进制数来表现权限,从高到低依次表现拥有者,所属组,other的权限。例如:
   666 等价于 u=rw g=rw o=rw
  777 等价于 u=rwx g=rwx o=rwx
  

chown指令

修改文件的拥有者:
  1. chown [参数] 用户名 文件名 // 修改拥有者
  2. chown [参数] 用户名:用户名 // 修改拥有者和所属组
复制代码
同样具有"-R"选项。 

 chgrp指令

修改文件的所属组:
  1. chgrp [参数] 用户组名 文件名
复制代码
同样具有"-R"选项。 这里就不作演示了。
4. umask

Linux中,文件的默认权限是0666,而目次的默认权限是0777(不用在意开头一位0)。
umask则是用于界说新创建文件或目次的默认权限。
它通过一个权限掩码来决定新创建的文件或目次应该具有哪些权限,即通过掩码的方式来掩蔽(或取消)对应的权限位。
Umask的工作原理是通过从文件或目次的默认权限中去除特定的权限,从而确定终极的文件或目次权限:
   现实默认权限 = 默认权限 & (~umask掩码)
  使用umask指令可以查看或修改umask掩码:
  1. umask // 查看掩码
  2. umask 四位八进制数 // 设置掩码
复制代码

5. 粘滞位 

要实现多用户共享文件的话,我们可以用root账户(根目次的拥有者是root,只有root由权限在根目次创建目次)在根目次下新建一个将所有权限放开的目次。
这样,所有用户都可以在该目次下举行协作。
但题目是,将共享目次的w权限向所有人放开,意味着所有用户不光能在该目次下创建文件,而且可以删除该目次下的恣意文件,无论该文件的拥有者是否是删除者。
这很显着不是我们想要的,安全的协作环境,难免有人会因为各种各样的缘故原由想要删掉你在共享目次下创建的文件。
为了办理这个题目,我们引入了粘滞位的概念。
粘滞位,即除了"rwx"以外的额外的"t"标记,被"t"标记的目次中,other只能新建文件而不能删除。
  1. chmod +t 共享目录
复制代码



 粘滞位不需要指明为"o+t",直接"+t"即可,"t"会覆盖other权限的x。
粘滞位是因共享文件而产生的,而共享文件必定创建在根目次下,其拥有者和所属组都是root,因此只需要限制other即可(反正root想限制也限制不了)。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

乌市泽哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表