一.权限查看及读取

1)权限查看

ls -l file            查看文件权限

ls -ld dir           查看目录权限

2)权限的读取

“文件的属性被叫做文件的元数据(meta data)” “一种元数据用1个byte来记录内容”

文件权限信息

– | rw-r–r– | . | 1 | root | root | 0 | Apr 12 10:57 | westos

目录权限信息

d | rw-r–r– | . | 2 | root | root | 0 | Apr 12 10:57 | westosdir

对于每一位的解释

[1]      文件类型 (- 普通文件/d 目录 /l 软连接 /b 快设备 /c 字符设备 /s socket套接字 /p 管道 |)

[2]      用户权限 rw-|r–|r–

[3]       系统的selinux开启

[4]       对于文件:文件内容被系统记录的次数(硬链接个数)

对于目录:目录中子目录的个数

[5]      文件拥有者

[6]      文件拥有组

[7]      对于文件:文件内容大小   对于目录:目录中子文件的元数据大小

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

[9]     文件名

二.普通权限的类型及作用

1)用户对文件的身份

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

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

o:             other 既不是拥有者也不是拥有组成员的其他用户的通称

2)权限位

rwx|r–|r–

3)用户身份匹配

user>group>other

4)权限类型

–             权限未开启

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

w             可写    对于文件:可以更改文件内容       对于目录:可以在目录中新建或者删除文件

x              可执行 对于文件:可以用文件名称调用文件内记录的程序     对于目录:可以进入目录中

三.设定普通权限的方法

chmod              设定文件权限

chmod              复制权限

chmod –reference=/mnt/ /mnt/westosdir/file      复制/mnt/目录权限到/mnt/westosdir/file文件上

chmod -R –reference=/tmp /mnt/westosell/       复制/tmp目录的权限到/mnt/westosell及目录中的                                                                               子文件上 (-R 代表第归操作)

chmod              字符方式设定权限

chmod <u+/-/=> | <o+/-/=>  <o+/-/=> file        用字符方式设定文件权限

示例: chmod u-rw /mnt/westos1

chmod u-rw,g+x,o+wx /mnt/westos2

chmod a-rwx /mnt/westos3

chmod u=rwx,g=rx,o= — /mnt/westos4

chmod -R u=rwx,g=rx,o=— /mnt/westosdir/

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/westos1        rw——-

四.系统默认权限设定

系统本身存在的意义共享资源

从安全角度讲系统共享的资源越少,开放的权力越小系统安全性越高

既要保证系统安全,又要系统创造价值,于是把应该开放的权力默认开放 ,把不安全的权力默认保留

如何保留权力

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 fi

vim /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作用是使我们更改的内容立即被系统识别

source /etc/bashrc

source /etc/profile

/etc/bashrc         shell系统配置文件    更改前

/etc/bashrc         shell系统配置文件       更改后

vim /etc/profile            系统环境配置文件     更改前

vim /etc/profile            系统环境配置文件     更改后

五.文件用户用户组管理

chown username file                      更改文件拥有者

chgrp groupname file                     更改文件拥有组

chown username:groupname file  同时更改文件的拥有者和拥有组

chown|chgrp -R user|group dir      更改目录本身及目录中内容的拥有者或者拥有组

 六.特殊权限

stickyid                  粘制位

针对目录: 如果一个目录stickyid开启,那么这个目录中的文件 ,只能被文件所有人删除

chmod 1 原始权限 dir —–>   chmod o+t dir

实验

mkdir /mnt/pub

chmod 777 /pub

su – westos —-> touch /pub/file{1..2}

exit

su – lee —–> touch /pub/file{3..4}

rm -fr /pub/file1               自己的文件可以删除

rm -fr /pub/file3               不属于自己的文件也可以删除

如何解决此问题:

执行这两条指令任意一条: chmod 1777 /pub        chmod o+t /pub(作用相同)

