使用Linux和Openssh:
用户可以使用ssh连接到其密钥在authorized_keys列表中的服务器。 他的公钥前面是command="command..." ,它强制执行一个特定的命令(非shell):
command="/path/to/somescript...",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-user-rc ssh-rsa AAAff...................
如果允许的命令集包含sftp守护程序(或internal-sftp),则允许SFTP。 但是,如果您在authorized_keys文件中设置强制命令,并且用户具有sftp访问权限,则不需要额外的工作,就可以用不限制您定义的文件来replace该文件。 这当然适用于任何用户可以指示修改该文件的应用程序(有意或通过欺骗)。 一个更好的select可能是在主sshd_config内用户或组限制,可能用ChrootDirectory。
最常见的威胁来自允许他们使用一个命令能够做pipe理员没有想过的事情。 例如,CVS和SVN允许运行前/后提交脚本。 如果用户可以修改后提交脚本,他可以运行自己的命令。
你可以在.ssh文件夹和authorized_keys文件中使用chattr来设置一个属性,当你把所需的条目写到authorized_keys文件后,这样没有人能够做任何改变甚至覆盖.ssh文件夹,甚至覆盖authorized_keys文件。
你可以做一个recursionchattr:
chattr -R +i .ssh