zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Linux基本权限 | 高级权限管理

2023-02-18 16:38:31 时间

文章目录

文件系统基本权限和高级权限管理

1 文件的基本权限:r w x (UGO)

2 文件的特殊权限:suid sgid sticky 和文件扩展权限 ACL

3 实战:创建一个让 root 都无法删除的文件

文件的基本权限

权限的作用

通过对文件设定权限可以达到以下三种访问限制权限:

  • 只允许用户自己访问
  • 允许一个预先指定的用户组中的用户访问
  • 允许系统中的任何用户访问

查看权限

[kiosk@foundation0 ~]$ ll /etc/passwd
-rw-r--r--. 1 root root 2618 Nov 16  2020 /etc/passwd
文件权限基本解释

文件类型, 可以为 p、d、l、s、c、b 和 –

p 表示命名管道文件
d 表示目录文件
l 表示符号链接文件
- 表示普通文件
s 表示 socket 套接口文件,比如我们启用 mysql 时,会产生一个 mysql.sock 文件
c 表示字符设备文件,例: 虚拟控制台 或 tty0
b 表示块设备文件 例: sda, cdrom
[kiosk@foundation0 ~]$ ll /dev/vcs /dev/cdrom /etc/passwd /dev/tty0
lrwxrwxrwx. 1 root root    3 Nov 20 14:00 /dev/cdrom -> sr0
crw--w----. 1 root tty  4, 0 Nov 20 14:00 /dev/tty0
crw-rw----. 1 root tty  7, 0 Nov 20 14:00 /dev/vcs
-rw-r--r--. 1 root root 2618 Nov 16  2020 /etc/passwd

权限说明

对于文件来说

  • r:读
  • w:写
  • x:执行

对于目录来说

  • r:读(看到目彔里面有什么) ls
  • w:在目录里面建文件,删除,移动 touch mkdir rm mv cp
  • x:进入 cd cat

文件拥有者

  • UGO:所有者–用户组–其它用户
  • 所有者: 就是创建文件的用户,这个用户拥有对它所创建的文件的一切权限,所有者可以允许其所在的用户组可以访问所有者的文件。
  • 用户组: 用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户迚行文件访问授权,如果有 10 个用户的话,就需要授权 10 次,显然这种方法丌太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那举所有用户就具有了和组一样的权限这就是用户组。
  • 其它用户:系统内的其他所有者用户就是 other 用户类

举例说明

常见几种文件权限组成
- rwx --- ---  文件所有者对文件具有读取、写入和执行的权限。
- rwx r-- r--  文件所有者具有读、写不执行的权限,用户组里用户及其他用户则具有读取的权限
- rw- rw- r-x  文件所有者不同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
d rwx --x --x  目彔所有者具有读写不迚入目录的权限,其他用户近能迚入该目录,却无法读取任何数据。
d rwx --- ---  除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。

1) 每个用户都拥有自己的与属目彔,通常放置 /home 下

[kiosk@foundation0 ~]$ ll /home/
total 4
drwx------. 19 kiosk kiosk 4096 Nov 20 14:04 kiosk

# 注:[rwx------] 表示目录所有者本身拥有的权限,其它用户是无法进入的, root可以.

2) 你以什么用户身份登录,那么你创建的文件和目录,自动成为该文件的所属主和组

[kiosk@foundation0 ~]$ touch file1.txt
[kiosk@foundation0 ~]$ ll file1.txt
-rw-rw-r--. 1 kiosk kiosk 0 Nov 21 05:22 file1.txt
更改文件的属主和属组

改变文件的所属关系用到命令

  • chown:可以用来改变文件(或目录)的属主
  • chgrp:可以用来改变文件(或目彔)的默认属组
  • 如果要对目录进行操作,加选项 -R
语法:
    chown user:group filename 比如:chown hr:san a.txt 把文件的属主和属组改为 hr,san
    chown user filename 比如:chown san a.txt 把文件的属主改为 san 用户
    chown :group filename 比如: chown :miao a.txt 把文件的属组改为 miao 这个组
    chown user: filename 比如:chown san: a.txt 自动继承这个用户所有的组
    chgrp hr filename 比如: chgrp hr f.txt 
    -R : 递归(目录下的所有内容都更改,否则只修改目录)

一个文件只有读的权限,拥有者是否可以写这个文件?

[kiosk@foundation0 ~]$ touch a.txt

[kiosk@foundation0 ~]$ ll a.txt 
-rw-rw-r--. 1 kiosk kiosk 0 Nov 21 05:27 a.txt

[kiosk@foundation0 ~]$ echo hello > a.txt 

[kiosk@foundation0 ~]$ cat a.txt 
hello

# 在另一个终端上,以 root 身份登录
[kiosk@foundation0 ~]$ su -

[root@foundation0 ~]# chmod 000 /home/kiosk/a.txt

[root@foundation0 ~]# ll /home/kiosk/a.txt 
----------. 1 kiosk kiosk 6 Nov 21 05:27 /home/kiosk/a.txt

# 回到以 kiosk 身份登彔的终端
[kiosk@foundation0 ~]$ echo demo >> a.txt 
bash: a.txt: Permission denied

# 在另一个终端上,以 root 身份登录
[root@foundation0 ~]# cat /home/kiosk/a.txt 
hello

[root@foundation0 ~]# echo demo >> /home/kiosk/a.txt 

[root@foundation0 ~]# cat /home/kiosk/a.txt 
hello
demo