自建gitlab,发现 /-/profile/account
竟然可以删除自己的帐号,然后小伙伴就删除了。
查到相关讨论:
短时间内是没有这功能了。
为了合规,确实应该有注销帐号功能,但自建自用的,有时不希望被删除,不用的帐号禁用即可。
于是打算自己改造实现,计划从nginx入手,禁用掉相关的URL访问。
看了下相关页面和接口,删除是提交数据到/users
这个公共的API,不好禁用。
于是打算禁用 /-/profile/account
。
相关的配置是在/var/opt/gitlab/nginx/conf/gitlab-http.conf
中,打算增加一条规则。
if ($request_uri ~* "/-/profile/account")
{
return 404 'account disable by admin';
}
为了方便,写成了脚本(操作前记得备份配置文件,改坏不赔)
#确定要插入配置的行,根据当前配置内的相似配置
export FN=/var/opt/gitlab/nginx/conf/gitlab-http.conf
export LN=$(cat $FN | grep "location /assets" -n| awk -F ":" '{print $1}')
echo $LN
#插入配置
export CFG="if (\$request_uri ~* \"/-/profile/account\"){return 404 'account disable by admin';}"
echo $CFG
sed -i "${LN} i $CFG" $FN
配置改好后,重启下nginx就行了gitlab-ctl restart nginx