我今天想知道是否有办法强制非root用户拥有一个特定的authorized_keys文件(以及其他合理的文件)。 我想出了这个解决scheme。
sshd_config禁用StrictModes (必须操纵文件所有权和东西, sshd与StrictModes活动是非常挑剔的) 防止用户使用粘滞位删除他自己在主目录下的文件:
chown root:user /home/user chmod 1770 /home/user 不应该修改/删除的每个文件和目录应该经过这个:
chown root:user file_or_folder chmod 0640 file_or_folder chmod g+x folder 到目前为止,这种方法似乎工作。 用户不能修改/删除文件,也不存在用户离开自己的主文件夹可读/可写的风险( 这似乎是StrictModes背后的原因 ),因为他不拥有自己的主目录。
问题是:我错过了什么? 这可以绕过吗? 有缺点吗?
看起来很好,但在Linux中可能总是有一些方法来解决它,因为一旦你有一个帐户,升级你的特权。 如果你不信任你的用户,那么要比打破它容易得多。 如果你真的担心,我会build议某种有限或有限的壳。 这些都不是黑客入侵,但往往帮助大多数情况下。
你可以使用户使用chattr + i文件变得难以修改。
我会离开StrictModes启用。 这是为了让别人很难replace用户的授权密钥文件。 您可能已经获得此用户,但所有其他用户都很脆弱。
有很多工具可以用来重build一个合理的configuration,如果它被破坏了。 我一直在使用cfengine 。 puppet是一个受欢迎的select。 即使用户更改其设置,该工具也会将configuration重置为正常状态。 如果需要,可以提醒您需要更改。
根据您的要求,看起来您正在为服务获得一个帐户。 通常情况下,这些帐户不会有密码,也不是普通用户的帐户。 对普通用户帐户的这种要求会引起我的安全隐患。 作为用户,我不会接受我的账户上的这种限制。 作为一个pipe理员,我担心这个帐户被用于两个不同的安全configuration文件。