我在vSphere下运行的相当标准的Ubuntu 11.04安装上运行以下命令:
sudo cat /home/*/.ssh/authorized_keys
基本上,我使用puppet进行ssh密钥管理,并希望确保密钥存在。这个简单命令的不寻常之处在于,只有两个用户(如果相关的话,在用户上创建的第一个和第三个用户)才会显示密钥,而*应该捕获7或8个用户的家。
有趣的是,如果我跑了
sudo cat /home/user.name/.ssh/authorized_keys
其中user.name是随机用户的名称(不是已经显示的两个中的一个),我不仅从cat获得正确的输出,而且还在下次运行时
sudo cat /home/*/.ssh/authorized_keys
输出显示3个关键文件!前面显示的两个用户有两个文件,第三个文件是我手动查看的密钥文件的用户。
我可以继续玩这个“游戏”,每次我手动指定一个用户,然后运行*命令,之前查看过的用户就会显示在globbed输出中。对我来说,这是不寻常的行为,特别是对于沼泽标准的Ubuntu图像。有什么我想念的吗?*扩展或猫的特殊属性?
编辑:如果我将ssh会话留给服务器,忘记提及此行为“重置”。我的意思是我可以通过SSH注销并重新登录,然后我回到起始条件(只有两个用户帐户带*)。
sudo cat /home/user.name/.ssh/authorized_keys
命令会产生影响包含glob的后续命令输出的持久副作用?是因为shell缓存了它在那里看到的文件吗?