如何更改挂载点的所有者

Ari*_*e K 57 unix permissions mount fstab

我们已经将 mysql 数据目录移动到另一个磁盘,所以现在/var/lib/mysql只是另一个分区的挂载点。我们将/var/lib/mysql目录的所有者设置为mysql.mysql.

但是每次我们挂载分区时,所有权都会更改为root.root. 因此,我们无法创建额外的 MySQL 数据库。

我们的 fstab 条目:

/dev/mapper/db-db   /var/lib/mysql    ext3    relatime        0       2
Run Code Online (Sandbox Code Playgroud)

如何将挂载点的所有者更改为root以外的用户?

Cri*_*itu 50

您需要更改已挂载文件系统的权限,而不是在未挂载文件系统时更改挂载点的权限。因此,mount /var/lib/mysql然后chown mysql.mysql /var/lib/mysql。这将更改 MySQL DB 文件系统根目录的权限。

基本思想是需要更改保存 DB 的文件系统,而不是挂载点,除非它的路径有问题,例如lib只能由 root 读取。


小智 41

mount device mount-point -o uid=foo -o gid=foo
Run Code Online (Sandbox Code Playgroud)

如果组也需要更改

  • 这只适用于不存储 UNIX 所有权的文件系统,例如 vfat 和 ntfs。 (3认同)
  • 其中 uid `foo` 是您希望成为挂载点所有者的用户的名称。而gid`foo`就是用户组的名字,一般和用户名一样。如有疑问,只需在您的主目录中键入 `ls -l` 并分别检查第一个和第二个名称。 (2认同)

Fra*_*cke 11

重要免责声明(从评论中了解到):

uid 和 gid 标志仅适用于不支持 Linux 权限架构的文件系统 - 即 FAT 和 NTFS 等

因此,这不是对 OP 的正确答案,但对其他人有帮助


添加 uid 和 gid 像这样:

/dev/mapper/db-db  /var/lib/mysql ext3  relatime,rw,exec,uid=frank,gid=www-group        0       2
Run Code Online (Sandbox Code Playgroud)

您可以使用实际的用户/组名(注意空格)或数字 uid、gid 值。我添加了 rw 和 exec 这可能会进一步帮助您防止访问问题(假设您在开发系统上,而不是生产服务器上)。

PS:要获得更多访问权限(如果需要),请添加“,dir_mode=0777,file_mode=0777”

  • -1 因为 `uid` 和 `gid` 标志仅适用于*不*支持 Linux 权限模式的文件系统 - 即 FAT 和 NTFS 等。见 http://askubuntu.com/a/34068/329506 (15认同)
  • 不,它是“relatime”。http://lwn.net/Articles/244829/ (3认同)
  • 是的,我遇到了 uid/gid 问题 - 有解决方案吗? (2认同)

Tom*_*ner 5

确保在未挂载文件系统时更改权限 - 在挂载时执行此操作对我来说从未奏效。

此外,您可以将 'user' 选项添加到您的 fstab,例如:

/dev/mapper/db-db   /var/lib/mysql    ext3    relatime,user        0       2
Run Code Online (Sandbox Code Playgroud)

这也应该意味着 mount 命令(如果需要调用)不需要 root 权限来挂载该卷。但是,不更改 fstab 不会阻止您解决问题!