一、权限的概念
二、权限的查看与读取
1·权限的查看
ls -l 文件 ##查看文件权限
ls -ld 目录 ##查看目录权限
示例如下:
2.文件权限的种类
文件的属性被叫做文件的元数据(meta data),一类元数据用1个byte来记录内容(其中【9】有多少个字母表示多少个字节,多少个中文表示3*n个字节)
#文件权限信息#
- | rw-r--r-- | . | 1 | root | root | 0 | Apr 12 10:57 | xhm
[1] [2] [3] [4] [5] [6] [7] [8] [9]
#目录权限信息#
d | rw-r--r-- | . | 2 | root | root | 0 | Apr 12 10:57 | xiaohongmao
[1] [2] [3] [4] [5] [6] [7] [8] [9]
【1】描述数据的类型(是文件(-)还是目录(d))
【2】描述数据谁能干什么
【3】描述这个文件selinux的开关
【4】描述数据的硬连接个数(文件)或者表示目录中子目录的个数(目录)
【5】描述数据属于哪个主组
【6】描述数据有哪个附加组
【7】描述数据有多大
【8】数据最后一次更改的时间
【9】数据的名称
【1】文件类型
#文件类型
#- 普通文件
#d 目录
#l 软连接 (例如快捷方式是真正文件的一个影子)
#b 快设备(类似于u盘)
#c 字符设备
#s socket套接字(程序对外开放的一扇门,可以进入到程序中的数据库里)
#p 管道 |
【2】文件权限说明
##用户权限
##rw-|r--|r--
# u g o
u:user
g:group
o:other
【3】文件安全上下文标记
##系统的selinux开启,那么在此位会出现“.”
【4】文件副本标记或目录中子目录标记
##对于文件:文件内容被系统记录的次数(硬链接个数)
##对于目录:目录中子目录的个数
【5】文件的归属
##文件拥有者
【6】文件的归属
##文件拥有组
【7】文件容量统计
##对于文件:文件内容大小
##对于目录:目录中子文件的元数据大小
【8】文件时间戳
##文件内容被修改的时间
【9】文件名称
##文件名称中一个英文字符占用一个字节,一个中文字符占用三个字节
3.用户对于文件的身份识别及设定
1)用户对文件的身份
u: #user 文件的拥有者,ls -l 看到的第五列信息
g: #group 文件拥有组, ls -l 看到的第六列信息
o: #other 既不是拥有者也不是拥有组成员的其他用户的通称
具体如下:
2)权限位
rwx|r--|r--u g o
3)文件用户用户组管理
chown username file ##更改文件拥有者
chgrp groupname file ##更改文件拥有组
chown username:groupname file ##同时更改文件的拥有者和拥有组
chown|chgrp-R user|group dir ##更改目录本身及目录中内容的拥有者或者拥有组
对文件的实验演示:
对目录的实验:
4.设定普通权限的方法
chmod ##设定文件权限#chmod 复制权限#
chmod --reference=/tmp /mnt/lee #复制/tmp目录的权限到/mnt/lee上
chmod -R --reference=/tmp /mnt/westosdir #复制/tmp目录的权限到/mnt/westosdir及#目录中的子文件上 -R 代表第归操作
#chmod 字符方式设定权限chmod <a|u|g|o><+|-|=><r|w|x> file ##用字副方式设定文件权限示例:
chmod u-rw /mnt/lee2
chmod u-rw,g+x,o+wx /mnt/lee3
chmod a-rwx /mnt/lee4
chmod u=rwx,g=rx,o=--- /mnt/lee5
chmod -R u=rwx,g=rx,o=--- /mnt/timinglee#chmod 数字方式设定权限#
权限波尔指表示方式
rwx = 111
--- = 000
三位二进制可以表示的最大范围为8进至数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 600 /mnt/lee1rw-------
建立一个实验环境并用监控命令对命令结果进行对照:
关于chmod --reference=xxx xxx的用法实验:
可以看到xhm1中的权力从最开始的-rwxr-xr-x变成了与xhm2一样的权力-rw-r--r--
关于chmod <a|u|g|o><+|-|=><r|w|x> file的用法实例
可以看到xhm1上的权力由-rw-r--r--变成了-rwxr--r--也就是xhm1上user的权力由读写变成了读写执行,+就是增加权力,-相反,当然+或-后面可以增加多个权力(例如:g+rwx(group的权力增加读写执行)、o+rx(other的权力增加读与执行))。也可以多位一起进行操作(例如:uo=rx(user和other的权力都增加读与执行))大家可以自行进行实验,示例太多就不放截图上来了。
chmod 数字方式设定权限,即权限波尔指表示方式首先我们可以将权限分为u、g、o三组,每组又可以分为rwx三个权限,而权限波尔指表示方式将这三权限看成二进制有这权限看成1,反之则看成0(例如:rwx为111---7 rw-为110---6 r-x为101---5 --x为001---1)由这方法得出的数就是与之对应的那一组的数字(如:-rw-r--r--,对应的数字就是644 -rwxrwxrwx,对应的数字就是777)
实验将xhm1的权力变为-rwxrwxrwx,如下:
5.系统默认权限设定
1)如何保留权力
# umask表示系统保留权力
umask #查看保留权力
umask 权限值 #临时设定系统预留权力#文件默认权限 = 777-umask-111#目录默认权限 = 777-umask#umask值越大系统安全性越高
#umask临时更改
umask 077
#永久更改
vim /etc/bashrc ##shell系统配置文件
74 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
75 umask 002 #普通用户的umask
76 else
77 umask 022 -- 077 #root用户的umask
78 fivim /etc/profile ##系统环境配置文件
59 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
60 umask 002 #普通用户的umask
61 else
62 umask 022 -- 077 #root用户的umask
63 fi
source /etc/bashrc ##source作用时使我们更改的内容立即被系统识别 source /etc/profile
6.系统中的特殊权限
1)SUID(Set UID)
当一个设置了 SUID 权限的程序被执行时,内核会将进程的有效用户 ID(Effective User ID)临时设置为文件所有者的用户 ID,而实际用户 ID(Real User ID)保持不变。这样,在程序执行期间,该进程就具有了文件所有者的权限。
即任何人在执行二进制可执行文件时都是以他的所有人身份运行
chmod 4原属性 filechmod u+s file实验:
su - lee
/bin/cat
ps ax -o user,group,comm | grep cat lee lee cat
#用root用户身份
chmod u+s /bin/watch
su - lee
/bin/cat
ps ax -o user,group,comm | grep cat root lee cat
实验如下:
首先用监控命令watch -n 1 "ps ax -o user,group,comm | grep cat ;ls -l /bin/cat"建立一个窗口
通过用户xhm对/bin/cat的运行我们可以得知二进制执行文件的所有人不会影响到用户的运行当中
而我们可以通过对user权力的更改,即设置了SUID,user权力由rwx变为了rws
如下(当然我们也可以用 chmod u+s /bin/cat来实现SUID的设置,有+号也就有-号):
为什么是4755:是因为我们可以将u、g、o看作二进制,然后将得出的数填到第一位当中(如:
-rwsrwsrw-是6776)
注意:
2)SGID(Set GID)
#sgid 强制位
#针对目录: 目录中新建的文件自动归属到目录的所属组中
设定:chmod 2源文件权限 dirchmod g+s dir实验
group testgroup
mkdir /mnt/public
chgrp testgroup /mnt/public
chmod 777 /mnt/public
lee ---> touch /mnt/public/file ##是谁建立的文件组就是谁的 chmod g+s /mnt/timinglee
lee ---> touch /mnt/public/file1 ##file1自动复制了/mnt/public目录组 #只针对二进制的可执
行文件(c程序)
#当运行二进制可执行文件时都是用文件拥有组身份运行,和执行用户无关实验:
su - lee
/bin/cat
watch -n 1 "ps ax -o user,group,comm | grep cat"
lee lee cat
用root用户身份
chmod g+s /bin/cat
su - lee
/bin/cat
ps ax -o user,group,comm | grep cat
lee root cat
注意:
3)Sticky Bit
#stickyid 粘制位
#针对目录: #如果一个目录stickyid开启,那么这个目录中的文件
#只能被文件所有人删除chmod 1原始权限 dirchmod o+t dir 实验:mkdir /pub
chmod 777 /pubsu - lee ----> touch /pub/leefile
exit
su - timinglee --------> touch /pub/timingleefile
rm -fr /pub/leefile #可以删除
rm -fr /pub/timingleefile #不属于自己的文件也可以删除
如何解决此问题:chmod 1777 /pub
chmod o+t /pub
以上两条命令都可以开启pub目录的t权限
su - timinglee ----> touch /pub/timingleefile
exit
su - lee --------> touch /pub/leefile
rm -fr /pub/leefile #可以删除
rm -fr /pub/timingleefile #不属于自己的文件不能删除
rm: cannot remove 'timingleefile': Operation not permitted
注意: