为啥我不能 cd 进入 /var/lib/mysql
Posted
技术标签:
【中文标题】为啥我不能 cd 进入 /var/lib/mysql【英文标题】:why I cannot cd into /var/lib/mysql为什么我不能 cd 进入 /var/lib/mysql 【发布时间】:2015-04-11 07:20:30 【问题描述】:结构如下
ravas@ravas-desk-lmde /var/lib $ pwd
/var/lib
ravas@ravas-desk-lmde /var/lib $ ls -l | grep mysql
drwx------ 13 mysql mysql 4096 Feb 10 22:32 mysql
当我尝试进入 /var/lib/mysql 时,我没有权限
ravas@ravas-desk-lmde /var/lib $ cd mysql/
bash: cd: mysql/: Permission denied
虽然我属于mysql组
ravas@ravas-desk-lmde /var/lib $ groups ravas
ravas : ravas adm dialout cdrom floppy sudo audio dip video plugdev lpadmin sambashare mysql
这里有什么问题?
【问题讨论】:
【参考方案1】:mysql
组没有目录权限,只有mysql
用户。
【讨论】:
【参考方案2】:mysql
组无权访问该目录。 mysql
用户的权限是rwx
,但组和其他用户获得---
,因此在mysql
组中并不能满足您的需求。
【讨论】:
我明白了,所以要 cd 进入它,我需要添加 mysql 组,或者 sudo -i 然后 cd mysql。您认为以前的安全解决方案是个坏主意吗? 从打包的角度来看,这可能是个坏主意——当你升级 mysql 时,它可能会在 /var/lib/mysql 上重新安装旧权限。【参考方案3】:mysql 用户是唯一可以访问该目录的用户,可以使用root 访问并更改权限,也可以将目录权限更改为740
chmod 740 /var/lib/mysql
权限分为用户/组/其他三个部分。你有
drwx------
d= 目录
r= 读取 = 4
w=write = 2
x=执行 = 1
所以“所有者”在该目录中拥有 read(4) + write(2) + execute(1) = 7 权限
其他人都没有
【讨论】:
如果您希望其他人访问该目录,您应该使用 750 或 755。 740 足以让正确组的成员阅读直接目录列表,仅此而已。执行位在这里更重要。【参考方案4】:根据给定的输入,很明显只有所有者mysql
对/var/lib/mysql
目录拥有read, write, execute
权限。
当前登录用户 - ravas
是 mysql 组的一部分。因此ravas
用户可以cd
到/var/lib/mysql
目录如果组mysql
对x (ie execute)
具有x (ie execute)
权限@ 。
因此chmod g+rx /var/lib/mysql
或chmod 750 /var/lib/mysql
将允许ravas
用户到cd
到/var/lib/mysql
并读取目录内容(即列表文件)
注意:
x/Execute
对目录的权限允许cd
进入目录
【讨论】:
【参考方案5】:sudo -i
然后
cd /var/lib/mysql/
【讨论】:
sudo -i
为我解决了这个问题,在 ubuntu 上,我在 sudo chown -R mysql:mysql ...
上运行了以下目录
这与权限有何关系?【参考方案6】:
每个文件和目录都有三个基于用户的权限组:
owner - Owner 权限仅适用于文件或目录的所有者,不会影响其他用户的操作。
组 - 组权限仅适用于已分配给文件或目录的组,不会影响其他用户的操作。
所有用户 - 所有用户权限适用于系统上的所有其他用户,这是您最想观看的权限组。
drwx----- 13 mysql mysql 4096 Feb 10 22:32 mysql
上面显示mysql文件夹的权限是700,所以mysql用户拥有所有的读、写和执行权限。 mysql 组没有权限。虽然,ravas 用户属于 mysql 组。没有权限。
【讨论】:
请编辑此答案以获得更好的清晰度。我目前无法关注它。以上是关于为啥我不能 cd 进入 /var/lib/mysql的主要内容,如果未能解决你的问题,请参考以下文章