外部 ntfs HDD 的权限问题,gitlab-ctl 重新配置更改权限:"Operation not permitted"

Permission issues with external ntfs HDD, gitlab-ctl reconfigure changing permissions: "Operation not permitted"

我在树莓派 3 B 型上使用 gitlab。根据一些 信息 关于我的 设置 (sudo gitlab-rake gitlab:env:info ):

System information
System:         Raspbian 8.0
Current User:   git
Using RVM:      no
Ruby Version:   2.3.6p384
Gem Version:    2.6.13
Bundler Version:1.13.7
Rake Version:   12.3.0
Redis Version:  3.2.11
Git Version:    2.14.3
Sidekiq Version:5.0.5
Go Version:     go1.3.3 linux/arm

GitLab information
Version:        10.6.0-rc3
Revision:       52fa89e
Directory:      /opt/gitlab/embedded/service/gitlab-rails
DB Adapter:     postgresql
URL:            http://gitlab.example.com
HTTP Clone URL: http://gitlab.example.com/some-group/some-project.git
SSH Clone URL:  git@gitlab.example.com:some-group/some-project.git
Using LDAP:     no
Using Omniauth: no

GitLab Shell
Version:        6.0.3
Repository storage paths:
- default:      /mnt/SeagateExpansion/GitLab/repositories
Hooks:          /opt/gitlab/embedded/service/gitlab-shell/hooks
Git:            /opt/gitlab/embedded/bin/git

gitlab 更新到版本 10.6.0 后我需要再次更改 url 但是当我在 /etc/gitlab/gitlab.rb 和 运行 sudo nano gitlab-ctl reconfigure 中进行必要的更改时我收到以下[​​=53=]错误消息:

  ========================================================================
  Error executing action `run` on resource 'ruby_block[directory resource: 
  /mnt/SeagateExpansion/GitLab]'
  ========================================================================

============================================================================
Error executing action `create` on resource 
'storage_directory[/mnt/SeagateExpansion/GitLab]'
============================================================================

结果消息说:

There was an error running gitlab-ctl reconfigure:

storage_directory[/mnt/SeagateExpansion/GitLab] (gitlab::gitlab-rails line 42) had an error: Mixlib::ShellOut::ShellCommandFailed: ruby_block[directory resource: /mnt/SeagateExpansion/GitLab] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/resources/storage_directory.rb line 33) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'
---- Begin output of chmod 00700 /mnt/SeagateExpansion/GitLab ----
STDOUT:
STDERR: chmod: changing permissions of ‘/mnt/SeagateExpansion/GitLab’: Operation not permitted
---- End output of chmod 00700 /mnt/SeagateExpansion/GitLab ----
Ran chmod 00700 /mnt/SeagateExpansion/GitLab returned 1

所以问题似乎是,在资源存储上执行运行create命令( GitLab 外部硬盘上的文件夹 [HDD = SeagateExpansion]) 期望权限为 700,对吗?
根据这个错误,我试图改变的权限 外部 HDD 文件夹 /mnt/SeagateExpansion/GitLab 查看 ls -l 输出:

drwxrwxrwx 1 root GitLabUser        0 Jan  4 17:55 GitLab

this post 的帮助下,我尝试使用以下命令更改权限:

sudo find /mnt/SeagateExpansion/GitLab -type d -exec chmod 700 {} \;

获得所需的权限 700。但更改不会生效。我还尝试了 chmod -R 700 /mnt/SeagateExpansion/GitLab 并以 root 身份执行命令,但更改没有生效。即使在重新启动 raspberry pi 之后。我做错了什么?

我也尝试将 /etc/fstab 中硬盘的 选项 settings/flag 更改为 user 但这对以太没有帮助。

感谢每一个提示和回答:)。

此致,

布雷乔

我终于想通了。解决方法是更改​​ /etc/fstab 中的挂载设置。因为如果您的选项设置错误(参见:https://en.wikipedia.org/wiki/Fstab),您将无法更改权限,因为它是一个 ntfs 文件系统。

所以我的fstab条目是这样的:

UUID=FE820568820526AD   /mnt/SeagateExpansion   ntfs defaults,gid=GitLabUser   0       0

条目是这样的:

 UUID=FE820568820526AD   /mnt/SeagateExpansion   ntfs-3g permissions   0       0

请注意,您需要安装 ntfs-3g 才能在 fstab 中使用它。 permissions 选项仅随 ntfs-3g 提供。参见:https://www.tuxera.com/community/ntfs-3g-advanced/ownership-and-permissions/

修改后我再次执行:

sudo gitlab-ctl reconfigure

现在错误消失了,可以设置文件夹 /mnt/SeagateExpansion/GitLab 的权限 700。我还注意到GitLab文件夹的所有者在重新配置后也更改为用户git

drwx------ 1 git  root        0 Jan  4 17:55 GitLab

那是因为我不再需要选项 gid=GitLabUser
现在一切都恢复正常了:)。