Linux 权限相关总结(用户&权限管理&权限设置方法)

目录

Linux 中的用户

su指令

Linux 权限管理

1. 文件访问者的分类(对于用户来说)           

2.文件类型和访问权限(对于文件或目录来说)

          1). 文件类型                  2). 其中 r , w,  x, -  具体含义            文件权限值的表示方法

粘滞位

文件访问权限的相关设置方法

                  1. chmod    2.chown    3. chgrp    3.umask      4. file      5.sudo


相关博客 : Linux文件目录类常用指令 

Linux 中的用户

linux 中说到权限, 就绕不开用户, 有了不同用户权限才有意义

Linux下有两种用户:超级用户(root)、普通用户。

超级用户 : 可以在linux系统下做任何事情,不受限制
普通用户 : 在linux下做有限的事情(权限受到限制)

su

功能描述: 用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。
基本用法 : su  (命令参数)  (命令对象) 
su username : 切换到username用户, 但不获取其环境变量(su root 可以省略root写成su)
su - username  (注意, - 左右都有空格), 完全切换到username用户(并获取其环境变量), (su - root 可以省略root写成su -)
例如:
su root 
su 
su - root
su -
常用命令参数 : 
-c : 执行完指定的指令后,即恢复原来的身份, 例如: su -c ls root , 在切换到root用户后执行完ls命令自动切换回原用户

补充 : 
       在所有Linux系统中,系统都是通过UID来区分用户权限级别的,  UID (User Identify)用户ID, 相当于我们身份证号码一般的存在, UID为 0 的用户被定义为超级用户(也就是root用户).
      一般来说, 用户和UID是一 一对应的, 就是像我们的身份证号码一样, 但确是可以将一个UID给多个用户, 但这样的操作是危险的, 不安全的, 可能会造成系统权限管理的混乱, 尤其是把root用户的UID如果被普通用户所共有, 那么这个 普通用户就有了和root一样的权限, 这是非常不安全的行为


Linux 权限管理

1. 文件访问者的分类(对于用户来说)

前面说到, 权限作用于多个用户才显得有意义,  在linux中可以按对文件的访问权限将用户(人)分为三种 :

文件和文件目录的所有者u---User
文件和文件目录的所有者 所在的组的用户(同组用户) : g---Group
其它用户o---Others

2.文件类型和访问权限(对于文件或目录来说)

用 ll 或 ls -l 命令可以显示目录下所有文件详细信息(不包括隐藏文件), 如下图
在每个文件信息开头的 d - w r x 共10位是什么信息呢, 是文件对于不同文件访问者的权限, 具体如下图 :

1). 文件类型

d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

2). 其中 r , w,  x, -  具体含义

r(read),  w(write),  x(execute), - (表示没有这个权限) 都是用来表示权限的
它们在表示权限时有固定顺序, 为 r, w ,x
 - 出现在哪个位置就表示没有哪个权限

对文件而言 
r  : 具有读取文件内容的权限
w: 具有修改文件内容的权限
x : 具有执行文件的权限 (只是具备执行的权限, 但文件是否能执行还取决于文件本身属性)
- : 在哪个位置就表示不具有该项权限

对目录而言
r  : 具有浏览该目录信息的权限(是否可以查看目录中的内容)
w : 具有删除,移动,增加这个目录中文件(或目录)的权限
x : 具有进入目录的权限
- :  在哪个位置就表示不具有该项权限
注意: 如果目录没有x权限, 则无法对目录执行任何命令, 甚至无法cd进入目录, 即使目录仍然有r权限(这个地方很容易犯错, 即认为有读权限就可以进入目录读取目录下的文件), 然而如果目录具有x权限, 但没有r权限, 则用户可以执行命令, 可以cd进入目录. 但由于没有目录的x权限所以在目录下, 即使可以执行ls命令, 仍然没有权限读出目录下的文档. 例如下面


那么问题来了
换句话来讲, 就是只要用户有目录的写(w)权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写(w)权限.
这好像不太科学啊, 我创建的一个文件, 凭什么别的用户可以删掉? 我们来验证一下是否是这样

我们在root用户创建的文件ff, 可以看到同组用户和其他用户都没有写(w)权限, 但在test用户下我们却删掉了root用户所有的ff文件
为了解决这个不科学的问题, Linux引入了粘滞位的概念.

粘滞位

给目录添加粘滞位: chmod +t 目录路径

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

设置粘滞位后再来试一遍test用户是否可以删除ff文件

可以看到, 结果正如我们所料, 删不了了

文件权限值的表示方法

1). 字符表示方法

就是上面的这种用r  w  x  -这四种字符来表示权限的方法

2). 8进制表示法
 

