1. 权限和用户之间的关系
在Linux系统中,针对文件定义了三种身份,分别是属主(owner)、属组(group)、其他人(others),每一种身份又对应三种权限,分别是可读(readable)、可写(writable)、可执行(excutable)。
[root@node2~]# ll
drwxrwxrwx. 2 root root 16 Aug 6 19:52 test
详细权限
用户对文件资源,有三种角色ugo,当一个用户访问文件流程如下
- 判断用户是否为文件所有者,如果是则按所有者的权限进行访问
- 判断用户是否为文件所有组成员,如果是则按组的权限进行访问
- 如果不是所有者,也不是该文件所属组,则按匿名权限进行访问
权限中rwx的含义
字母 | 含义 | 对应权限 |
---|---|---|
r(read) | 读取权限 | 4 |
w(write) | 写入权限 | 2 |
x(execute) | 执行权限 | 1 |
-(占位符) | 没有权限 | 0 |
2. 权限设置
为什么要设定权限
权限可以赋于某个用户或组 -- 能够以何种方式 -- 访问某个文件。
在Linux中权限对文件和对目录的影响是有不同区别的。
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
读取权限(r) | 具有读取\阅读文件内容权限 | 具有浏览目录及子目录 |
写入权限(w) | 具有新增、修改文件内容的权限 | 具有增加和删除目录内文件 |
执行权限(x) | 具有执行文件的权限 | 具有访问目录的内容(取决于目录中文件权限) |
文件相关权限实验:
实验环境:一个普通用户,具体配置如下
[root@node2~]# id ennan
uid=3003(ennan) gid=3003(ennan) groups=3003(ennan)
[root@node2/]# ll filename
-rw-r--r--. 1 root root 5 Aug 7 14:40 filename
[root@node2/]# cat filename
date
r 权限: 切换到普通用户,当用户对文件只有r的权限时,用户仅能查看文件,无法进行更多的操作。
可用的命令有:cat、more、less、head、tail
[ennan@node2 /]$ ll filename
-rw-r--r--. 1 root root 5 Aug 7 14:40 filename
[ennan@node2 /]$ cat filename
date
w 权限: 可以对文件进行写入操作,但是不能查看或者进行其他操作。
[ennan@node2 /]$ ll filename
-rw-r---w-. 1 root root 5 Aug 7 14:40 filename
[ennan@node2 /]$ echo "date" > filename
[ennan@node2 /]$ cat filename
cat: filename: Permission denied
x 权限:普通用户执行x权限时,同时需要具有r权限,否则不能执行成功
[ennan@node2 /]$ ll filename
-rw-r----x. 1 root root 5 Aug 7 15:04 filename
[ennan@node2 /]$ ./filename
bash: ./filename: Permission denied
rw 权限:可对文件进行读写,但是不能进行执行、复制、移动、删除等操作。
[ennan@node2 /]$ ll filename
-rw-r--rw-. 1 root root 5 Aug 7 15:04 filename
[ennan@node2 /]$ vim filename
[ennan@node2 /]$ cat filename
date
date
[ennan@node2 /]$ ./filename
-bash: ./filename: Permission denied
[ennan@node2 /]$ cp filename filename.bak
cp: cannot create regular file ‘filename.bak’: Permission denied
rx 权限:可进行查看和执行操作,但是不能编辑、移动、删除等
[ennan@node2 /]$ ll filename
-rw-r--r-x. 1 root root 10 Aug 7 15:17 filename
[ennan@node2 /]$ cat filename
date
[ennan@node2 /]$ ./filename
Wed Aug 7 15:33:07 CST 2019
[ennan@node2 /]$ echo "hello" > filename
-bash: filename: Permission denied
[ennan@node2 /]$ cp filename filename.bak
cp: cannot create regular file ‘filename.bak’: Permission denied
[ennan@node2 /]$ rm -f filename
rm: cannot remove ‘filename’: Permission denied
rwx 权限:能查看、编辑、执行文件,但是不能对文件进行删除、移动、复制等操作。
[ennan@node2 /]$ cat filename
date
[ennan@node2 /]$ ./filename
Wed Aug 7 15:40:08 CST 2019
[ennan@node2 /]$ cp filename filename.bak
cp: cannot create regular file ‘filename.bak’: Permission denied
[ennan@node2 /]$ rm -f filename
rm: cannot remove ‘filename’: Permission denied
目录相关权限实验:
r 权限:具有浏览目录的权限,无法进入目录,使用ls 查看目录下的文件会报错,但会显示文件名称, 如果使用 ls-l 只能看到文件名称,其他的全部无法查看。
[root@node2/]# ll -d test/
drwxr-xr--. 2 root root 18 Aug 7 15:54 test/
[root@node2/]# ll /test/file
-rw-r--r--. 1 root root 5 Aug 7 15:54 /test/file
[ennan@node2 /]$ ls test/
ls: cannot access test/file: Permission denied
file
[ennan@node2 /]$ ls -l test/
ls: cannot access test/file: Permission denied
total 0
-????????? ? ? ? ? ? file
[ennan@node2 /]$ cd /test/
-bash: cd: /test/: Permission denied
[ennan@node2 /]$ rm -rf /test/
rm: cannot remove ‘/test/file’: Permission denied
w 权限:单独的w权限不能进行任何操作。
[ennan@node2 /]$ ll -d /test/
drwxr-x-w-. 2 root root 18 Aug 7 15:54 /test/
[ennan@node2 /]$ cd test/
-bash: cd: test/: Permission denied
[ennan@node2 /]$ ls /test/
ls: cannot open directory /test/: Permission denied
x 权限:可以进入目录,不能操作其他东西。
[ennan@node2 /]$ ll -d /test/
drwxr-x--x. 2 root root 18 Aug 7 15:54 /test/
[ennan@node2 /]$ ll /test/
ls: cannot open directory /test/: Permission denied
[ennan@node2 /]$ cd /test/
[ennan@node2 test]$ ls
ls: cannot open directory .: Permission denied
rx 权限: 能进入目录,能查看目录下的文件,至于操作文件,需要看文件本身的权限。不能进行新建文件、目录等操作。
[ennan@node2 test]$ ll -d /test/
drwxr-xr-x. 2 root root 18 Aug 7 15:54 /test/
[ennan@node2 test]$ cd /test/
[ennan@node2 test]$ ll
total 4
-rw-r--r--. 1 root root 5 Aug 7 15:54 file
rw 权限:好像有点鸡肋
[ennan@node2 /]$ ll -d /test/
drwxr-xrw-. 2 root root 18 Aug 7 15:54 /test/
[ennan@node2 /]$ cd test/
-bash: cd: test/: Permission denied
[ennan@node2 /]$ ll /test/
ls: cannot access /test/file: Permission denied
total 0
-????????? ? ? ? ? ? file
[ennan@node2 /]$ mkfid /test/hello
-bash: mkfid: command not found
[ennan@node2 /]$ mkdir /test/hello
mkdir: cannot create directory ‘/test/hello’: Permission denied
rwx 权限:如果目录赋予了w权限,则该目录下的文件可以复制、删除、移动、修改。
[ennan@node2 /]$ ll -d /test/
drwxr-xrwx. 2 root root 18 Aug 7 15:54 /test/
[ennan@node2 /]$ cd test/
[ennan@node2 test]$ ls
file
[ennan@node2 test]$ cp file file.bak
[ennan@node2 test]$ rm -f file.bak
文件最多使用的是rw权限和rx权限(文件的权限通常会设置为644)
目录最多使用的是rx权限(目录的权限通常会设置为755)
3.属主和属组的变更
chown:用于更改属主及属组
选项 | 解释 |
---|---|
-R | 递归修改 |
修改dir的属主为ennan
[root@node2~]# ll
total 0
drwxr-xr-x. 3 root root 31 Aug 7 17:07 dir
[root@node2~]# chown ennan dir/
[root@node2~]# ll
total 0
drwxr-xr-x. 3 ennan root 31 Aug 7 17:07 dir
修改dir的属组为adm
[root@node2~]# chown .adm dir/
[root@node2~]# ll -d dir/
drwxr-xr-x. 3 ennan adm 31 Aug 7 17:07 dir/
递归修改目录及目录下所有文件的属主和属组为ennan
[root@node2~]# chown -R ennan.ennan dir/
[root@node2~]# ll -d dir/
drwxr-xr-x. 3 ennan ennan 31 Aug 7 17:07 dir/
[root@node2~]# ll dir/
total 0
-rw-r--r--. 1 ennan ennan 0 Aug 7 17:07 file
drwxr-xr-x. 2 ennan ennan 6 Aug 7 17:07 test1
网友评论