权限设定
第五章:权限设定
权限问题:系统稳定的基础 ,相当于规定法律
1.文件权限
(1)文件权限存在的意义:
系统最底层安全设定方法之一
保证文件可以被可用的用户作相应的操作
(2)文件权限的查看:
ls -l file 使用此命令查看文件的属性以及权限
ls -l -d dir=ls -ld dir 使用此命令查看目录的属性以及权限
ll file 查看文件的属性
ll -d dir 查看目录的属性
2.文件属性的查看:
命令格式:ls -l filename(文件名称)
- | rw-r--r--|1|root|root| 32 |Apr 2 02:03 |filename
1 2 3 4 5 6 7 8
(1)文件类型:“-”
“ -“ 表示普通文件或空文本(没有系统级的功能)
“ d“ 表示目录
“ c“ 表示字符设备
“ s“ 表示套接字(socket)
是程序的一扇门 ,进入这扇门内部才能进入程序内部和程序交流
一般采用 mysql 设定一个程序可以进入大程序里面
p 表示管道
b 表示块设备(block)
l 表示链接(快捷方式 软链接)
(2)文件读写权限:“rw-r–r--”(文件权限共9位,分为3部分)
r w- |r - - |r - -
‘[1]’ ‘[2]’ ‘[3]’
注意:
[1] | 所有人权限(文件拥有者对文件能做什么操作) |
---|---|
[2] | 所有组权限(文件所有组对文件能做什么操作) |
[3] | 其他人权限(其他人对文件能做什么操作) |
(3)文件内容被系统记录的次数:“1”(硬链接)
对文件 | 文件内容被系统记录的次数(文件硬链接个数) |
---|---|
对目录 | 目录中文件属性的字节数(目录中子目录的个数) |
、
(4)用户名字:“root”(文件的所有人)
(5)用户组名字:“root”(文件的所有组)
(6)文件内容的大小:“32”
(7)文件最后一次被修改的时间:“Apr 2 02:03”
(8)文件名字:“filename”
文件属性共占11位
==属性大小要会数 ==
对目录而言: 一个是子目录的个数 一个是元数据或者属性的大小
3.如何改变文件的所有组和所有人?
使用命令chown或者chgrp
思路:先建立文件和目录,再监控文件和目录所有人所有组改变的过程
监控命令 : watch -n 1 ls -lR /mnt/
(1)chown username file|dir ##更改文件或者目录的所有人
(2)chown username.groupname file|dir ##更改文件或者目录的所有人所有组
(3)chown -R username dir ##更改目录本身及里面所有内容的所有人
(4)chgrp groupname file|dir ##更改文件或者目录的所有组
(5)chgrp -R groupname dir ##更改目录本身及里面所有内容的所有组
总结:
touch /mnt/file{1…3} 先建立文件
mkdir /mnt/westos 再建立子目录
touch /mnt/westos/westosfile{1…3} 再在子目录下建立文件
建立用户 useradd leo linux
chown 改用户名字
chgrp 改用户组名字
chown -R 改用户名字及其子目录下的所有文件用户名(一改到底)
chgrp -R 改用户组名字及其子目录下的所有文件的用户组名字(一改到底)
要会算隐藏文件. 和 …的大小
一共是6 (仅记录自己 用户类型) 用户和 用户组各 3个
4.文件普通权限:
r w - | r - - | r - -
u g o
u | 文件所有人对文件可以读写 |
---|---|
g | 文件组成员对文件可读 |
o | 其他人对文件可读 |
优先级:u优先匹配,g次优先,o当u,g不匹配时匹配
r:
对文件:可以查看文件中的字符
对目录:可以查看目录中文件的信息
w:
对文件:可以更改文件内字符
对目录:可以在目录中添加删除文件
x:
对文件:可以运行文件内记录的程序动作
对目录:可以进入目录中
5.字符方式修改该文件权限
(1)chmod [-R] <u|g|o><+|-|=><r|w|x> file|dir 总的格式
(2)chmod u-x file1 file1拥有者去掉x权限
(3)chmod g+w file1 file1拥有组添加w权限
(4)chmod u+x,g-w file1 file1拥有者去掉x权,file1拥有组添加w权限
(5)chmod ugo-r file2 file2的用户、组、其他人去掉r权限
(6)chmod ug+x,o-r file3 file3用户和组添加x权限,其他人去掉r权限
6.数字方式修改该文件权限
在linux中,三种权限的权值为:r=4,w=2,x=1
文件权限数字表示方式如下:
u= r w - = 4+2+0=6
g= r - - = 4+0+0=4
o= r - - = 4+0+0=4
所以文件权限表示为644
格式:
chmod 修改后权限值 file
chmod 777 file
文件权限数字表达的所有可能如下:
7=r w x;6=r w -;5=r - x;4=r - -;3=- w x;2=- w -;1=- - x;0=- - -
r 读 用ls查看文件(看)
w 写 是否可以新建或者删除(搬走)
x 调用执行 是否可以进入此目录(进入)
7.系统默认权限的设定:
从系统存在角度来说,开放权力越大,系统存在意义越高
从系统安全角度来说,开放权力越少,系统安全性越高
所以系统设定新建文件或目录会去掉一些权限
权限设定方式如下:
umask ##查看系统保留权限默认为022
umask 077 ##修改该系统保留权限为077,此设定为临时设定,只当前shell中生效
永久设定方式:
vim /etc/bashrc ##设置shell中的权限
70 if [ $UID -gt 199 ] && [ “id -gn
” = “id -un
” ]; then
71 umask 002 ##普通用户的umask
72 else
73 umask 077 ##超级用户的umask
74 fi
vim /etc/profile ##设置系统的权限
59 if [ $UID -gt 199 ] && [ “id -gn
” = “id -un
” ]; then
60 umask 002 ##普通用户umask
61 else
62 umask 077 ##超级用户umask
63 fi
以上两个文件umask设定值必须保持一致
source /etc/bashrc
source /etc/profile
让设定立即生效
8.文件的访问控制(acl列表)
(1)acl定义: acl = access control list
指定特殊用户对特殊文件有特殊权限
命令格式:getfacl /mnt/westos/ 查看该目录的权限列表
file: westos/ ##文件名称
owner: root ##文件所有人
group: root ##文件所有组
user::rwx ##拥有者权限
user:student:rwx ##特殊用户权限
group::— ##组权限
mask::rwx ##权限掩码
other::— ##其他人权限
注意:当文件上有权限列表时,ls -l 能看到的权限是假的
(2)设定acl列表
命令格式:setfacl -m <u|g>:<username|groupname>:权限 文件|目录
-m | 表示设定acl列表 |
---|---|
u | 表示用户 |
g | 表示用户组 |
删除列表中的用户或者组
命令格式:setfacl -x <u|g>:<username|groupname> 文件|目录
关闭列表
setfacl -b 文件|目录
注意:
mask用来表示能够赋予用户最大权限
当用chmod改变文件普通权限时mask值可能会被破坏
修复采用:setfacl -m m:rwx 文件名称
acl 默认权限
当我们需要某个目录对于student可写,并且目录中新建的子目录对student也可写
就要设定默认默认权限
注意:
默认权限只对目录中新建立的文件或者目录生效,对已经建立的文件无效,
对于目录本身也无效
setfacl -m d:u:student:rwx /westos
7.特殊权限
1.sticky 粘制位
只针对目录有效,当一个目录上有sticky权限时,这个目录中的文件只能被文件的所有者删除
设定方式:
chmod o+t direcotry
chmod 1777 direcotry
chmod 1xxx direcotry
(1)先在超级用户下建立一个目录 mkdir /westos1
然后设置监控命令j监控改目录以及改目录下的文件:
watch -n 1 “ls -ld /westos1 ; ls -l /westos1”
并且在超级用户下设置满权限 chmod 777 /westos1
(2)在超级用户下建立两个普通用户linux1 linux2
分别切换到两个普通用户下建立文件file1 file2
(3)linux1用户可以删除linux2用户建立的文件file2,这样做很不安全
怎样解决这个问题?我们可以设置特殊权限t
(4)在超级用户模式下给westos1这个目录增加t权限
(5)给westos1目录加上t权限以后,linux2用户就不能删除linux1用户建立的file1文件了
2.sgid 强制位
设定方式:
chmod g+s file|dir
chmod 2xxx file|dir
对目录:当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组
(1)首先在超级用户下建立一个目录
并且对这个目录进行监控
(2)查看这个目录的权限:
(3)在超级用户下建立一个新用户,并且将新建目录的用户组变为刚刚新建的用户
然后在改目录下建立新的文件,发现此文件的用户组仍然为超级用户,
并不是刚刚 新建的那个用户
(4) 为了使在目录中建立的文件都属于目录的用户组,需要在目录上加上s权限
由此可见,当给目录加上s权限时,目录的所有组权限会出现s,此时建立的文件的所有组为目录的所有组。
对文件:只针对二进制可执行文件,当文件上有s权限时任何人执行此文件产生的进程都属于文件的所有组
(1)先监控二进制文件的进程:
(2)查看该二进制文件的权限:
(3)以root身份启动一个进程,这个进程的所有人和所有组均为root
然后将改文件的所有组改为linux3,发现并没有改变,仍为toot
(4)给二进制文进加上s权限,重新开启一个新的进程
3.suid 冒险位
作用:只针对二进制可执行文件,当文件上有suid权限时任何人执行这个文件中程序产生的进程都属于文件的所有人
设定方式:
chmod u+s file
chmod 4xxx file
(1)监控二进制文件的进程: