在使用windows的时候关于权限管理的操作不多,大家遇到比较多的应该是:
1.使用管理员身份才能正常运行某个程序,或者删除某个文件;
2.hosts文件无法修改,你就采用复制-修改-粘贴-替换的操作来修改他。
但到了Linux系统,对权限的要求更高了,你可能发现这个也修改不了,那个也粘贴不了。文件能不能读、能不能写、能不能执行,能被谁读、写、执行等等都设计权限的管理。
Ubuntu在管理自己的用户和文件时,都是依靠权限体系来提高其安全性的。
1.权限概述
权限是指一个用户或用户组能够使用系统资源的限制情况。
root管理员拥有系统的最高权限,能够完成对系统的任何配置、管理、修改。初次创建的用户拥有管理员的部分权限,其他用户的权限则最低
对于文件,通常分为3中权限。读:r、写:w、修改(执行、运行):x。查看我的一个catkin工作空间下的src文件夹下的文件:
linux2021@dahu:~/TEST/test1_1/test_ws/src/mynode/src$ ls -l 总用量 8 -rw-r--r-- 1 linux2021 linux2021 599 5月 8 12:24 listener.cpp -rw-r--r-- 1 linux2021 linux2021 803 5月 8 11:51 talker.cpp
其中:-rw-r--r--的第一位,即“-”表示文件类型,后面还有9位,三位为一组,分别表示文件归属用户的权限、归属用户组的权限、其他用户的文件。对于上面的talker.cpp文件来说:
他的拥有者是linux2021,linux2021拥有对该文件的r and w权限,即读、写权限;
与linux2021同组的其他用户,拥有的权限是r,即读权限;
其他用户,拥有的权限是r,即读权限。
具体来讲:
对于文件,可读权限是指可以查看文件的内容,可写权限是指能够修改其内容,可执行权限是指可以运行该文件;
对于文件夹,拥有可读权限,才能用ls命令查看其文件列表,拥有可执行权限,才能进行该文件夹。
上面说:文件的权限用类似rw-、rwx这种格式来表示。除此之外,还可以用二进制数字的形式来表示。一般用3位二进制数来描述一组权限。
权限的字母表示 | 二进制表示 | 对应数字 |
r |
100 |
4 |
w |
010 |
2 |
x |
001 |
1 |
那么上面刚提到的rw-
、rwx
则可以写为:
权限 |
二进制表示 | 对应数字 |
rw- |
110 |
6 |
rwx |
111 |
7 |
此外,在使用字母表示权限时,还可以用a、u、g、o表示文件的归属关系,使用=、+、-表示权限的变化。
字母 | 含义 |
r | 可读权限 |
w | 可写权限 |
x | 可执行权限 |
a | 所有用户 |
u | 归属用户 |
g | 归属组 |
o | 其他用户 |
= | 具备权限 |
+ | 添加某权限 |
- | 去除某权限 |
举例:
a+x 对所有用户添加可执行权限;
go-x 对归属组和其他用户,去除原来的可执行权限;
u=rxw 对于归属组用户,具备读、写、执行权限。
2.常用权限管理命令
(1)chmod
该命令用于修改文件或文件夹的权限。命令中,权限可以用上面讲到的数字表示法和字母表示法。
语法:chmod 参数(可选) 修改后的权限表示 文件名/目录名
语法中的可选参数主要有:
-c: 显示修改的内容
-f: 不显示错误信息
-R: 递归处理,将该目录下的子文件、子文件夹一并处理(批量赋予相同权限)
-v :显示命令执行过程
例如:
chmod 777 hello.py #所有人拥有对hello.py的读、写、执行权限 chmod -c 765 hello.py #对hello.py的拥有者赋予读、写、执行权限,对拥有组同组成员赋予读、写权限,对其他用户赋予读、执行权限,同时显示修改的内容 chmod u+x hello.py #hello.py的拥有者增加可执行权限
(2)chowm
该命令用于修改文件或目录的归属用户或归属组。
语法:chown 参数(可选) 用户名.组名 文件名/目录
其中,用户名和组名可以只出现任意一个
语法中的可选参数主要有:
-c:显示更改内容
-f:不显示错误信息
-h:只对文件连接问文件做修改,不改动其他任何文件
-R:递归处理
-v:显示执行过程
chown jack hello.py #将hello.py的归属用户修改为jack chown -c jack hello.py #将hello.py的归属用户修改为jack,显示修改内容 chown -c jack.mom hello.py #将hello.py的归属用户修改为mom组的jack,显示修改内容
(3)chgrp
该命令用于修改文件或目录的归属组。
语法:chgrp 参数(可选) 组名 文件/目录
其中:参数同chown
不举例了,差别不大