1.5 Linux系统的权限管理

1.5 Linux系统的权限管理

权限的查看及读取

权限的查看

ls -l file									#查看文件权限
ls -ld dir									#查看目录权限

权限的读取

文件的属性被叫做文件的元数据(meta data)

一种元数据用一个byte来记录内容

-	|rw-r--r--|  .	| 1	|root| root | 0 | Jul 22 10:44 | file
**********************************************************************
[1]		[2]		[3]	 [4] [5]   [6]	 [7] 		[8]		[9]
d	|rwxr-xr-x|  .	| 2	|root| root | 6 | Jul 22 10:44 | dir
**********************************************************************
[1]		[2]		[3]	 [4] [5]   [6]	 [7] 		[8]		[9]

[1] #文件类型

  • -普通文件
    - d目录
    - l软连接
    - b块设备
    - c字符设备
    - ssocket套接字
    - p管道|

[2] #用户权限

rw-|r--|r-- user|group|other

[3] #系统的selinux开启

[4]

  • 文件:文件内容被系统记录的次数
  • 目录:目录中子目录的个数

[5] #文件拥有者

[6] #文件拥有组

[7]

  • 文件:文件内容大小
  • 目录:目录中子子文件的元数据大小

[8] #文件内容被修改时间

[9] 文件名称

普通权限的类型及作用

用户对文件的身份

u: #user 文件拥有者,ls -l看到的第5列信息

g: #group 文件拥有组,ls -l看到的第6列信息

o: #other 不是拥有者也不属于拥有组的其他用户的统称

权限位及类型

rw-r--r--

- #权限未开启

r #可读

  • 文件:可以读取文件内容
  • 目录:可以ls列出目录中的文件

w #可写

  • 文件:可以更改文件内容
  • 目录:可以在目录中新建或者删除文件

x #可执行

  • 文件:可以用文件名称调用文件内记录的程序
  • 目录:可以进入目录

设定普通权限

chmod用于设定文件权限

chmod复制权限:

chmod  --reference=/tmp /mnt/songdir 		#复制/tmp目录的权限到/mnt/songdir上
chmod -R --reference=/tmp /mnt/songdir 		#复制/tmp目录的权限到/mnt/songdir及目录子文件上 
##	-R 表示递归

chmod设定权限:

##字符方式:
chmod <a|u|g|o><+|-|=><r|w|x> file			#a表示所有用户
**********************************************************************
chmod u-rw /mnt/file1
chmod u-rw,g+x,o+wx /mnt/file2
chmod a-rw /mnt/file3
chmod -R u=rwx,g=rx,o=--- /mnt/songdir/

权限波尔值表示方式

rwx = 111

--- = 000

二进制表示:

rwx = 111 = 7
rw- = 110 = 6
r-x = 101 = 5
r-- = 100 = 4 = r
-wx = 011 = 3
-w- = 010 = 2 = w
--x = 001 = 1 = x
--- = 000 = 0

##数字方式:
chmod 644 /mnt/songdir1						#rw-r--r--

系统默认权限设定

系统本身存在的意义在于共享资源
从安全角度讲系统共享的资源越少,开放的权力越小系统安全性越高
既要保证系统安全,又要系统创造价值,于是把应该开放的权力默认开放,把不安全的权力默认保留

保留权力

系统中用umask表示系统保留权力

umask
umask 权限值

文件默认权限 = 777 - umask - 111

目录默认权限 = 777 - umask

umask临时更改

umask 077									#保留权力临时更改为077

umask永久更改

永久更改需要编辑系统文件/etc/bashrc/etc/profile

vim /etc/bashrc
*******************************************************************
 74     if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
 75        umask 002						#普通用户的umask
 76     else
 77        umask 022						#root用户的umask
 78     fi
 79 
vim /etc/profile
*******************************************************************
 59     if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
 60        umask 002						#普通用户的umask
 61     else
 62        umask 022						#root用户的umask
 63     fi
 64 

修改完成后需要让系统重新读取配置文件信息:

source /etc/bashrc							#source使更改的内容立即被系统识别
source /etc/profile

文件的用户及用户组管理

chown username file							#更改文件所有人
chown groupname file						#更改文件所属组
chown username:groupname file				#更改文件所有人及所属组(:可以用.代替)
chown|chgrp -R user|group dir				#更改目录本身及目录中内容的所有人或所属组

特殊权限

stickyid(粘制位)

stickyid作用于目录,若一个目录开启stickyid,则这个目录中的文件只能被文件所有人删除

##开启stickyid
chmod 1原始权限 dir							
chmod o+t dir

sgid(强制位)

sgid作用于目录,将目录中新建的文件自动归属到目录所属组中

##开启sgid
chmod 2原始权限 dir
chmod g+s dir

注:目录开启sgid后,首先建立文件的所属组就是这个目录的所属组

suid(冒险位)

suid作用于二进制可执行文件(c程序),二进制可执行文件开启suid后,运行二进制可执行文件时都是用文件所有人的身份运行,和执行用户无关

开启suid
chmod 4原始权限 file
chmod u+s file

acl(Access Control Lists)权限列表

acl作用:在列表中可以设定特殊用户对于特殊文件的特殊权限

acl列表开启标识

-rw-rw---- 1 root root 0 Jul 18 09:03 file1
*******************************************************************
		  ^
		  没有"+"代表acl列表未开启
*******************************************************************
-rw-rw----+ 1 root root 0 Jul 18 09:03 file1
*******************************************************************
		  ^
		  有"+"代表acl列表开启
*******************************************************************

acl列表权限读取

当文件的acl权限列表开启时,不能使用ls -l来查看文件的权限

getfacl file1
*******************************************************************
# file: file1								#文件名称
# owner: root								#文件拥有组
# group: root								#文件拥有者权限
user::rw-									#特殊指定用户权限
user:westos:rw-								#文件拥有组权限
group::r--									#特殊指定的用户组的权限
group:song:---								#特殊指定的用户组的权限
mask::rw-									#能够赋予特殊用户和特殊用户组的最大权限阀值
other::r--									#其他人的权限

acl列表的控制

setfacl -m u:lee:rw file1					#设定acl权限
setfacl -m g:westos:rw file1				#设定acl权限
setfacl -m u::rwx file1						#设定acl权限
setfacl -m g::0 file1						#设定acl权限
setfacl -x u:lee file1						#删除列表中的用户lee的特殊权限
setfacl -b file1							#关闭acl权限列表

acl权限优先级

拥有者 > 特殊指定用户 > 有权限的组 >无权限的组 > 其他

acl中mask控制

mask时能够赋予指定用户权限的最大阈值

当设定完文件的acl列表之后用chmod缩小文件拥有组的权力,mask会发生变化

acl列表的默认权限

setfacl -m u:aha:rwx /mnt/songdir			#只对于/mnt/westosdir目录本身生效
setfacl -Rm u:aha:rwx /mnt/songdir			#对于/mnt/westosdir目录和目录中已经存在的内容生效
*******************************************************************
以上命令只针对已存在的文件生效,对于新建的文件不会生效
*******************************************************************
setfacl -m d:u:lee:rwx /mnt/songdir/		#针对/mnt/songdir/目录中的新建文件生效

attr权限

attr权限用来限制所有用户

lsattr dir|file								#查看attr权限
chattr +i|+a|-i|-a dir|file					#设定attr权限
*******************************************************************
	i	#不能作任何的更改
	a	#能添加不能删除
上一篇:ACL访问控制列表


下一篇:EMQ X:发布订阅ACL