5_权限管理

前言:
文件、目录权限说明
修改文件属性和权限
隐藏权限(如设置不可删除,root也不能删除)
特殊权限 facl(简单说明)


注:“这个”好像对md引用大量代码块,显示会有问题,引用的图床图片 大小缩放 也有点问题
所以,看的排版、或代码块有问题看的不舒服;
可以去 更新相同文章的 csdn查看 或 自搭博客
csdn 点击跳转
自搭博客跳转_1(github+hexo)跳转_2(apche+hexo)

导图

ydcNYF.png

基本权限

文件:
  • r
    可读,可以使用类似cat等命令查看文件内容;
    r单独存在,可查看文件内容

  • w
    可写,可以编辑或删除此文件;
    w单独存在,看不到文件内容,但是可以强制修改文件内容,会覆盖原文件内容,单独存在,意义不大

  • x
    可执行,executable,可以命令提示符下当作命令提交给内核运行;
    x单独存在,毫无意义
目录:
  • r
    可以对此目录执行ls以列出内部的所有文件;
    只有r权限时,可以读(有报错),不能写,也不能进入目录

  • w
    可以在此目录创建、修改、删除文件;
    只有w权限时,毫无意义

  • x
    可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息;
    只有x权限时,只能进入,不能读,不能写

  • rw
    可以查看内容,不可以进入目录,不能删除目录或它里面的文件

  • rx
    可以查看内容,可以进入目录,不可以修改目录的内容

  • wx
    不可以查看目录内容,可以进入目录,可以删除
查看文件的权限

]# ls -ld test.txt
-rw-r--r-- 1 root root 4 2月 3 18:25 test.txt

  • 权限针对的三类用户:
- - -
u user 属主
g group 属组
o other 其它用户
  • ls -l 命令显示的意义
    yd9BtK.png

]# ls -ld test.txt
-rw-r--r-- 1 root root 4 2月 3 18:25 test.txt

第一栏
这个文件的类型与权限
第一个字符代表这个文件是“目录、文件或链接文件等等”:
[d]是目录
[-]是文件
[l]为链接文件(link file)
[b]为设备文件里面的可供储存的周边设备(可随机存取设备)
[c]则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设备)

eg:“-rwxr-xr--”意义
这个文件是类型是“文件”
所有者:可读、可写、可执行(rwx)
所属组:本例中为可读可执行(rx)
其他人:只读

第二栏表示有多少文件名链接到此节点
每个文件都会将他的权限与属性记录到文件系统的i-node中,
不过,我们使用的目录树却是使用文件名来记录,
因此每个文件名就会链接到一个inode
这个属性记录的,就是有多少不同的文件名链接到相同的一个inode号码

第三栏表示这个文件(或目录)的“拥有者账号”

第四栏表示这个文件的所属群组

第五栏表示这个文件的容量大小,默认单位是Bytes(字节)
1KB(Kilobyte 千字节)=1024B,
1MB (Megabyte 兆字节 简称“兆”)=1024KB,
1GB (Gigabyte 吉字节 又称“千兆”)=1024MB,
1TB(Trillionbyte 万亿字节 太字节)=1024GB。 PB
注意:Byte是“字节数”,bit是“位数”,在计算机中每八位为一字节,
也就是1 Byte=8 bit,是1:8的对应关系。道因此在书写单位时一定要注意B字母的大小写和含义。

第六栏表示这个文件的创建日期或者是最近修改日期。
如果这个文件被修改的时间距离现在太久了,那么时间部分会仅显示年份而已。

第七栏为这个文件的文件名


修改文件的属性和权限

chgrp :改变文件所属群组
chown :改变文件拥有者
chmod :改变文件的权限, SUID, SGID, SBIT等等的特性

  • 改变文件的拥有者;将test.txt文件的拥有者改为test用户
    # chown test test.txt

  • 将文件的小组改为test
    # chown :test test.txt

  • 用chown同时改变拥有者和所属组
    # chown test:test test.txt

  • 修改文件权限

]# ll test.txt
-rw-r--r-- 1 root root 0 Feb 9 16:39 test.txt

]# chmod u+x test.txt
]# ll test.txt
-rwxr--r-- 1 root root 0 Feb 9 16:39 test.txt

]# chmod g-r test.txt
]# ll test.txt
-rwx---r-- 1 root root 0 Feb 9 16:39 test.txt

]# chmod o+wx test.txt
]# ll test.txt
-rwx---rwx 1 root root 0 Feb 9 16:39 test.txt

更改权限方面也可以使用数字来代表权限
r:4 w:2 x:1

]# ll test.txt
-rw-r--r-- 1 root root 0 Feb 9 16:39 test.txt
]# stat -c '%n %a' test.txt
test.txt 644

]# chmod 755 test.txt
]# ll test.txt
-rwxr-xr-x 1 root root 0 Feb 9 16:39 test.txt
]# stat -c '%n %a' test.txt
test.txt 755


隐藏权限

除了基本r, w, x权限外,
在Linux传统的Ext2/Ext3/Ext4文件系统下,
我们还可以设置其他的系统隐藏属性。

