权限设置案例
针对hr部门的访问目录/home/hr设置权限,要求如下:
1.root用户和hr组的员工可以读、写、执行
2.其他用户没有任何权限
[root@bogon ~]# useradd hr1 -G hr
[root@bogon ~]# useradd hr2 -G hr
[root@bogon ~]# id hr1
uid=1007(hr1) gid=1012(hr1) 组=1012(hr1),1001(hr)
[root@bogon ~]# id hr2
uid=1008(hr2) gid=1013(hr2) 组=1013(hr2),1001(hr)
[root@bogon ~]# mkdir /home/hr
[root@bogon ~]# chgrp hr /home/hr
[root@bogon ~]# ll -d /home/hr
drwxr-xr-x. 2 root hr 6 8月 14 22:28 /home/hr
[root@bogon ~]#
[root@bogon ~]# chmod 770 /home/hr
[root@bogon ~]# ll -d /home/hr
drwxrwx---. 2 root hr 6 8月 14 22:28 /home/hr
rwx 权限对文件的作用
文件,是系统中用来存储数据的,包括普通的文本文件、数据库文件、二进制可执行文件,等等。不同的权限对文件的含义如表 1 所示。
表 1 rwx 权限对文件的作用
rwx 权限 | 对文件的作用 |
---|---|
读权限(r) | 表示可读取此文件中的实际内容,例如,可以对文件执行 cat、more、less、head、tail 等文件查看命令。 |
写权限(w) | 表示可以编辑、新增或者修改文件中的内容,例如,可以对文件执行 vim、echo 等修改文件数据的命令。注意,无权限不赋予用户删除文件的权利,除非用户对文件的上级目录拥有写权限才可以。 |
执行权限(x) | 表示该文件具有被系统执行的权限。Window系统中查看一个文件是否为可执行文件,是通过扩展名(.exe、.bat 等),但在 Linux 系统中,文件是否能被执行,是通过看此文件是否具有 x 权限来决定的。也就是说,只要文件拥有 x 权限,则此文件就是可执行文件。但是,文件到底能够正确运行,还要看文件中的代码是否正确。 |
对于文件来说,执行权限是最高权限。给用户或群组设定权限时,是否赋予执行权限需要慎重考虑,否则会对系统安装造成严重影响。
实战案例1:rwx对文件的影响
[root@bogon ~]# vim /home/file1
date
[root@bogon ~]# ll /home/file1
-rw-r--r--. 1 root root 5 8月 14 22:33 /home/file1
mel@mel:~$ ssh alice@192.168.0.105
alice@192.168.0.105's password:
Last login: Fri Aug 14 16:09:18 2020 from 192.168.0.108
[alice@bogon ~]$ cat /home/file1 // 测试读 OK
data
[alice@bogon ~]$ /home/file1 //测试执行 NO
-bash: /home/file1: 权限不够
[root@bogon ~]# chmod o+x /home/file1
[root@bogon ~]# ll /home/file1
-rw-r--r-x. 1 root root 5 8月 14 22:33 /home/file1
[alice@bogon ~]$ /home/file1
2020年 08月 14日 星期五 22:40:00 CST
[alice@bogon ~]$ vim /home/file1 // 没有写权限不能修改
E45: 已设定选项 'readonly' (请加 ! 强制执行)
[root@bogon ~]# chmod o+w /home/file1
[alice@bogon ~]$ vim /home/file1 // 测试写操作
[alice@bogon ~]$ cat /home/file1
date
ls
rwx 权限对目录的作用
目录,主要用来记录文件名列表,不同的权限对目录的作用如表 2 所示。
表 2 rwx 权限对目录的作用
rwx 权限 | 对目录的作用 |
---|---|
读权限(r) | 表示具有读取目录结构列表的权限,也就是说,可以看到目录中有哪些文件和子目录。一旦对目录拥有 r 权限,就可以在此目录下执行 ls 命令,查看目录中的内容。 |
写权限(w) | 对于目录来说,w 权限是最高权限。对目录拥有 w 权限,表示可以对目录做以下操作: - 在此目录中建立新的文件或子目录; - 删除已存在的文件和目录(无论子文件或子目录的权限是怎样的); - 对已存在的文件或目录做更名操作; - 移动此目录下的文件和目录的位置。 一旦对目录拥有 w 权限,就可以在目录下执行 touch、rm、cp、mv 等命令。 |
执行权限(x) | 目录是不能直接运行的,对目录赋予 x 权限,代表用户可以进入目录,也就是说,赋予 x 权限的用户或群组可以使用 cd 命令。 |
实战案例2:**对目录没有w,**对文件有rwx
[root@bogon ~]# mkdir /home/dir
[root@bogon ~]# cd /home/
[root@bogon home]# ll -d dir
drwxr-xr-x. 2 root root 6 8月 15 08:31 dir
[root@bogon home]# touch dir/file1
[root@bogon home]# chmod 777 dir/file1
[root@bogon home]# ll dir/file1
-rwxrwxrwx. 1 root root 0 8月 15 08:44 dir/file1
[alice@bogon ~]$ vim /home/dir/file1
[alice@bogon ~]$ cat /home/dir/file1
date
[alice@bogon ~]$ rm -rf /home/dir/file1
rm: 无法删除"/home/dir/file1": 权限不够
[alice@bogon ~]$ mkdir /home/dir/dir1
mkdir: 无法创建目录"/home/dir/dir1": 权限不够
实战案例3:**对目录有w,**对文件没有任何权限
[root@bogon home]# chmod 777 dir/
[root@bogon home]# ls -ald dir/
drwxrwxrwx. 2 root root 19 8月 15 08:44 dir/
[root@bogon home]# chmod 000 dir/file1
[root@bogon home]# ls -al dir/file1
----------. 1 root root 5 8月 15 08:46 dir/file1
[alice@bogon ~]$ vim /home/dir/file1
"/home/dir/file1" [权限不足]
[alice@bogon ~]$ cat /home/dir/file1
cat: /home/dir/file1: 权限不够
[alice@bogon ~]$ /home/dir/file1
-bash: /home/dir/file1: 权限不够
[alice@bogon ~]$ rm -rf /home/dir/file1 // 可以删除文件
[alice@bogon ~]$ touch /home/dir/file2 // 可以创建文件
[alice@bogon ~]$ ls -al /home/dir/file2
-rw-rw-r--. 1 alice alice 0 8月 15 09:05 /home/dir/file2
小结:对目录有w权限,可以在目录中创建新文件,可以删除目录中的文件(和文件的权限无关)
删除(创建)文件相对于目录来说是写权限。
删文件实际删除的是目录的内容,目录中有文件名,删文件相当于将目录中的文件名删除,导致找不到对应的文件,删除的是对文件的索引。一本书的目录,从目录中划掉一个章节,对应的章节在目录中不存在了,找不到位置了,但是章节内容还存在。
目录时连接着文件,删除文件相当于是将目录与文件间的联系删除。
注意事项:
文件:x权限小心给予
目录:w权限小心给予
root
[root@bogon home]# mkdir dir1/dir2/ -p
[root@bogon home]# touch dir1/dir2/file1
[root@bogon home]# touch dir1/fileone
[root@bogon home]# tree dir1
dir1
├── dir2
│ └── file1
└── fileone
1 directory, 2 files
[root@bogon home]# chmod 777 dir1
[root@bogon home]# ll -d dir1
drwxrwxrwx. 3 root root 18 8月 15 09:48 dir1
[root@bogon home]# ll -d dir1/dir2
drwxr-xr-x. 2 root root 19 8月 15 09:48 dir1/dir2
alice
[alice@bogon ~]$ cd /home/dir1/
[alice@bogon dir1]$ ls
dir2 fileone
[alice@bogon dir1]$ touch alice.txt
[alice@bogon dir1]$ rm -rf alice.txt
[alice@bogon dir1]$ rm -rf fileone
[alice@bogon dir1]$ rm -rf dir2/
rm: 无法删除"dir2/file1": 权限不够
root
[root@bogon home]# mkdir dir1/dir22
[root@bogon home]# tree dir1
dir1
├── dir2
│ └── file1
└── dir22
2 directories, 1 file
alice
[alice@bogon dir1]$ rm -rf dir22
[alice@bogon dir1]$ cd ..
[alice@bogon home]$ tree dir1
dir1
└── dir2
└── file1
1 directory, 1 file
[root@bogon home]# chmod 777 dir1/dir2
[root@bogon home]# tree dir1
dir1
└── dir2
└── file1
1 directory, 1 file
alice
[alice@bogon dir1]$ rm -rf dir2/
[alice@bogon dir1]$ tree ../dir1
../dir1
0 directories, 0 files
当有多级目录时,权限仅限与当前目录层,不能影响下一层目录,只有当下一层目录为空时,可对下一层目录进行删除操作。