Linux权限管理
前言
本文是视频教程韩顺平 一周学会Linux部分章节的归纳总结,内容补充和错误纠正。
概念
组
Linux系统中的每个文件和目录都有一组权限,用于控制对它们的访问。这些权限分为三个类别:
- 所有者(Owner)
- 所属组(Group)
- 其他人(Others)
权限
每个类别都有读(Read)、写(Write)和执行(Execute)权限。权限可以使用符号表示法来表示,其中每个类别都有一个字母表示权限:
r(读权限):表示可以读取文件内容或查看目录中的文件列表。w(写权限):表示可以修改文件内容,或在目录中创建、删除和重命名文件。x(执行权限):对于文件,表示可以执行文件作为可执行程序;对于目录,表示可以进入目录。
注意:如上面所说,如果你对一个文件拥有w权限,你可以修改这个文件,但是你并不能删除这个文件。删除这个文件的前提是你拥有文件所在目录的w权限
在Linux中权限有两种表示方法:
符号表示法
权限符号表示法的格式为:[所有者权限][所属组权限][其他人权限]。
例如,rw-r--r--表示所有者具有读写权限,所属组和其他人只有读权限,数字表示法表示为644
数字表示法
权限在数字表示法中使用三位二进制数表示每个权限组的权限。每个权限对应一个二进制位,其中1表示有权限,0表示没有权限。例如:如果一个权限组的权限是rwx(即读、写和执行权限都有),它的二进制表示为111,对应的数字表示为7。
例如,644表示所有者具有读写权限,所属组和其他人只有读权限,即为110 100 100,符号表示法表示为rw-r--r--
命令
因为Linux的权限与组密不可分,所以在讲述权限管理的命令之前,我们会先提及一些组管理的相关命令。
以下一些命令可能需要root用户权限
组管理
创建
我们可以用下面的命令创建一个组,然后创建一个用户并指定组:
groupadd 新组名:创建一个组useradd -g 用户组 新用户名:创建一个用户并指定用户组
当这个新创建的一个用户创建一个文件之后,文件的所有者就是该用户,所属组就是该用户所属的组
我们可以使用ls -l 指定文件/目录查看指定文件或目录的详细信息,其中就包括了权限信息,文件所有者和所属组信息。
修改
chgrp 组名 文件名/目录名:修改指定文件或目录所属组,加上选项-R可以递归修改。usermod -g 组名 用户名:修改用户所在的组
扩展:usermod -d 路径 用户名:可以指定用户登录进入的初始化目录,其他是该用户拥有进入该目录的权限
查看
id 用户名:可以查看用户ID信息,其中包括组ID- 在
/etc/group文件中,可以查看所有的组的信息(组名、组密码、组ID(GID)和组成员)
删除
groupdel 用户组:删除用户组
权限管理
查看权限
使用ls -l可以查看文件的详细信息,其中就包括了权限信息(权限信息为符号表示,如rw-r--r--),下面让我们看看具体示例
示例输出:drwxr-xr-x 2 root root 4096 2月 23 12:00 xml:
d:文件类型,d表示目录,-表示文件rwxr-xr-x:权限信息2:如果是目录显示子目录数(不包括文件,包括隐藏目录.和..,所以一个空目录该数值是2),如果是文件则显示硬链接数root:用户root:组4096:如果是目录则显示4096,如果是文件则显示文件大小(默认单位:字节)2月 23 12:00:最后修改时间
扩展:在ls -l查看到详细信息,在权限信息前有一个别的字母(如drwxr-xr-x中的d),该字母表示文件的类型具体含义如下:
l:link 表示软链接,类似Windows的快捷方式d:directory 表示目录c:character device 字符设备,如鼠标,键盘b:block device 块设备,如硬盘-:普通文件s:socket 套接字,表示该文件是一个进程间通信的通道,
修改权限
chmod [u或g或o或a][+或-或=][权限] 文件名或者目录:u代表所有者,g代表所属组,o代表其他人,a代表所有人(前面三者的总和)=直接修改,+增加,-减少- 示例
chomd u=rwx,g=rx,o-x dog:dog文件所有者权限修改为读写执行,所属组权限修改为读和执行,其他人减少执行权限
chomd 数字表示法权限 文件:我们也可以使用数字表示法表示权限修改文件权限,让我们看看示例chomd 777 dog:把dog文件的权限修改为rwxrwxrwx,7是二进制111的十进制表示,详情请看概念chomd 644 hello.txt:把hello.txt文件的权限修改为rw-r--r--,6是二进制110的十进制表示
chown:修改文件或目录的所有者(Owner,我其实觉得翻译为拥有者或者主人更合适)chown 用户名 文件或目录:修改指定文件或者目录的所有者chown 用户名:组名 文件或目录:修改指定文件或者目录的所有者和组名chown 用户名 -R 文件或目录:递归修改修改指定文件或者目录的所有者,一般用于修改整个目录下所有文件的所有者