以上两条命令都可以开启pub目录的t权限

su – westos —-> touch /pub/westosfile

exit su – lee —-> touch /pub/leefile

rm -fr /pub/file1            自己的文件可以删除

rm -fr /pub/file3            不属于自己的文件不能删除

报错:rm: cannot remove ‘westosfile’ : Operation not permitted

sgid          强制位

针对目录: 目录中新建的文件自动归属到目录的所属组中

设定:

chmod g+s dir

实验:

groupadd westoste

mkdir /mnt/pub

chmod 777 /mnt/pub

watch -n 1 “ls -ld /mnt/pub;ls -l /mnt/pub”

westos —> touch /mnt/publ/file{1..2}       是谁建立的文件组就是谁的

chmod g+s /mnt/pub

westos —> touch /mnt/public/file3     file3自动复制了/mnt/pub目录组

只针对二进制的可执行文件(c程序)

当运行二进制可执行文件时都是用文件拥有组身份运行,和执行用户无关

实验:

su – westos

/bin/cat

watch -n 1 “ps ax -o user,group,comm | grep cat”

westos westos cat

用root用户身份

chmod g+s /bin/cat

su – westos /bin/cat

ps ax -o user,group,comm | grep cat westos root cat

suid         冒险位

只针对二进制的可执行文件(c程序)

当运行二进制可执行文件时都是用文件拥有者身份运行,和执行用户无关

chmod 4原属性 file

chmod u+s file

实验:

su – westos

/bin/cat

ps ax -o user,group,comm | grep cat

用root用户身份

chmod u+s /bin/cat

su – westos

/bin/cat

ps ax -o user,group,comm | grep cat

七.acl权限列表

Aiccess Control Lists        访问控制列表

功能: 在列表中可以设定特殊用户对与特殊文件有特殊权限

acl列表开启标识

-rwxrwx— 1 root caiwu 0 Mar 18 09:03 westosfile             没有”+”代表acl列表未开启

-rwxrwx—+ 1 root root 0 Mar 18 09:03 westosfile              有“+” acl列表功能开启

acl列表权限读取

getfacl /mnt/westos

显示内容分析

file: /mnt/westos         文件名称

owner: root                 文件拥有者

group: root                文件拥有组

user::rwx                    文件拥有者权限

user:lee:rwx                特殊指定用户权限

group::—                    文件拥有组权限

mask::rwx                   能够赋予特殊用户和特殊用户组的最大权限阀值

other::—                     其他人的权限

注意:当文件权限列表开启,不要用ls -l 的方式来读取文件的权限,这时候ls -l命令查看的文件权

限信息不准确

acl列表的控制

setfacl -m u:lee:rwx /mnt/westos                 设定

setfacl -m u:westos:0 /mnt/westos

setfacl -m g:lee:rwx /mnt/westos

setfacl -x g:lee /mnt/westos

setfacl -x u:lee /mnt/westos                       删除列表中的lee

setfacl -b /mnt/westos                            关闭

 

acl 权限优先级

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

acl mask 控制

mask是能够赋予指定用户权限的最大阀值

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

恢复:setfacl -m m:权限 文件         setfacl -m m::rwx /mnt/westos

acl 列表的默认权限

setfacl -m u:westos:rwx /mnt/westos              只对于/westos目录本身生效

setfacl -Rm u:westos:rwx /mnt/dir           对于/mnt/westos目录和目录中已经存在的内容生效

注意:以上的命令只针对与存在的文件生效,新建文件是不会被设定的

setfacl -m d:u:westos:rwx /mnt/westos/           针对与/mnt/westos目录中新建文件生效

八.attr权限

attr权限限制所有用户

i                      不能作任何的更改

a                     能添加不能删除

lsattr -d /mnt/dir/                         查看attr权限

chattr +i|+a|-i|-a /mnt/dir/        设定attr权


云野 » Linux系统中的权限管理

发表回复