diff options
author | Ben Bodenmiller <bbodenmiller@hotmail.com> | 2015-08-16 16:57:15 -0700 |
---|---|---|
committer | Ben Bodenmiller <bbodenmiller@hotmail.com> | 2015-08-16 16:57:15 -0700 |
commit | ea9b8fe5f16b26b5793f7d27500b4ff2633b5656 (patch) | |
tree | e16ad4d4143d00193e579c1a43ba9bff601a105d /lib | |
parent | 957e849f41d96fa9778fcdd06792d2f0274b29ab (diff) | |
download | gitlab-ce-ea9b8fe5f16b26b5793f7d27500b4ff2633b5656.tar.gz |
check uploads dir
Detect issues with uploads dir, e.g. permission and ownership issues
with the users uploads dir. This helps troubleshoot and correct
gitlab-org/omnibus-gitlab#311. Fixes gitlabhq#7500, gitlabhq#7052.
Related to gitlabhq#6281.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/tasks/gitlab/check.rake | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/lib/tasks/gitlab/check.rake b/lib/tasks/gitlab/check.rake index 8acb6a7fd19..2c4c5bf2534 100644 --- a/lib/tasks/gitlab/check.rake +++ b/lib/tasks/gitlab/check.rake @@ -22,6 +22,7 @@ namespace :gitlab do check_gitlab_config_not_outdated check_log_writable check_tmp_writable + check_uploads check_init_script_exists check_init_script_up_to_date check_projects_have_namespace @@ -276,6 +277,57 @@ namespace :gitlab do fix_and_rerun end end + + def check_uploads + print "Uploads directory setup correctly? ... " + + unless File.directory?(Rails.root.join('public/uploads')) + puts "no".red + try_fixing_it( + "sudo -u #{gitlab_user} mkdir -m 750 #{Rails.root}/public/uploads" + ) + for_more_information( + see_installation_guide_section "GitLab" + ) + fix_and_rerun + return + end + + upload_path = File.realpath(Rails.root.join('public/uploads')) + upload_path_tmp = File.join(upload_path, 'tmp') + + if File.stat(upload_path).mode == 040750 + unless Dir.exists?(upload_path_tmp) + puts 'skipped (no tmp uploads folder yet)'.magenta + return + end + + # if tmp upload dir has incorrect permissions, assume others do as well + if File.stat(upload_path_tmp).mode == 040755 && File.owned?(upload_path_tmp) # verify drwxr-xr-x permissions + puts "yes".green + else + puts "no".red + try_fixing_it( + "sudo chown -R #{gitlab_user} #{upload_path}", + "sudo find #{upload_path} -type f -exec chmod 0644 {} \\;", + "sudo find #{upload_path} -type d -not -path #{upload_path} -exec chmod 0755 {} \\;" + ) + for_more_information( + see_installation_guide_section "GitLab" + ) + fix_and_rerun + end + else + puts "no".red + try_fixing_it( + "sudo chmod 0750 #{upload_path}", + ) + for_more_information( + see_installation_guide_section "GitLab" + ) + fix_and_rerun + end + end def check_redis_version print "Redis version >= 2.0.0? ... " |