我允许一个朋友在我的机器上一个本地帐户,专用于SCP。我是否可以/bin/true
在允许SCP的同时将其帐户的外壳指定为,或以其他任何方式限制该帐户?
我允许一个朋友在我的机器上一个本地帐户,专用于SCP。我是否可以/bin/true
在允许SCP的同时将其帐户的外壳指定为,或以其他任何方式限制该帐户?
Answers:
您可以将该用户的shell设置为rssh
或scponly
,这是专门为此目的而设计的:
rssh是与OpenSSH一起使用的受限外壳,仅允许使用scp和/或sftp。现在,它还支持rdist,rsync和cvs。
scponly是系统管理员的另一种“外壳”(某种形式),他们希望提供对远程用户的访问权,以读取和写入本地文件而不提供任何远程执行特权。
运行scp时,OpenSSH守护程序会scp
使用该-f
选项触发一个进程。当您运行sftp时,OpenSSH守护程序将触发一个sftp-server
进程。无论哪种情况,子进程都是通过用户的外壳程序执行的,因此外壳程序必须至少支持这些命令,并且使用类似Bourne的语法。任何Bourne风格的shell都会这样做,而csh也会这样做(我认为它的引用规则对于所sshd
用的东西足够兼容)。Rssh和scponly允许使用这些命令,而别无其他。/bin/true
甚至不会运行这些命令。
/bin/false
或不执行任何操作的其他程序,则scp和sftp均不起作用。对于这两个命令,SSH守护程序都会触发运行专用服务器进程(scp -f
或sftp-server
)的shell命令。它需要一个Bourne样式的外壳,或至少足够接近的近似值(例如rssh
,仅允许这几个命令通过)。