普通用户使用scp命令时出现异常,输入密码登录时密码变为明文并且卡死!

版权声明:转载请声明~ https://blog.csdn.net/weixin_38890593/article/details/84661478

在工作时发现scp一个异常现象,在板子(注意不是电脑的Linux系统)上测试只有root用户使用scp命令才能成功,其它用户都失败!
现象:在输入密码登录时密码不再隐藏而是变为明文,并且会卡死!
说明:所有用户使用ssh是正常的,但scp只有root用户才能正常使用!
一开始发现这个问题时,网上查询scp时,看到一条说明是scp命令必须要远程主机给当前用户权限才可以。便怀疑是不是当前的用户没有权限拷贝远程主机文件。
但是这个和现象不太符合,scp是隐式使用ssh来连接远程主机的,在输入密码的时候出现异常,证明scp在ssh阶段出现了问题!但测试ssh连接远程主机也是正常的,那么便不是ssh导致!

对此我做了几个实验,当将当前用户的uid改为0,再使用scp命令时,便可正常使用!
这个实验可以说明:
①远程主机限制只有root才能进行连接!
②使用scp时需要某些权限,而这个权限在我的板子上被限制了!而root用户具有最高权限不受限制,故只有root能成功!

问题①可以排除,因为我并没有对远程主机做限制,任何用户都可以进去连接。
那么很有可能就是问题②导致的,于是我追踪查看了scp此命令的源码。发现此命令是需要suid权限的,然后去查看scp命令的权限,发现确实是suid的权限导致的!
查看scp命令可以看到:

root@:/# which scp
/usr/bin/scp
root@:/# ls -l /usr/bin/scp
lrwxrwxrwx    1 root     root            16 Nov 30 02:39 /usr/bin/scp -> ../sbin/dropbear

可以看到命令权限为777,并没有suid的权限!
下面进行修改:

root@:/# chmod 4777 usr/sbin/dropbear 
root@:/# ls -l usr/sbin/dropbear 
-rwsrwxrwx    1 root     root        151919 Nov 30 02:38 usr/sbin/dropbear
这里可以看到s权限已经加上,再次使用scp命令便能正常使用!
注:为何对dropbear进行改权限而不是scp?,是因为scp是链接到dropbear的!scp命令依赖dropbear来实现的!

特别说明:suid和guid是特殊权限,有兴趣可以自行了解。

猜你喜欢

转载自blog.csdn.net/weixin_38890593/article/details/84661478