Apache服务器运维咨询:无密码场景下获取权限及重启服务器的方法
首先非常理解你的处境——不是运维出身却临时顶班,遇到这种权限问题确实头疼,不用太担心,咱们一步步梳理清楚。
先直接解答你的几个问题
能不能从SSL证书或服务器文件找到用户X的密码?
完全不行。SSL证书是用来加密服务器和客户端通信的,和系统用户密码没有半毛钱关系。而系统用户(包括X和root)的密码都是以单向哈希加密的形式存在/etc/shadow文件里,这种加密是不可逆的,没法破解出原密码。你之前碰的htpasswd是网页端的认证文件,和系统用户账号完全不是一回事,操作它根本解决不了当前问题。用用户X能不能找到root的密码?
同样没可能。root的密码也存在/etc/shadow的加密哈希里,普通用户(哪怕你说X有管理员权限,但没sudo密码的话)根本没权限读取这个文件,更别说逆向破解哈希了。有没有其他方式登录root?
有几个可以尝试的方向,但都得谨慎操作:
可行的解决方案尝试
试试直接执行免密码的Apache重启命令
有些服务器会给特定用户配置免密码执行某些关键命令,比如重启Apache。你可以直接试试这两个命令:sudo /usr/sbin/service apache2 restart如果你的Debian版本比较新(用systemd管理服务),也可以试:
sudo systemctl restart apache2虽然之前用其他sudo命令需要密码,但说不定这个重启命令被单独配置了免权限,值得一试。
尝试用密钥直接登录root账户
既然你是用SSH密钥(你说的SSL证书其实应该是SSH密钥对)登录用户X的,说不定服务器的root账户也开启了密钥登录,而且你的公钥已经被添加到root的授权列表里了?你可以在SuperPutty里直接用同样的密钥文件尝试连接root账户,说不定能直接登录。联系原同事或管理员索要密码
这其实是最稳妥、最合规的办法。服务器的权限管理是很严肃的事,私自尝试破解或者修改配置很容易搞坏系统,甚至引发安全问题。直接找之前负责这个服务器的同事,或者公司的运维管理员,要用户X的sudo密码,或者获取root权限的合法访问方式,才是最快解决问题的正道。
备注:内容来源于stack exchange,提问作者Mariya Mihaylova