字符表示 8进制 二进制
--- 0 000
--x 1 001
-w- 2 010
-wx 3 011
r-- 4 100
r-x 5 101
rw- 6 110
rwx 7 111

文件访问权限的相关设置方法

1. chmod 

功能描述: 设置文件或目录的访问权限
基本用法 : 
chmod u+x,g+w f01 (增加f01拥有者执行权限, 组员写入的权限)(相应的u-x代表去除此权限)(在原有权限的基础上增加或去除相应权限)
chmod u=rwx,g=rw,o=r f01 (将f01的权限设置为rwxrw-r--)(不管之前是什么, 修改成我们设置的)
chmod 764 f01 (文件f01权限设置为rwxrw-r--)(不管之前是什么, 修改成我们设置的)
chmod a+x f01 (文件f01的u,g,o都设置可执行属性)
常用命令参数 : 
+ : 向权限范围增加权限代号所表示的权限
-  : 向权限范围取消权限代号所表示的权限
= : 向权限范围赋予权限代号所表示的权限用户符号
u : 拥有者
g : 拥有者同组用户
o : 其它用户
a : 所有用户

2.chown

功能描述: 改变某个文件或目录的所有者和所属的组(只有文件主和超级用户才可以便用该命令)
基本用法 : 
chown [参数] 用户名 文件名(或目录)     
例子: chown user f             (将文件f的所有者改为user)
         chown -R user fd       (将目录f及其目录下的文件及目录的所有者递归改为user)
常用命令参数 : 
-R : 递归处理,将指定目录下的所有文件及子目录一并处理
-v : 显示指令执行过程

3. chgrp

功能描述: 修改文件或目录的所属组
基本用法 : 
chgrp [参数] 用户组名 文件名
例子: chgrp user /abc/f2     (将abc目录下f2文件的用户组改为user) 
         chgrp -R user mengxin /meng     (将mengxin目录下meng目录及其目录下的内容的的用户组递归改为改为user)
常用命令参数 : 
-R 递归修改文件或目录的所属组

3.umask

功能描述:  用来查看和设置限制新建文件权限的掩码。(新建文件权限的掩码 : 我们新建一个文件时,默认的权限)
用户可以通过执行umask命令来改变默认值,新的权限将会把旧的覆盖掉。
补充说明 :
新建文件默认权限=0666,  新建目录默认权限=0777  (此处的默认权限并不是实际新建文件或目录的预设权限)
(0666, 0777前面的0是8进制的前缀, 下文也同样)
但实际上所创建的文件和目录,看到的权限却不是上面的默认值值。如下图

原因就是创建文件或目录时预设权限还要受到umask的影响。
假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
 输入umask可以查看当前用户的掩码值umask为 , 
可以看到umask = 0002, 目录实际预设权限 = 0777 & ~(0002) = 0777 & 0775  = 0775 ==> 111111101 ==> rwxrwxr-x
新创建文件实际预设值  = 0666 & ~(0002) =  0666 & 0775 = 0664 ==> 110110100 ==> rw-rw-r--
基本用法 : 
umask      查看当前用户的掩码值umask
利用umask命令可以指定哪些权限将在新文件的默认权限中被删除, 例如:
umask u=,g=w,o=rwx  (组用户的写权限, 其他用户的读, 写和执行权限都被取消)
注意: =在umask命令和chmod命令中的作用恰恰相反. 在chmod命令中, 利用它来设置指定的权限,而其余权限则被删除,但是在umask命令中, 它将在原有权限的基础上删除指定的权限。
常用命令参数 : 
-S : 以符号方式输出权限掩码。
注意 :
不能直接利用umask命令创建一个可执行的文件, 用户只能利用chmod命令使它具有执行权限 . 假设执行了命令
umask u=, g=w, o=rwx , 虽然在命令行中, 没有删去文件主和组用户的执行权限, 但默认的文件权限还是640(即 rw- r-- ---), 而不是750(rwx r-x ---). 但是, 如果创建的是目录或者通过编译程序创建的一个可执行文件, 将不受此限制. 在这种情况下, 会设置文件的执行权限

 4. file

功能描述: 辨识文件类型。
基本用法 : 
file [参数] 文件或目录
常用命令参数 : 
-b:列出辨识结果时,不显示文件名称
-c:详细显示指令执行过程,便于排错或分析程序执行的情形
-z:尝试去解读压缩文件的内容。

5.sudo

功能描述: 用来以其他用户身份(权限)来执行命令
补充: sudo 预设的身份为root, 在/etc/sudoers中设置了可执行sudo指令的用户. 用户使用sudo时,必须先输入密码
基本用法 : 
实例: 在test用户下安装tree, 提示需要root权限, 我们可以用sudo来在test用户下获取root的权限来执行

 

发布了223 篇原创文章 · 获赞 639 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_41071068/article/details/102726215