周末在家学习 MySQL,自己通过 Mac 的 Terminal 的查看 MySQL 各个存储引擎底层数据文件的存储格式,发现当前登陆的用户没有查看 data 文件的权限,因此查了下资料,复制了网上命令,结果稀里糊涂的把 data 文件的拥有者改为了当前登陆用户,后来由于需要修改本地 MySQL 某个表的数据,被告知没权限,又是折腾了半天,导致浪费了很多学习时间,因此索性停下来,把 Linux 的权限设置重新梳理一下
在学习文件权限设置之前,我们需要先了解下 用户
、用户组
的概念;在 Linux 系统中,是有用户、用户组的概念的,我们操作一个系统的时候必须要以 用户
的身份来操作一个系统,日常工作、生活中,无论是使用苹果、window 系统都需要以用户的身份进入系统,而 用户组
就是一些用户
的集合,因此我们可以通过管理用户组进而管理用户
我们之前使用的QQ,其中的好友列表就允许我们对好友进行分组,两者是一个道理
用户及用户组
系统的密码文件存储在 /etc/passwd
文件下,用户组存储在/etc/group
文件下
查看所有用户
cut -d':' -f 1 /etc/passwd
结果
root
daemon
_uucp
_taskgated
_networkd
_installassistant
···
查看所有用户组
cut -d':' -f 1 /etc/group
结果
nobody
nogroup
wheel
daemon
kmem
sys
tty
operator
mail
bin
procview
····
添加用户
sudo adduser <用户的命名>
添加组
sudo groupadd <组的命名>
将用户加入到组中
sudo adduser <用户> <待加入的组>
文件权限介绍
接下来我们看一下文件权限相关的内容,既然是学习 MySQL 遇到的这个问题,那我这里就以 MySQL 的目录学习文件权限相关的管理
1. 首先使用 ls -l
查看我们 MySQL的目录
total 872
-rw-r--r-- 1 root wheel 335809 4 13 2019 LICENSE
-rw-r--r-- 1 root wheel 101807 4 13 2019 LICENSE.router
-rw-r--r-- 1 root wheel 687 4 13 2019 README
-rw-r--r-- 1 root wheel 700 4 13 2019 README.router
drwxr-xr-x 35 root wheel 1120 4 13 2019 bin
drwxr-xr-x 74 _mysql _mysql 2368 6 26 09:39 data
drwxr-xr-x 6 root wheel 192 4 13 2019 docs
drwxr-xr-x 15 root wheel 480 4 13 2019 include
drwxr-x--- 3 _mysql _mysql 96 6 24 18:03 keyring
drwxr-xr-x 21 root wheel 672 7 2 2019 lib
drwxr-xr-x 4 root wheel 128 4 13 2019 man
drwxrwxr-x 2 root wheel 64 4 13 2019 run
drwxr-xr-x 33 root wheel 1056 4 13 2019 share
drwxr-xr-x 5 root wheel 160 4 13 2019 support-files
drwxr-xr-x 3 root wheel 96 4 13 2019 var
上图中每一行都有7列
1. 第一列. 文件的权限信息
2. 第二列. 文件的连接数
3. 第三列. 文件所属用户
4. 第四列. 文件所属用户组
5. 第五列. 文件大小(字节)
6. 第六列. 文件的最后修改日期
7. 第七列. 文件名
接下来详细介绍下我们的主题【文件权限】,即第一列所代表的含义.
第一种权限【字母表示】
这里我们摘出 data
目录来看
drwxr-xr-x 74 _mysql _mysql 2368 6 26 09:39 data
1)第一个字符代表了文件类型,这里的 data 是一个目录;通常文件类型有三种,-
代表文件,d
代表文件夹,I
代表链接【链接的含义大家自行搜索】
2)接下来三个字符串是文件所有者
对该文件的权限,而且这三个字符的顺序是不变的,依次是r、w、x
,r
代表读权限,w
代表写权限,x
代表可执行权限【如果是文件夹,只有有x权限,才可以进入当前文件夹下】,如果没有相应的权限,相应的位置会使用-
占位
3)接下来三个字符串是文件所属用户组
对该文件的权限,相应的含义同上
4)接下来三个字符串是其他用户
对该文件的权限【这里的其他用户是指非文件所有者、非文件所属组的其他用户】,相应的含义同上
第二种权限【数字表示】
字母 r、w、x
分别用一个数字代替,r
是4,w
是2,x
是1,【本质应该分别是二进制的前三位,r是第一位,w是第二位,x是第三位,所以转化位十进制的时候,会变为 4,2,1】,4,2,1 这三个值加起来就代表了当前用户拥有的权限了,例如 777 就代表了 rwxrwxrwx,即相应的文件拥有者、文件所属用户组、其他拥有了对当前文件的读、写、执行权限
权限管理
授权权限
sudo chmod <权限> <文件名>
如果我们熟悉数字的表示方法,则数字是最简单的方式
sudo chmod -R 777 data
当然,为了更直观,我们可以使用基于字母的形式
sudo chmod -R u+rwx data
其中 -R 代表了对文件夹进行递归授权【对当前文件夹及文件夹所有子文件都进行了相应权限的授权】,其后的u
代表了当前文件拥有者,其他还有g、o、a
,分别代表用户组权限、其他用户权限、所有用户权限,后面的+
代表权限授予,还有-
代表了移除权限,最后是文件名
修改文件的所属用户
假设我们当前用户是test
,目标文件是 data
,修改data文件的当前所属用户为test
sudo chown test data
修改文件的所属用户组
假设我们当前用户是testgroup
,目标文件是 data
,修改data文件的当前所属用户为test
sudo chgrp testgroup data
网友评论