权限:即是为了保证职责的有效履行,对某事项进行决策的范围和程度。那么,在linux中有哪些基本权限呢?在目录中执行增删查(cd,touch,ls,rm,mv等)改文件动作,需要哪些权限?
linux中的基本权限
读(r):read对于文件而言,具有读取文件的权限;而对于目录而言,则具有浏览该目录信息的权限。
写(w):write对于文件而言,具有修改文件内容的权限;对于目录而言,则具有删除、移动目录内文件的权限。
执行(x):execute对于文件而言,具有执行文件的权限;而对于目录而言,则是具有进入目录的权限。
权限的表现形式
权限符号 | 说明 | 八进制表示 | 二进制表示 |
---|---|---|---|
r - - | 仅可读 | 4 | 100 |
- w - | 仅可写 | 2 | 010 |
- - x | 仅可执行 | 1 | 001 |
r w - | 可读可写 | 6 | 110 |
r - x | 可读可执行 | 5 | 101 |
- w x | 可写可执行 | 3 | 011 |
r w x | 可读可写可执行 | 7 | 111 |
- - - | 无权限 | 0 | 000 |
由图,我们可以知道操作权限是由所有者(u)、所属组(g)和其他用户(o)的权限顺序组合而成。
进入目录所需的权限
[wang@localhost ~]$ mkdir test.c //建立一个test.c文件
[wang@localhost ~]$ ls
desktop test.c
[wang@localhost ~]$ ll
total 0
drwxr-xr-x. 3 root root 18 Jan 13 07:04 desktop
drwxrwxr-x. 2 wang wang 6 Apr 11 03:36 test.c
[wang@localhost ~]$ chmod 000 test.c //将test.c的权限设置为无权限
[wang@localhost ~]$ ll
total 0
drwxr-xr-x. 3 root root 18 Jan 13 07:04 desktop
d---------. 2 wang wang 6 Apr 11 03:36 test.c
[wang@localhost ~]$ chmod u+r test.c //我们给user加上r权限
[wang@localhost ~]$ cd test.c
bash: cd: test.c: Permission denied //可看出,可读权限不能进入目录
[wang@localhost ~]$ chmod u+w test.c //我们再给user加上w权限
[wang@localhost ~]$ cd test.c
bash: cd: test.c: Permission denied //可看出,可写权限也不能进入目录
[wang@localhost ~]$ chmod u+x test.c //最后,我们再给user加上x权限
[wang@localhost ~]$ cd test.c //即可以进入目录了
[wang@localhost test.c]$
因此,我们发现进入目录所需要的是可执行(x)权限。
在目录中执行增删查(cd,touch,ls,rm,mv等)改文件动作,所需的权限
1.touch所需权限
[wang@localhost ~]$ ls
desktop test.c
[wang@localhost ~]$ chmod u-rw test.c //先将test.c设置为仅可执行权限
[wang@localhost ~]$ chmod u+r test.c //给test.c加上可读权限
[wang@localhost ~]$ ll
total 0
drwxr-xr-x. 3 root root 18 Jan 13 07:04 desktop
dr-x------. 2 wang wang 6 Apr 11 03:36 test.c
[wang@localhost ~]$ cd test.c
[wang@localhost test.c]$ touch test.c //可以看见权限不够,不能使用touch
touch: cannot touch ‘test.c’: Permission denied
[wang@localhost test.c]$ cd ..
[wang@localhost ~]$ chmod u-r test.c //将test.c中的可读权限去掉
[wang@localhost ~]$ chmod u+w test.c //给test.c加上可写权限
[wang@localhost ~]$ ll
total 0
drwxr-xr-x. 3 root root 18 Jan 13 07:04 desktop
d-wx------. 2 wang wang 6 Apr 11 03:36 test.c
[wang@localhost ~]$ cd test.c
[wang@localhost test.c]$ touch test.c //可以看出,touch可以正常使用
[wang@localhost test.c]$
因此,我们发现touch所需要的是可写(w)权限。
2.ls所需的权限
[wang@localhost test.c]$ touch test.c //紧接上面的touch
[wang@localhost test.c]$ ls //发现ls权限不够
ls: cannot open directory .: Permission denied
[wang@localhost test.c]$ cd .. //返回上级目录
[wang@localhost ~]$ chmod u+r test.c //给test.c添加一个可读权限
[wang@localhost ~]$ cd test.c //进入test.c
[wang@localhost test.c]$ ls //发现现在的ls可以使用了
test.c
[wang@localhost test.c]$
即可以看出,ls所需的权限是可读(r)权限。
3.mv所需的权限
[wang@localhost ~]$ chmod 000 test.c //先将test.c的全部权限设置为0
[wang@localhost ~]$ ll
total 0
drwxr-xr-x. 3 root root 18 Jan 13 07:04 desktop
d---------. 2 wang wang 20 Apr 11 04:05 test.c
[wang@localhost ~]$ chmod u+x test.c //给test.c一个可执行(x)权限
[wang@localhost ~]$ ll
total 0
drwxr-xr-x. 3 root root 18 Jan 13 07:04 desktop
d--x------. 2 wang wang 20 Apr 11 04:05 test.c
[wang@localhost ~]$ cd test.c
[wang@localhost test.c]$ mv test.c test1 //出错,mv的权限不够
mv: cannot move ‘test.c’ to ‘test1’: Permission denied
[wang@localhost test.c]$ cd
[wang@localhost ~]$ chmod u+w test.c //给test.c一个可执行(w)权限
[wang@localhost ~]$ cd test.c
[wang@localhost test.c]$ mv test.c test1
[wang@localhost test.c]$ ls //ls后发现已经变为了test1
test1
[wang@localhost test.c]$
由此可知,mv所需的权限是可写(w)权限。
4.rm所需的权限
[wang@localhost ~]$ chmod 000 test.c/ //将test.c的权限重新置零
[wang@localhost ~]$ ll
total 0
drwxr-xr-x. 3 root root 18 Jan 13 07:04 desktop
d---------. 2 wang wang 19 Apr 11 04:41 test.c
[wang@localhost ~]$ chmod u+x test.c //给test.c一个x权限
[wang@localhost ~]$ cd test.c
[wang@localhost test.c]$ rm test1 //发现权限不够不能够删除
rm: cannot remove ‘test1’: Permission denied
[wang@localhost test.c]$ cd
[wang@localhost ~]$ chmod u+r test.c //给test.c一个r权限
[wang@localhost ~]$ cd test.c
[wang@localhost test.c]$ rm test1 //发现权限还是不够不能够删除
rm: cannot remove ‘test1’: Permission denied
[wang@localhost test.c]$ cd
[wang@localhost ~]$ chmod u+w test.c //给test.c一个w权限
[wang@localhost ~]$ cd test.c
[wang@localhost test.c]$ rm test1 //删除成功
[wang@localhost test.c]$
将test.c的权限重新置零,先给test.c一个x权限,进入test.c,删除test.c中的test1。发现权限不够不能够删除。再给test.c一个r权限,进入test.c,删除test.c中的test1,还是权限不够不可以删除。最后我们给test.c一个w权限,进入test.c后,删除test1,这次成功删除。说明rm所需要的权限是可写(w)权限。
最后,权限总结如表所示:
命令 | 命令的使用及作用 | 所需权限 |
---|---|---|
cd | cd + 目录名(进入目录) | 所需权限为x |
touch | touch + 文件名(存在刷新文件属性,不存在则创建文件) | 所需权限为wx |
ls | ls (显示当前目录下的所有文件) | 所需权限为rx |
rm | rm + 文件名 (删除文件) | 所需权限为wx |
mv | mv 文件名1 文件名2(将文件名1修改为文件名2) | 所需权限为wx |