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 文件或目录
:递归修改修改指定文件或者目录的所有者,一般用于修改整个目录下所有文件的所有者