目录

Linux 文件权限

在日常使用中,有意无意都会与权限打上交道,例如执行命令遇到 permission denied 或者无法修改主目录以外的文件,这些问题都是由于没有足够的权限去进行操作造成的。

由于在 Linux 中「一切皆文件」,所有系统的资源都被抽象成了文件,使得对系统资源的权限管理可以和文件权限管理一样。在实际使用中,系统中的每个文件都从属于一个用户(属主)以及一个用户组(属组),每次用户访问文件时可以根据用户是否是文件属主用户、属组用户来匹配对应的访问权限。一般而言,随着访问范围的扩大,文件权限会逐渐收紧,例如 rwxr-x---:属主用户可写可读可执行,属组用户可读可执行,其他用户无权限。

一般而言,文件的权限不可设置的过于宽松,例如设置为 777,这会使系统存在安全风险,并且一些系统文件的权限不可随意更改,例如 /etc/sudoers

超级用户

在 Linux 系统中,超级用户(也称 root 用户)拥有至高无上的管理权力,可以访问系统中的所有文件,例如一般用户难以执行的 rm -rf /切勿尝试该命令)在超级用户的手中也可以轻松执行并删除整个系统根文件系统。

通常来说,超级用户只作为管理使用,使用非特权用户进行日常使用可以规避很多危险。在终端中,超级用户的提示符通常为「#」,而非特权用户为「$」。非特权用户虽然可以通过 susudo 临时提权,但是在多用户环境下,使用此类命令需要格外注意避免对其他已存在用户发生误操作。

权限表示

Linux 的文件权限使用 9 个权限位(bit)来对属主、属组和其他用户权限进行标识,例如 rwxrwxrwx。3 个权限位为一组,表示读(read)、写(write)、执行(execute)权限;共三组,表示属主(user)、属组(group)和其他用户(other)权限。其中每组权限位可以用八进制数来表示,具体如下表所示。

八进制数 权限说明 符号权限 二进制
7 读 + 写 + 执行 rwx 111
6 读 + 写 rw- 110
5 读 + 执行 r-x 101
4 只读 r-- 100
3 写 + 执行 -wx 011
2 只写 -w- 010
1 只执行 --x 001
0 --- 000

使用八进制的权限数可以与字符权限符号相互转换,例如在 755 权限中:属主用户权限为 7 = 4 + 2 + 1 = rwx;属组用户权限为 5 = 4 + 1 = r-x;其他用户权限为 5 = 4 + 1 = r-x