Linux中的权限管理
一、权限的查看及读取
Linux是个多用户多任务的系统,常常会有多个用户共同使用一台主机进行工作。因此会对使用某台主机的用户进行分类:文件拥有者(user)、文件拥有组(group)、其他人(other)。
1、查看权限
ls -l file ##查看文件权限
ls -ld dir ##查看目录的权限
ls -lR dir ##查看目录及目录中所有文件的权限
2、权限的读取
文件的属性被叫做文件的元数据(meta data)。一种元数据用一个字节(byte)来记录内容。
#文件权限信息#
- | rw-r--r-- | . | 1 | root | root | 0 | Apr 12 10:57 | file
[1] [2] [3] [4] [5] [6] [7] [8] [9]
#目录权限信息#
d | rw-r--r-- | . | 2 | root | root | 0 | Apr 12 10:57 | westos
[1] [2] [3] [4] [5] [6] [7] [8] [9]
前8个属性各用一个字节来记录;文件名中一个字符用一个字节来记录
对于权限信息每一种元数据的解释:
【1】文件类型
- ##普通文件
d ##目录
l ##软连接
b ##块设备
c ##字符设备
s ##socket套接字
p ##管道[ | ]
***软连接的优点:节省磁盘空间;可跨越文件系统,硬链接则不可以
【2】用户权限
rwx | r-- | r-- 分别对应--拥有者权限 | 文件拥有组成员权限 | 其他用户权限
r===可读权限 w===可写权限 x===可执行权限
【3】有点【.】表示系统中的SElinux(安全上下文)为开启状态
【4】
对于文件而言是指文件的硬链接个数(文件内容被系统记录的次数)
对于目录而言是指目录中子目录的个数
【5】文件拥有者
【6】文件拥有组
【7】
对于文件而言是指文件内容的大小
对于目录而言是指目录中子文件的元数据大小
【8】文件内容被修改的时间
【9】文件名称
二、普通权限的类型及作用
1、用户对文件的身份
u ##文件的拥有者
g ##文件的拥有组
o ##既不是拥有者也不是文件拥有组成员的其他用户的统称
2、文件权限对于用户身份的匹配
u > g > o ##拥有者权限最大,拥有组成员权限次之,其他用户权限最小
3、权限类型的解释
- ##权限未开启
r ##对于文件指可读取文件内容;对于目录指可列出目录中的文件(ls)
w ##对于文件指可更改文件内容;对于目录指可在目录中新建或删除文件
x ##对于文件指可用文件名称调用文件内的程序;对于目录指可进入目录中
三、权限的设定
设定文件权限命令:chmod
chmod复制权限
chmod --reference=/tmp /mnt/westosdir ##复制/tmp目录的权限至/mnt/westosdir上
chmod -R --reference=/tmp /mnt/westosdir ##复制/tmp目录的权限至/mnt/westosdir以及目录中的子文件上
chmod字符方式设定权限
chmod <a/u/g/o>+/=/-<r/w/x> file/dir
示例:
建立一个满权限的文件,权限位为:rwxrwxrwx
chmod u-rw =--xrwxrwx
chmod u-rw,g+x,o+wx =--xrwxrwx
chmod a-rwx =---------
chmod u=rwx,g=rx,o=--- =rwxr-x---
chmod -R u=rwx,g=rx,o=r =rwxr-xr--
chmod数字方式设定权限
***权限波尔值表示方式
--- = 000 ==0
--x = 001 ==1
-w- = 010 ==2
-wx = 011 ==3
r-- = 100 ==4
r-x = 101 ==5
rw- = 110 ==6
rwx = 111 ==7
示例:
chmod 755 file ==rwxr-xr-x
chmod 622 file ==rw--w--w-
四、系统默认权限的设定
系统存在的意义是资源共享。但从安全角度讲,系统共享的资源越少即开放的权力越小则系统的安全新越高;而系统开放的权力越多则系统安全性得不到保障;因此系统通过保留不安全权限、开放部分权限的方式来保证系统安全、创造价值。
umask值表示系统的保留权限(root用户默认值为 022;普通用户默认值为002)。
umask值越大意味着系统的安全性越高。
umask 权限值 ##临时设定umask值
系统中新建文件的默认权限为 644(777-022-111)
【内核为了系统安全保留了文件的执行权限】
系统中新建目录的默认权限为 755(777-022)
可以通过编辑shell的配置文件 /etc/bashrc & /etc/profile 来永久更改umask值(2个文件须同时更改并保持umask值一致)
vim /etc/bashrc
vim /etc/profile
source /etc/bashrc
source /etc/profile
##source命令的作用:使配置文件中的更改内容立即被系统识别
五、文件的用户用户组管理
chown username file ##更改文件的拥有者
chgrp groupname file ##更改文件的拥有组
chown username:groupname file == chown username.groupname file
##同时更改文件的拥有者和拥有组
chown -R username dir ##更改目录及目录中内容的拥有者
chgrp -R groupname dir ##更改目录及目录中内容的拥有组
六、特殊权限
1、粘滞位(stickyid)
粘滞位作用对象为目录;效果:目录粘滞位开启后则此目录中的文件只能被文件拥有者删除
命令:
chmod o+t dir 或者 chmod 1+原始权限波尔值 dir
2、强制位(sgid)
强制位作用对象为目录时;效果:目录强制位开启后则此目录中新建的文件自动归属到此目录的拥有组中
强制位作用对象位可执行的二进制文件(系统命令)时,可以使此命令产生的进程归属到此二进制文件的拥有组中,使进程与命令执行用户的所属组无关
命令:
chmod g+s dir/[可执行文件] 或者 chmod 2+原始权限波尔值 dir/[可执行文件]
3、冒险位(suid)
冒险位作用对象只为可执行的二进制文件;效果:二进制文件执行时产生的进程都归属到此二进制文件的拥有者中,使进程与命令执行的用户无关
命令:
chmod u+s [可执行文件] 或者 chmod 4+原始权限波尔值 [可执行文件]
七、acl权限列表
权限列表的功能:设定指定用户对指定文件的特殊权利(忽视文件本身对用户的权限)
Access Control Lists ##访问控制列表
文件权限位后的【.】转变为【+】时表示此文件的acl列表开启
相关命令:
setfacl -m u::rwx file ##更改文件拥有者本身的默认权限
setfacl -m g::rw- file ##更改文件拥有组本身的默认权限
setfacl -m o::0 file ##更改other用户对文件的本身默认权限
setfacl -m u:westos:rw file ##指定用户拥有指定权限,忽视文件本身对该用户的默认权限
setfacl -m g:westos:r file ##指定用户组拥有指定权限,忽视文件本身对该用户组的默认权限
setfacl -x u:westos file ##撤销指定用户的指定权限
setfacl -b file ##关闭acl列表
getfacl file ##查看acl列表打开状态的文件的权限
***当文件权限列表开启后,不使用 ls -l 的方式查看文件权限而是用 getfacl 命令
acl列表打开的文件的权限优先级:
拥有者 > 特殊指定用户 > 权限多的组的组成员 > 权限少的组的组成员 > 其他用户
acl列表中mask值的控制
目的:为了对acl列表中指定用户的指定权限进行控制(比如mask中无x权力,那么指定的用户就算拥有x权力,x权力也不会生效)
命令:
setfacl -m m::rwx(权限指定任意) file
acl列表的默认权限
作用对象为目录
命令:
setfacl -m u:westos:rwx dir ##指定用户对目录拥有特殊权限
setfacl -Rm u:westos:rwx dir ##指定用户对目录及目录中已经存在的内容拥有特殊权限
***以上命令只针对已存在的文件生效,新建的文件不会被设定
setfacl -m d:u:lee:rwx dir ##指定用户对目录中新建的文件拥有特殊权限
***以上命令只针对目录中新增的文件生效,设置之前已经存在的文件及目录本身不会被设定
八、attr权限
attr权限可以限制所有用户的权力,包括root用户
命令:
lsattr fir/file ##查看文件的attr权限
chattr +/-i dir/file ##+i后任何用户对文件不能做任何更改
chattr +/-a dir/file ##+a后任何用户对文件只能添加内容,不能删除