这部分可使用 chattr 来设置,而以lsattr 来查看,

最重要的属性就是可以设置其不可修改的特性!让连文件的拥有者都不能进行修改!
这个属性可是相当重要的,尤其是在安全机制上面(security)!
但是 xfs 就没有支持所有的 chattr 的参数了!仅有部份参数还有支持而已!

默认权限

umask
指定在建立文件时预设的权限掩码
(目前使用者在创建文件或目录时候的权限默认值)

]# umask
0022
]# umask -S
u=rwx,g=rx,o=rx

创建文件时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r-- -->644
创建目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x ---->755

隐藏权限

查看文件的隐藏权限
]# lsattr test.txt
---------------- test.txt

更改文件的隐藏权限

  • 语法
    chattr <选项> <参数>

  • 选项
选项 描述
a 让文件或目录仅供附加用途
b 不更新文件或目录的最后存取时间
c 将文件或目录压缩后存放
d 将文件或目录排除在倾倒操作之外
i 不得任意更动文件或目录
s 保密性删除文件或目录
S 即时更新文件或目录
u 预防意外删除
  • 设置一个文件不能删除、重命名、修改,只能查看

]# chattr +i test.txt

]# lsattr test.txt
----i----------- test.txt

//删除
]# rm -rf test.txt
rm: cannot remove ‘test.txt’: Operation not permitted

//重命名
]# mv test.txt test1.txt
mv: cannot move ‘test.txt’ to ‘test1.txt’: Operation not permitted

//修改
]# echo add >> test.txt
-bash: test.txt: Permission denied

  • 设置一个文件内容只能追加,不能覆盖。

]# cat test.txt
test1

]# chattr +a test.txt
]# lsattr test.txt
-----a---------- test.txt

//追加
]# echo test2 >> test.txt
]# cat test.txt
test1
test2

]# echo test3 > test.txt
-bash: test.txt: Operation not permitted

//删除
]# rm -rf test.txt
rm: cannot remove ‘test.txt’: Operation not permitted


特殊权限和Facl

SUID:

运行某程序时,相应进程的属主是程序文件自身的属主,
而不是用户本身,只对二进制程序有效;
执行者对于程序需要有 <kbd>x</kbd> 权限;

  • 详细 略
SGID:

对于文件:
运行某程序时,相应进程的属组是程序文件自身的属组,而不是用户本身的基本组

对于目录:
用户对此目录有rx权限可以进入目录
用户进入此目录后,有效用户组会变成该目录的用户组
若用户在此目录有w权限,则用户创建的文件用户组与该目录用户组相同

  • 详细 略
Sticky (BIT):

只针对目录有效,当用户对目录拥有wx权限时,
用户在该目录创建的文件或目录,只有自己与root才可以删除

在一个公共目录,每个人都可以创建文件,删除自己的文件,但是不能删除别人的文件

  • 详细 略
FACL

文件系统访问控制列表
FACL:filesystem access control list
利用文件的扩展属性,保存了额外的访问控制权限

getfacl 查看
setfacl 设置

  • 语法
    setfacl [-bkRd] [-m|-x acl 参数] 目标文件名
选项 描述
-m 设置后续的acl参数,不可与-x一起使用
-x 删除后续的acl参数,不可与-m一起使用
-b 删除所有的acl参数
-k 删除默认的acl参数
-R 递归设置acl参数
-d 设置默认acl参数,只对目录有效

eg:
用户userA 对 “/test/abc.txt” 文件有读和写的权限;
用户userB对 “/test/abc” 文件没有任何权限;
其他人只有读的权限

[root@yun test]# touch test_archives_1.txt

[root@yun test]# getfacl test_archives_1.txt
file: test_archives_1.txt
owner: root
group: root
user::rw-
group::r--
other::r--

[root@yun test]# useradd user1
[root@yun test]# useradd user2

[root@yun test]# echo 123 | passwd --stdin user1
Changing password for user user1.
passwd: all authentication tokens updated successfully.

[root@yun test]# echo 123 | passwd --stdin user2
Changing password for user user2.
passwd: all authentication tokens updated successfully.

//user1用户可读可写
[root@yun test]# setfacl -m u:user1:rw- test_archives_1.txt
//user2没有任何权限
[root@yun test]# setfacl -m u:user2:--- test_archives_1.txt

[root@yun test]# getfacl test_archives_1.txt
file: test_archives_1.txt
owner: root
group: root
user::rw-
user:user1:rw-
user:user2:---
group::r--
mask::rw-
other::r--

//验证user1有可读可写,user2没有任何权限
[root@yun test]# su user1
[user1@yun test]$ echo "user1-add" > test_archives_1.txt
[user1@yun test]$ cat test_archives_1.txt
user1-add
[user1@yun test]$ su user2
Password:
[user2@yun test]$ echo "user2-add" > test_archives_1.txt
bash: test_archives_1.txt: Permission denied
[user2@yun test]$ cat test_archives_1.txt
cat: test_archives_1.txt: Permission denied

猜你喜欢

转载自blog.51cto.com/15064563/2624736