1.权限查看及读取
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--
# u g o
[3] ##系统的selinux开启
[4] ##对于文件:文件内容被系统记录的次数(硬链接个数)
##对于目录:目录中子目录的个数
[5] ##文件拥有者
[6] ##文件拥有组
[7] ##对于文件:文件内容大小
##对于目录:目录中子文件的元数据大小
[8] ##文件内容被修改的时间
[9] ##文件名称
2.普通权限的类型及作用
#1.用户对文件的身份#
u:
#user 文件的拥有者,ls -l 看到的第五列信息
g:
#group 文件拥有组, ls -l 看到的第六列信息
o:
#other 既不是拥有者也不是拥有组成员的其他用户的通称
#2.权限位#
rwx
|
r--
|
r--
u
g
o
#3.用户身份匹配#
user
>
group
>
other
#4.权限类型#
- #权限未开启
r #可读
#对于文件:可以读取文件内容
#对于目录:可以ls列出目录中的文件
w #可写
#对于文件:可以更改文件内容
#对于目录:可以在目录中新建或者删除文件
x #可执行
#对于文件:可以用文件名称调用文件内记录的程序
#对于目录:可以进入目录中

3.设定普通权限的方法
chmod ##设定文件权限
#chmod
复制权限
#
chmod
--
reference
=/
tmp
/
mnt
/
westosdir
##复制
/
tmp
目录的权限到
/
mnt
/
westosdir
上
chmod
-
R
--
reference
=/
tmp
/
mnt
/
westosdir
#复制
/
tmp
目录的权限到
/
mnt
/
westosdir
及目录中的子文件上
-
R
代表第归操作

#chmod 字符方式设定权限
chmod
<
a
|
u
|
g
|
o
><+|-|=><
r
|
w
|
x
>
file ##
用字副方式设定文件权限
示例
:
chmod u
-
rw
/
mnt
/
westos1
chmod u
-
rw
/
mnt
/
westosfile1
chmod u
-
rw,g
+
x,o
+
wx
/
mnt
/
westosfile2
chmod a
-
rwx
/
mnt
/
westosfile3
chmod u
=
rwx,g
=
rx,o
=--- /
mnt
/
westosfile4
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
/
westosfile1
rw
-------

4.系统默认权限设定
#系统本身存在的意义共享资源
#从安全角度讲系统共享的资源越少,开放的权力越小系统安全性越高
#既要保证系统安全,又要系统创造价值,于是把应该开放的权力默认开放
#把不安全的权力默认保留
#如何保留权力#
# 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`" ]; then75 umask 002 # 普通用户的 umask76 else77 umask 022 -- 077 #root 用户的 umask78 fi
vim / etc / profile ## 系统环境配置文件59 if [ $UID - gt 199 ] && [ "`id - gn`" = "`id - un`" ]; then60 umask 002 # 普通用户的 umask61 else62 umask 022 -- 077 #root 用户的 umask63 fi
source / etc / bashrc ##source 作用时使我们更改的内容立即被系统识别source / etc / profile
5. 文件用户用户组管理
chown username file ##更改文件拥有者
chgrp groupname file #更改文件拥有组
chown username:groupname file ##同时更改文件的拥有者和拥有组
chown|chgrp -R user|group dir ##更改目录本身及目录中内容的拥有者或者拥有组

6.特殊权限
#stickyid 粘制位
#
针对目录
:
#
如果一个目录
stickyid
开启
,
那么这个目录中的文件
#只能被文件所有人删除
chmod 1
原始权限
dir
chmod o
+
t dir
实验:
mkdir /pub
chmod 777 /pub
su - westos ----> touch /pub/westosfile
exit
su - lee --------> touch /pub/leefile
rm -fr /pub/leefile #可以删除
rm -fr /pub/westosfile #不属于自己的文件也可以删除

如何解决此问题:
chmod 1777 /pub
chmod o+t /pub
以上两条命令都可以开启pub目录的t权限
su - westos ----> touch /pub/westosfile
exit
su - lee --------> touch /pub/leefile
rm -fr /pub/leefile #可以删除
rm -fr /pub/westosfile #不属于自己的文件不能删除
rm: cannot remove 'westosfile': Operation not permitted

#sgid 强制位
#
针对目录
:
目录中新建的文件自动归属到目录的所属组中
设定
:
chmod 2
源文件权限 dir
chmod g
+
s dir
实验
group westoste
mkdir
/
mnt
/
pub
chmod
777
/
mnt
/
pub
westos
--->
touch
/
mnt
/
pub
/
file ##
是谁建立的文件组就是谁的
chmod g
+
s
/
mnt
/
westosdir
westos
--->
touch
/
mnt
/
public
/
file1 ##file1
自动复制了
/
mnt
/
public
目录组

#
只针对二进制的可执行文件
(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
筛选出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
westos westos cat
用
root
用户身份
chmod u
+
s
/
bin
/
watch
su
-
westos
/
bin
/
cat
ps ax
-
o user,group,comm
|
grep cat
root westos cat

7.acl权限列表
Aiccess Control Lists #访问控制列表
#
功能
:
#
在列表中可以设定特殊用户对与特殊文件有特殊权限
#acl列表开启标识-rw-rw----
.
1 root caiwu 0 Apr 18 09:03 westosfile
没有"+"代表acl列表未开启
-rw-rw----
+
1 root caiwu 0 Apr 18 09:03 westosfile
变为"+"则acl列表功能开启

#acl
列表权限读取
getfacl westosfile
显示内容分析
# file
:
westosfile #
文件名称
# owner
:
root #
文件拥有者
# group
:
root #
文件拥有组
user
::
rw
-
#文件拥有者权限
user
:
lee
:
rw
-
#特殊指定用户权限
group
::
r
--
#文件拥有组权限
group
:
westos
:---
#特殊指定的用户组的权限
mask
::
rw
-
#能够赋予特殊用户和特殊用户组的最大权限阀值
other
::
r
--
#其他人的权限

注意:
当文件权限列表开启,不要用ls -l 的方式来读取文件的权限
#acl
列表的控制
setfacl
-
m u
:
lee
:
rw westosfile #
设定

setfacl -m g:westos:rw westosfile
setfacl -m u::rwx westosfile

setfacl -m g::0 westosfile
setfacl -x u:lee westosfile ##删除列表中的lee
setfacl -b westosfile #关闭
#acl 权限优先级
拥有者
>
特殊指定用户
>
权限多的组
>
权限少的组
>
其他
#acl mask 控制
#mask
是能够赋予指定用户权限的最大阀值
问题
当设定完毕文件的
acl
列表之后用
chmod
缩小了文件拥有组的权力
mask会发生变化

恢复
:
setfacl
-
m m
:
权限
文件
#acl
列表的默认权限
setfacl
-
m u
:
lee
:
rwx
/
mnt
/
westosdir ##只对于
/
mnt
/
westosdir
目录本身生效
setfacl
-
Rm u
:
lee
:
rwx
/
mnt
/
westosdir ##对于
/
mnt
/
westosdir
目录和目录中已经存在的内容生效
#
以上的命令只针对与存在的文件生效
,
新建文件是不会被设定的
setfacl
-
m d
:
u
:
lee
:
rwx
/
mnt
/
westosdir
/
##
针对与
/
mnt
/
westosdir
目录中新建文件生效

8.attr权限
#attr权限限制所有用户
i
#不能作任何的更改
a #能添加不能删除
lsattr dir
|
file ##
查看
attr
权限
chattr
+
i
|+
a
|-
i
|-
a dir
|
file ##
设定
attr
权限