Linux运维-文件系统基本权限和高级权限管理:权限管理工具使用技巧
发布时间: 2024-02-26 16:46:13 阅读量: 28 订阅数: 18
# 1. Linux文件系统基本权限管理
#### 1.1 文件与目录的权限概述
在Linux系统中,文件和目录都有各自的权限设置,分别用于控制文件的读取、写入和执行权限,以及目录的访问权限。权限设置包括所有者(owner)、所属组(group)和其他用户(others)三种身份,分别对应不同的权限。
文件权限以及目录权限的符号表示如下:
```bash
-rw-r--r-- 1 owner group 1024 Aug 10 10:00 file.txt
drwxr-xr-x 2 owner group 4096 Aug 10 11:00 directory
```
其中,第一列代表权限,以10个字符表示,第一个字符表示文件类型(-代表普通文件,d代表目录),后面分为3组,每组3个字符分别表示所有者、所属组和其他用户的权限。
- r(读取):表示可以读取文件内容或查看目录内的文件列表
- w(写入):表示可以编辑或向文件写入内容,以及在目录中创建、删除文件
- x(执行):对于文件表示可以执行,对于目录表示可以进入该目录
#### 1.2 chmod命令详解
`chmod`命令用于修改文件或目录的权限,其基本语法如下:
```bash
chmod [options] mode file
```
- options:附加选项,如-R递归修改
- mode:权限模式,可以用数字(如777)或符号(如u+rwx)表示
- file:需要修改权限的文件或目录
例如,要将`file.txt`的所有者赋予读写权限,可以使用以下命令:
```bash
chmod u+rw file.txt
```
#### 1.3 chown和chgrp命令的用法
`chown`命令用于修改文件或目录的所有者,`chgrp`命令用于修改文件或目录的所属组,其语法分别如下:
```bash
chown [options] owner[:group] file
chgrp [options] group file
```
- options:附加选项,如-R递归修改
- owner/group:新的所有者或所属组
- file:要修改的文件或目录
例如,将`file.txt`的所有者修改为`user1`,所属组修改为`group1`,可使用以下命令:
```bash
chown user1:group1 file.txt
```
# 2. Linux文件系统高级权限管理
在Linux系统中,除了基本的文件权限管理外,还有一些高级的权限管理方式可以帮助管理员更加灵活地控制文件和目录的访问权限。本章将介绍几种常见的高级权限管理方式。
### 2.1 setuid、setgid、sticky位介绍
#### setuid
当执行一个setuid的程序时,该程序会以文件所有者的权限来运行,而不是执行者的权限。这在某些情况下非常有用,比如`/bin/passwd`程序,普通用户无法直接修改`/etc/passwd`文件,但是通过setuid权限,可以让普通用户通过`passwd`命令修改自己的密码而无需root权限。
```shell
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 76968 Jan 1 10:10 /usr/bin/passwd
```
#### setgid
与setuid类似,setgid也是一种特殊权限,当一个文件拥有setgid权限时,该文件将以文件所属组的权限来执行。
```shell
$ ls -l /usr/bin/write
-rwxr-sr-x 1 root tty 8576 Jan 1 10:10 /usr/bin/write
```
#### sticky位
设置目录的sticky位可以防止普通用户删除其他用户创建的文件。当一个目录被设置了sticky位后,普通用户只能删除自己创建的文件。
```shell
$ ls -ld /tmp
drwxrwxrwt 2 root root 4096 Jan 1 10:10 /tmp
```
### 2.2 ACL(Access Control List)权限控制
除了基本的rwx权限外,ACL提供了更为细粒度的权限控制。通过ACL,可以为特定用户或用户组设置特定的权限,灵活地控制文件和目录的访问权限。
```shell
$ getfacl filename
$ setfacl -m u:username:permissions filename
```
### 2.3 umask设置和影响
umask是一种掩码,用于确定文件和目录的默认权限。umask
0
0