当前位置: 首页 > >

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 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 : 具有进入目录的权限
- :? 在哪个位置就表示不具有该项权限
那么问题来了
换句话来讲, 就是只要用户有目录的写(w)权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写(w)权限.
这好像不太科学啊, 我创建的一个文件, 凭什么别的用户可以删掉? 我们来验证一下是否是这样

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


粘滞位

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


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


设置粘滞位后再来试一遍test用户是否可以删除ff文件
可以看到, 结果正如我们所料, 删不了了




文件权限值的表示方法

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

2). 8进制表示法
?


字符表示8进制二进制
---0000
--x1001
-w-2010
-wx3011
r--4100
r-x5101
rw-6110
rwx7111



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

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的权限来执行
?



?



友情链接: