我正在 Debian buster 服务器上设置一个新的本地帐户。帐户名称为“自动上传”。中的条目/etc/passwd
如下所示:
auto-upload:x:1060:1060:auto-upload:/home/auto-upload:/usr/sbin/rush
正如你所看到的,我正在尝试使用“rush”受限外壳(1.8 版)使用此帐户。 rush的配置文件是
debug 1
rule default
acct on
limits t10r20
umask 002
env - USER LOGNAME HOME PATH
fall-through
rule scp-to-debrepo
command ^scp (-v )?-t( --)? /srv/repos/?
set[0] /usr/bin/scp
match[$] ! /\.\.
transform[$] s,^/incoming/,,
chroot /srv/repos
chdir /srv/repos
当我尝试scp
向该帐户发送文件时,我在服务器日志中看到以下内容:
2021-12-03T12:20:25.240111-08:00 myserver rush[22679]: debug level set to 1
2021-12-03T12:20:25.240755-08:00 myserver rush[22679]: Serving request "scp -t /srv/repos/basic/incoming" for auto-upload by rule default
2021-12-03T12:20:25.240971-08:00 myserver rush[22679]: Serving request "scp -t /srv/repos/basic/incoming" for auto-upload by rule scp-to-debrepo
2021-12-03T12:20:25.254718-08:00 myserver rush[22679]: invalid uid 1060
2021-12-03T12:20:30.257645-08:00 myserver sshd[22678]: Received disconnect from 192.168.225.188 port 45518:11: disconnected by user
为什么它告诉我“无效的 uid 1060”以及如何解决此问题?
答案1
我没有弄清楚invalid uid
错误是如何与真正的问题原因相关联的,但可以肯定的是,它是由chroot
选项配置错误引起的 - 手册页上提供的配置示例(并在你的问题中提到)默认情况下不起作用
正如上所说chroot
rush配置选项的手册页- 我们需要在 chroot 目录下有二进制文件,否则用户根本无法访问它们
配置参数chroot /srv/repos
意味着该/srv/repos
目录将被视为/
,因此您需要在/srv/repos/usr/bin/scp
路径下有 scp 二进制文件,否则它将无法工作并会抛出invalid uid
错误
规则:chroot 目录
将根目录更改为 dir 中指定的根目录。该目录将用于以“/”开头的文件名。......
必须正确设置目录 dir 才能执行命令。例如,以下规则定义在 chroot 到用户主目录的环境中执行 sftp-server:
rule sftp match $program ~ "^.*/sftp-server" set [0] = "bin/sftp-server" chroot "~"
为了做到这一点,每个用户的主目录必须包含目录 bin,其中包含 sftp-server 的副本,以及执行它所需的所有目录和文件,特别是 lib.