受限 shell rush“无效的 uid”错误

受限 shell rush“无效的 uid”错误

我正在 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选项配置错误引起的 - 手册页上提供的配置示例(并在你的问题中提到)默认情况下不起作用

正如上所说chrootrush配置选项的手册页- 我们需要在 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.

相关内容