概述
Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux 对不同用户访问同一文件(包括目录文件)的权限做了详细的规定。
文件属性查看
在 Linux 中,我们通常使用 `ls -l` 或 `ll` 命令来显示一个文件的属性以及文件所属的用户和组:
[root@www /]# ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
在输出结果中,“bin”文件的第一个属性用“d”表示,这意味着它是一个目录文件。在 Linux 中,文件类型的第一个字符表示该文件是目录、文件或其他类型的文件:
- `d`: 目录
- `-`: 普通文件
- `l`: 链接文件
- `b`: 块设备文件
- `c`: 字符设备文件
文件权限表示
每个文件的属性由左边第一部分的 10 个字符来确定:
- 第 0 位确定文件类型
- 第 1-3 位确定文件所有者的权限
- 第 4-6 位确定文件所属组的权限
- 第 7-9 位确定其他用户的权限
每个位置上的字符表示具体的权限:
- `r`: 可读
- `w`: 可写
- `x`: 可执行
- `-`: 无此权限
文件属主和属组
每个文件都有一个特定的所有者,即对该文件具有所有权的用户。同时,用户是按组分类的,一个用户可以属于一个或多个组。文件所有者以外的用户又可以分为文件所属组的同组用户和其他用户。Linux 按文件所有者、同组用户和其他用户来规定不同的文件访问权限:
[root@www /]# ls -l
total 64
drwxr-xr-x 2 root root 4096 Feb 15 14:46 cron
drwxr-xr-x 3 mysql mysql 4096 Apr 21 2014 mysql
在这个例子中,“mysql”目录的属主和属组都是“mysql”,属主有可读、可写、可执行的权限;同组用户和其他用户有可读和可执行的权限。
更改文件属性
1. `chgrp`:更改文件属组
语法:
chgrp [-R] 属组名 文件名
参数:
- `-R`:递归更改文件属组
##### 2. `chown`:更改文件所有者和属组
语法:
chown [–R] 所有者 文件名
chown [-R] 所有者:属组名 文件名
示例:
[root@www ~]# cd ~
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
3. `chmod`:更改文件权限
Linux 文件权限有两种设置方法:数字和符号。
-数字类型
- 每个权限对应一个数字:`r=4`, `w=2`, `x=1`
- 示例:
-rwxrwx--- 分数为:770
- 语法:
chmod [-R] xyz 文件或目录
参数:
- `xyz`: 数字类型的权限属性
- `-R`: 递归更改
符号类型
- 用 `u` (用户)、`g` (组)、`o` (其他) 和 `a` (全部) 来表示身份。
- 用 `+` (添加)、`-` (移除)、`=` (设置) 来修改权限。
- 示例:
# 设置权限为 -rwxr-xr--
chmod u=rwx,g=rx,o=r test1
实例操作
# 创建 test1 文件
touch test1
# 查看 test1 默认权限
ls -al test1
# 修改 test1 权限
chmod u=rwx,g=rx,o=r test1
# 查看修改后的权限
ls -al test1
# 去掉全部人的可执行权限
chmod a-x test1