🎉

gitlab-railsで新規ユーザに管理者権限付与する

2020/10/30に公開

はじめに

管理者アカウントがロストしたGitlabサーバの中を調査しなければならない事案があったので、同じ目に遭遇した人の助けになればと思い筆を執る。

この記事の対象は「既存の初期管理者アカウント(root)のパスワード初期化は何かしらの影響が出そうで初期化できない」という危険な状態のGitlabサーバである。
管理者権限のrootアカウントのパスワードを初期化してもいい環境ならこの記事の対象外なので、次の記事とかを参考にするといい。
https://qiita.com/tbuchi888/items/0deaced99d0135ab9444
また、前提条件としてマシンにSSHして管理ユーザ(root)でログインしてgitlab-railsが使えることが必須である(環境によってはroot以外でもgitlab-railsが使えればOK)

大まかな流れ

  1. 新規アカウントを発行
    1-1. もし新規アカウントのConfirmメールが届かなくてログインできない状態ならHack!
  2. 新規アカウントに管理権限を付与
  3. おわり!!

1. 新規アカウントの発行

新規アカウントの発行は特に変なことはせず、ログインページのRegisterから登録すればいい。
ただし、私の環境では登録後にメールアドレス確認のためのConfirmメールが届かない状態かつ、Confirmメールの確認が終わらないとログインできない状態だった。
その場合は以下でマシンにログインし、登録したユーザを探してconfirmation_tokenを見つけよう。

# gitlab-rails console production
irb(main):001:0> User.where(name: "<ここにusername>").first.confirmation_token
=> <ここにトークンが表示されるはず>
irb(main):001:0> exit

そしたら自分でConfirm用のURLを生成してアクセスしてしまおう。
(アドレス以後のパスはGitlab.comの登録メールを流用したら動いた)

http(s)://<Gitlabサーバのアドレス>/users/confirmation?confirmation_token=<ここにトークンを記載>

無事にログイン出来たらおめでとう。失敗したら、頑張ってくれ。。。

2. 新規アカウントに管理者権限を付与

# gitlab-rails console production
irb(main):001:0> user = User.where(name: "<ここにusername>").first
=> <ここにアカウントの詳細が表示されるはず>
irb(main):001:0> user.admin = true
=> true<と表示されるはず>
irb(main):001:0> user.save!
=> true<と表示されるはず>
irb(main):001:0> exit

これで無事に管理者権限を付与できたはずだ。
ブラウザで新規アカウントでログインしたらAdminエリアが開放されているだろう。

3. おわり

この記事を読んでいる人は必ず、サーバのログイン情報や構成情報をドキュメントにして引き継げるようにしておくように。本当にお願いします。

Discussion