GitLab修改root用户密码

615 阅读1分钟

官方gitlab重置管理员密码方法

  • 在root用户下,或者先切换到root用户下在切换到git用户下
[sysops@gitlab ~]$ sudo su -
Last login: Wed Aug 12 16:03:31 CST 2020 on pts/0
[sysops@gitlab ~]$ sudo su -
Last login: Thu Aug 13 11:22:55 CST 2020 on pts/0
[root@gitlab ~]# su - git
Last login: Thu Aug 13 11:27:53 CST 2020 on pts/0
-sh-4.2$ 
  • 开启ruby on rails 界面
>> gitlab-rails console production
  • 用类似于sql的语法查找用户信息
>> user = User.where(id: 1).first

或者

>> user = User.find_by(email: 'sysops@somemail.com')

用户数据格式:

=> #<User id: 1, email: "sysops@somemail.com", created_at: "2017-03-17 06:45:24", updated_at: "2020-08-12 07:54:02", name: "Administrator", admin: true, projects_limit: 10, skype: "", linkedin: "", twitter: "", authentication_token: "bNSos1y3zWcQHXGvQFiY", theme_id: 2, bio: nil, username: "root", can_create_group: true, can_create_team: false, state: "active", color_scheme_id: 1, password_expires_at: "2018-03-02 09:00:59", created_by_id: nil, last_credential_check_at: nil, avatar: nil, hide_no_ssh_key: false, website_url: "", notification_email: "sysops@somemail.com", hide_no_password: false, password_automatically_set: false, location: nil, encrypted_otp_secret: nil, encrypted_otp_secret_iv: nil, encrypted_otp_secret_salt: nil, otp_required_for_login: false, otp_backup_codes: nil, public_email: "", dashboard: 0, project_view: 0, consumed_timestep: nil, layout: 0, hide_project_limit: false, otp_grace_period_started_at: nil, ldap_email: false, external: false, organization: nil, incoming_email_token: "17bpvdkaatt363m8z9kotxvbu", authorized_projects_populated: true>
  • 字段解释
    • id : 类似于数据库的主键

    • email : 邮箱

    • admin : 是否是管理员

    • state : 是否激活还是屏蔽状态 active/blocked

  • 更新用户信息
>> user.password = 'secret_pass'
>> user.password_confirmation = 'secret_pass'
  • 保存信息,最后有个感叹号
>> user.save!

更新完信息,可以再次用新的邮箱和密码登陆。

总结: GitLab的任何用户账号信息都可以从后台Rails控制台来查出来,包括所有的用户属性信息,由于其使用的是PG数据库,因此这些信息从相应表中同样可以检索出来,一方面方便了这种密码忘记的找回,另一方面实际是开了后门,任何访问GitLab服务器的用户,都有方法查询到甚至直接修改所有用户的信息,听起来还是很可怕的一件事情,因此便捷性和安全性有时可能就是互相冲突的一对矛盾,此消彼长。