Linux入门之访问控制权限及文件的权限管理

知识简介

  • Linux系统根据用户对文件的权限将系统中的所有用户分为:所有者,同组用户,其他用户三类;并为这三类用户分别设定所需的文件操作权限。

——用户分类:

  • “ u ”:——文件拥有者
  • “ g ”:——文件属组(文件归属的群组)
  • “ o ”:——其他用户

注:当用户输入“ l l ”或者“ ls -l”命令查看文件信息时,可以看到如下信息:drwxrwxr-x ;字符串左数第一位(d)表示文件类型,除去第一位后的左三位表示拥有者的权限(rwx),中三位表示属组成员的权限,后三位表示其他用户的权限

——权限分类:

  • “ r ”:——读取权限
  • “ w ”:——写入权限
  • “ x ”:——执行权限
  • “ - ”:——空权限

在这里插入图片描述

文件属性管理

  • 我们可以使用“ chmod ”命令来对文件的各项权限进行修改。如:“chmod u+x 文件名 ”(也可以用二进制法代替“ u+x ")即可完成对拥有者用户执行权限的增加。

注:二进制法即利用二进制形式表示权限,” 777 “即表示” rwxrwxrwx ",“ 421 ”即表示“ r—w---x ”

  • 还可以使用“ chgrp ”命令来更换文件的属组。如:“ chgrp -R 新属组 文件名“即可完成属组更改。

文件权限管理

针对文件的普通权限可以用chmod命令更改,实例如下:

首先利用” chmod u+x file1 “命令为文件拥有者添加一个对文件file1的执行权限;然后输入” chmod 0664 file1 “命令用二进制法删除文件拥有者对文件file1的执行权限。

liuyan@liuyan-virtual-machine:~/Desktop/Text/practice$ ls
file1  file2  file3
liuyan@liuyan-virtual-machine:~/Desktop/Text/practice$ ll -d file1
-rw-rw-r-- 1 liuyan liuyan 0 2月  28 18:22 file1
liuyan@liuyan-virtual-machine:~/Desktop/Text/practice$ sudo chmod u+x file1
liuyan@liuyan-virtual-machine:~/Desktop/Text/practice$ ll -d file1
-rwxrw-r-- 1 liuyan liuyan 0 2月  28 18:22 file1*
liuyan@liuyan-virtual-machine:~/Desktop/Text/practice$ sudo chmod 0664 file1
liuyan@liuyan-virtual-machine:~/Desktop/Text/practice$ ll -d file1
-rw-rw-r-- 1 liuyan liuyan 0 2月  28 18:22 file1
liuyan@liuyan-virtual-machine:~/Desktop/Text/practice$ 

利用umask命令更改新建文件或目录的默认权限,实例如下:

注:普通用户umask的值为0002,root用户umask的值为0022,可通过” umask -p 新umask值“更改umask的值。

liuyan@liuyan-virtual-machine:~/Desktop/Text/practice$ umask
0002
liuyan@liuyan-virtual-machine:~/Desktop/Text/practice$ umask -p 0022
liuyan@liuyan-virtual-machine:~/Desktop/Text/practice$ umask
0022
liuyan@liuyan-virtual-machine:~/Desktop/Text/practice$ 

注:新建文件的权限为666-umask(即rw-rw-r–),新建目录的权限为777-umask(即rwxrwxr-x)

Linux文件系统上的特殊权限
为了更方便,高效以及安全的控制文件,Linux操作系统引入了一组特殊权限。
suid 作用二进制文件所属者的身份运行
suid借用文件拥有者(u)权限中的最后一位(x),并用s来表示;当文件拥有者具有执行权限(x)时且该文件拥有特殊权限suid,则用小写字母s来表示即rws,若无执行权限则用大写字母S表示

sgid 作用目录新建文件集成父母的属组
sgid借用文件群组权限(g)中的最后一位(x),并用s来表示

sticky 作用目录此目录下谁创建仅创建者能删除
sticky借用文件其他用户(o)权限中的最后一位(x),并用t来表示

Linux下的访问控制权限

对于访问控制权限主要涉及到针对不同用户以及不同属组的权限控制问题,实例如下:

  • 在某目录下创建的新文件自动属于g1组,组g2的成员如:alice能对这些新文件有读写权限,组g3的成员如:tom只能对新文件有读权限,其它用户(不属于g1,g2,g3)不能访问这个文件夹。

首先利用groupadd命令创建g1,g2组;创建用户tom,alice并把他们加入到相应的组里同时设置密码。然后进入到目标目录利用getfacl命令查看相关信息。再利用“ setfacl -Rm group:g1:rw- 目标文件"命令设置权限。

root@liuyan-virtual-machine:/dev/TTT# groupadd g1
root@liuyan-virtual-machine:/dev/TTT# groupadd g2
root@liuyan-virtual-machine:/dev/TTT# useradd -G g1 -m alice
root@liuyan-virtual-machine:/dev/TTT# useradd -G g2 -m tom
root@liuyan-virtual-machine:/dev/TTT# passwd alice
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
root@liuyan-virtual-machine:/dev/TTT# passwd tom
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
root@liuyan-virtual-machine:/dev/TTT# mkdir ooo
root@liuyan-virtual-machine:/dev/TTT#chmod g+s ./ooo
root@liuyan-virtual-machine:/dev/TTT# ls
ooo
root@liuyan-virtual-machine:/dev/TTT# getfacl ooo
# file: ooo
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

root@liuyan-virtual-machine:/dev/TTT# setfacl -Rm group:g1:rw- ./ooo
root@liuyan-virtual-machine:/dev/TTT# getfacl ooo
# file: ooo
# owner: root
# group: root
user::rwx
group::r-x
group:g1:rw-
mask::rwx
other::r-x

这时,切换到alice用户,测试权限。

alice@liuyan-virtual-machine:~$ cd /dev/TTT
alice@liuyan-virtual-machine:/dev/TTT$ ls
ooo
alice@liuyan-virtual-machine:/dev/TTT$ cd ooo
-su: cd: ooo: Permission denied
alice@liuyan-virtual-machine:/dev/TTT$ 

由于未分配该用户执行权限,导致无法访问该文件目录,需要再次利用setfacl命令添加执行权限。(注意该权限不可被继承)

root@liuyan-virtual-machine:/dev/TTT# setfacl -m group:g1:rwx ./ooo

再次登入alice用户,查看权限是否只正确,同时利用getfacl命令查看相关信息。

alice@liuyan-virtual-machine:/dev/TTT$ cd ooo
alice@liuyan-virtual-machine:/dev/TTT/ooo$ touch file1
alice@liuyan-virtual-machine:/dev/TTT/ooo$ ls
file1
alice@liuyan-virtual-machine:/dev/TTT/ooo$ getfacl file1 
# file: file1
# owner: alice
# group: alice
user::rw-
group::rw-
group:g1:rw-
mask::rw-
other::r--
alice@liuyan-virtual-machine:/dev/TTT/ooo$ 

现在现需要更改tom用户的权限原理同上。

root@liuyan-virtual-machine:/dev/TTT# setfacl -Rm user:tom:r-- ./ooo

切换tom用户查看权限是否有误。

alice@liuyan-virtual-machine:/dev/TTT/ooo$ su - tom
Password: 
tom@liuyan-virtual-machine:~$ cd /dev/TTT/
tom@liuyan-virtual-machine:/dev/TTT$ ls
ooo
tom@liuyan-virtual-machine:/dev/TTT$ getfacl ./ooo/
# file: ooo/
# owner: root
# group: root
user::rwx
user:tom:r--
group::r-x
group:g1:rwx
mask::rwx
other::r-x

同样为tom用户添加执行权限。(不可被继承)

root@liuyan-virtual-machine:/dev/TTT# setfacl -m user:tom:r-x ./ooo

最后检查各用户的权限信息。

tom@liuyan-virtual-machine:/dev/TTT$ cd ooo/
tom@liuyan-virtual-machine:/dev/TTT/ooo$ ls
file1
tom@liuyan-virtual-machine:/dev/TTT/ooo$ touch file2
touch: cannot touch 'file2': Permission denied
  • 备份某目录下所有文件的ACL权限到/root/acl.txt中,清除该目录中所有ACL权限,最后还原ACL权限。

首先在目标目录创建文件,然后利用getfacl命令将acl信息写入到相关目录。

root@liuyan-virtual-machine:/dev/TTT/ooo# touch file{1..3}
root@liuyan-virtual-machine:/dev/TTT/ooo# ls
file1  file2  file3
root@liuyan-virtual-machine:/dev/TTT/ooo# cd ..
root@liuyan-virtual-machine:/dev/TTT# getfacl -R ./ooo > ./ppp/acl.txt
root@liuyan-virtual-machine:/dev/TTT# cd ppp
root@liuyan-virtual-machine:/dev/TTT/ppp# ls
acl.txt
root@liuyan-virtual-machine:/dev/TTT/ppp# cat acl.txt 
# file: ooo
# owner: root
# group: root
user::rwx
user:1002:r-x
group::r-x
group:g1:rwx
mask::rwx
other::r-x

利用chmod命令更改某一文件的权限信息,同时输入setfacl --restore命令恢复被修改的权限信息

root@liuyan-virtual-machine:/dev/TTT/ppp# cd ../ooo
root@liuyan-virtual-machine:/dev/TTT/ooo# ls
file1  file2  file3
root@liuyan-virtual-machine:/dev/TTT/ooo# ll -d file1
-rw-r--r-- 1 root root 0 2月  28 20:05 file1
root@liuyan-virtual-machine:/dev/TTT/ooo# chmod 000 file1
root@liuyan-virtual-machine:/dev/TTT/ooo# ll -d file1
---------- 1 root root 0 2月  28 20:05 file1
root@liuyan-virtual-machine:/dev/TTT/ooo# cd ../
root@liuyan-virtual-machine:/dev/TTT# setfacl --restore ./ppp/acl.txt
root@liuyan-virtual-machine:/dev/TTT# cd ooo
root@liuyan-virtual-machine:/dev/TTT/ooo# ll -d file1
-rw-r--r-- 1 root root 0 2月  28 20:05 file1
root@liuyan-virtual-machine:/dev/TTT/ooo# 

发布了15 篇原创文章 · 获赞 18 · 访问量 741

猜你喜欢

转载自blog.csdn.net/qq_42452450/article/details/104554829