Linux中文件权限用户和用户组管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中文件权限用户和用户组管理相关的知识,希望对你有一定的参考价值。
1、文件权限
2、文件和目录rwx权限说明
文件rwx权限:
r : 可读,具有读取文件内容的权限(),如果没有r,vi/vim编辑器提示无法编辑(可强制编辑),echo可以追加或重定向。
w : 可写,具有修改文件内容的权限
x : 可执行,具有执行文件的权限。
需满足:文件本身具有可执行权限;普通用户还需具有r权限;root用户只要x权限就可执行。linux中可执行文件:*.sh *.py *.perl等等。
目录rwx权限:
r : 可读,查看目录下面文件及子目录的权限,即 ls dir
如果没有x,不能进入到目录里,即无法cd dir ;如果没有x,ls可以看到所有文件名,但会提示无权访问目录下的文件。
w : 可写,具有修改、增加、删除目录内文件名的权限(需要x权限配合)
x : 可执行,具有进入目录的权限。例如cd dir;但是没有r无法列表文件或目录,没有w无法修改、增加、删除
3、删除文件(或者修改文件名)受父目录权限控制,和文件本身权限无关,删除文件(或者修改文件名)是在操作文件的上级目录的block中与文件名和inode相关联的数据,因此和上级目录权限有关。
4、读取/data/test的过程
5、常用命令
改变文件或目录用户权限: chmod [数字权限或字符权限] [文件名或目录名] 。
加 -R (递归) 表示把目录中的文件或子目录权限改变。
数字权限:r :4 w:2 x:1 -:0
字符权限 : u:所属主 g:所属组 o:其他人 a:相当于ugo +:添加权限 -:取消权限 =:取消其他权限只添加给定权限
改变文件或目录所属主: chown [选项] [属主] [文件名或目录名]
选项: -R 表示把指定目录中的文件或子目录的所属主改变。
改变文件或目录所属组: chgrp [选项] [属组] [文件名或目录名]
选项: -R 表示把指定目录中的文件或子目录的所属组改变。
6、默认权限分配命令:umask
每个linux系统终端都拥有一个umask,可以用来确定新创建文件或目录的默认权限。由于在系统中创建一个文件默认权限666,创建一个目录默认权限777,权限对外开放比较大,所以设置了umask权限掩码之后,默认的文件目录权限减去umask值才是实际的文件目录权限。
umask 一共4位数字,第一位用于定义特殊权限,后三位表示权限掩码。
对于 超级用户,umask默认值是0022,超级用户(用户root及用户组root)创建目录默认权限 :777-022=755,创建文件默认权限:666-022= 644,是相对安全的权限。
对于普通用户, umask默认值是0002,普通用户创建目录默认权限:777-002=775,创建文件默认权限:666-002=664.
umask设定值如果有奇数位,777 ( 666 )-umask,对应的奇数位再加1,才是创建目录或文件的默认权限。
umask设定值如果全为偶数,777(666)-umask,就是创建目录或文件的的默认权限。
查看umask值 : umask
改变umask值 : umask -S [设定值] (临时设置,重启无效)
如果需要永久生效,则修改/etc/profile或者/etc/bashrc文件,在文件末尾加上 umask [设定值] 。/etc/profile 和 /etc/bashrc 都可以用于用户登录时自动执行某些操作,区别是/etc/profile只是在用户第一次登录时被执行,而/etc/bashrc在用户每次登录加载bash shell 时都会被执行。因此,修改/etc/profile只能对新创建的用户生效,/etc/bashrc 对所有登录用户都生效。
7、特殊权限
Linux文件的特殊权限是用于弥补一般权限不能实现的功能,是针对于文件设置的一种特殊的功能。
Linux文件的特殊权限:
SUID:让执行者临时拥有属主的权限(仅对拥有执行权限x的二进制程序有效)。s(有x时) , S( 无x时 )。
SGID:让执行者临时拥有属组的权限(对拥有执行权限x的二进制程序设置)。 s(有x时),S(无x时)。
主要用在目录中,当某个目录设置了sgid,在该目录中新创建的文件具有该目录的所属组权限,使得在多个用户之间共享目录变得简单。
SBIT(Sticky Bit):只可管理自己的数据而不能删除他人文件(仅对目录有效)。 t( 有x时 ) ,T(无x时)。
Linux文件的特殊权限的设置:
SUID:4 SGID:2 SBIT:1
设置SUID: chmod 4755 [文件名或目录名] 或者 chmod u+s [文件名或目录名]
设置SGID: chmod 2755 [文件名或目录名] 或者 chmod g+s [文件名或目录名]
设置SBIT(粘滞位): chmod 1755 [目录名]
8、用户和用户组管理
用户管理:
useradd :
userdel :
usermod :
用户组管理:
groupadd:
groupdel :
groupmod:
9、chattr、lsattr
chattr: 命令用于改变文件或目录属性,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。
这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。
如: chattr +i /etc/resolv.conf #用chattr命令防止系统中某个关键文件被修改:
参数:
-R :递归处理,将指定目录下的所有文件及子目录一并处理。
-v<版本编号> :设置文件或目录版本。
-V :显示指令执行过程。
+<属性> : 开启文件或目录的该项属性。
-<属性> :关闭文件或目录的该项属性。
=<属性> : 指定文件或目录的该项属性。
属性:
a:让文件或目录仅供附加用途。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:将文件或目录排除在倾倒操作之外。
i:不得任意更动文件或目录。
s:保密性删除文件或目录。
S:即时更新文件或目录。
u:预防意外删除。
lsattr : 显示chattr命令设置的文件属性。
lsattr [-adlRvV][文件或目录...]
参数:
-a 显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。
-d 显示,目录名称,而非其内容。
-l 此参数目前没有任何作用。
-R 递归处理,将指定目录下的所有文件及子目录一并处理。
-v 显示文件或目录版本。
-V 显示版本信息。
以上是关于Linux中文件权限用户和用户组管理的主要内容,如果未能解决你的问题,请参考以下文章