sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位

由于误操作 sudo chown -R username / 导致我的阿里云服务器xshell登陆的时候报错:

Connecting to IP地址:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Connection closed by foreign host.
Disconnected from remote host(zhengshi_dhy) at 14:15:15.
Type `help' to learn how to use Xshell prompt.

原因是 /root/.ssh/authorized_keys 的修改权限只能是root 如果是其它用户则会报错 解决办法就是把该文件的权限改回root

ssh登不上 只能靠阿里的控制台用普通用户登陆服务器 root 用户没设置密码 登录是用的密钥

尝试用

sudo chown root:root  /root/.ssh/authorized_keys

修改权限, 出现新的错误

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

sudo也不能正常的使用 看了其它文章有的要启动盘 有的要重启 想想还是算了 尝试能不能拿到root权限

既然文件的所有者都变成了普通用户 那就尝试修改/etc/passwd/etc/shadow 这两个配置文件

passwd里面储存了用户,shadow里面是密码的hash。出于安全考虑passwd是全用户可读,root可写的。shadow是仅root可读写的。

这里是一个典型的passwd文件

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
ibuuid:x:100:101::/var/lib/libuuid:/bin/sh
syslog:x:101:103::/home/syslog:/bin/false
sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin

passwd由冒号分割,第一列是用户名,第二列是密码,x代表密码hash被放在shadow里面了(这样非root就看不到了)。而shadow里面最重要的就是密码的hash

root:*:16902:0:99999:7:::
daemon:*:15730:0:99999:7:::
bin:*:15730:0:99999:7:::
sys:*:15730:0:99999:7:::
sync:*:15730:0:99999:7:::
games:*:15730:0:99999:7:::
man:*:15730:0:99999:7:::
lp:*:15730:0:99999:7:::
mail:*:15730:0:99999:7:::
news:*:15730:0:99999:7:::
uucp:*:15730:0:99999:7:::
proxy:*:15730:0:99999:7:::
www-data:*:15730:0:99999:7:::
backup:*:15730:0:99999:7:::
list:*:15730:0:99999:7:::
irc:*:15730:0:99999:7:::
gnats:*:15730:0:99999:7:::
nobody:*:15730:0:99999:7:::
libuuid:!:15730:0:99999:7:::
syslog:*:15730:0:99999:7:::
mysql:!:15730:0:99999:7:::
dovecot:*:15730:0:99999:7:::
sshd:*:15730:0:99999:7:::
postfix:*:15730:0:99999:7:::
new:$6$URgq7sJf$4x8e9ntqTwAPIubi9YLxLQ2mZTTZKnGz0g/wWzOdPB5eGuz.S5iRtFdvfFd9VIVEWouiodB/hh9BYOLgAD8u5/:16902:0:99999:7:::

把root的密码字段(x)替换成我们已知的普通用户密码的hash(比如本机shadow里面的root密码hash),这样系统在验证密码时以passwd的为准,用普通用户密码登陆root账户。如果shadow可读,我们可以读走root的hash,然后用hashcat或者john暴力破解之。

剩下的就是前面修改指定文件的权限的操作了

你可能感兴趣的:(sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位)