GNU Rush 无效的 uid

GNU Rush 无效的 uid

我正在尝试配置 Rush 以对我拥有的服务器进行有限的 shell 和 scp 访问。我使用的是 Rush 2.3,全新编译。以及他们文档中的默认配置。invalid uid尽管用户在其目录中拥有 CHRoot 程序、运行它们的权限和 shell 文件,但每次我尝试运行测试时都会得到 。

这是我的配置:

rush 2.0

global
  debug 3

rule default
  limits t10r20
  umask 002
  clrenv
  keepenv USER LOGNAME HOME PATH
  setenv PATH="$PATH:/usr/local/bin"
  fall-through

rule scp-to
  match $command ~ "^scp (-v )?-t"
  set [0] = "/bin/scp"
  chroot "~"
  chdir "/"

rule scp-from
  match $command ~ "^scp (-v )?-f"
  set [0] = "/bin/scp"
  chroot "~"                       
  chdir "/"
  
rule git
  match $command ~ "^git-(receive|upload)-pack"
  match $1 ~ "^/vcs-roots/git/[^ ]+\\.git$"
  set command =~ "s|^|/usr/bin/|"
  
rule git-trap
  match $command ~ "^git-(receive|upload)-pack"
  exit "fatal: access to this repository is denied."
  
rule sftp
  match $program ~ "^.*/sftp-server"
  set [0] = "bin/sftp-server"
  umask 002
  chroot "~"
  chdir "/"

rule login
  interactive true
  chroot "~"
  chdir "/"
  map program /etc/rush.shell : ${user} 1 2

rule nologin
  interactive true
  exit "You don't have interactive access to this machine."

当我运行交互式操作时:# /usr/local/sbin/rush --user=myuser --test -i

它只是告诉我无效的 uid,即使 UID 和用户都存在。如果我su myuser以 SH 作为 shell 的用户身份登录,它就可以正常工作。调试日志:

rush: Debug: Command line:
rush: Debug:    0: /usr/local/sbin/rush
rush: Debug:    1: --user=myuser
rush: Debug:    2: --test
rush: Debug:    3: -i
rush: Debug: Environment:
rush: Debug:    0 SHELL=/bin/bash
rush: Debug:    1 PWD=/zpool2/myuser
rush: Debug:    2 LOGNAME=root
rush: Debug:    3 XDG_SESSION_TYPE=tty
rush: Debug:    4 LS_OPTIONS=--color=tty -F -a -b -T 0
rush: Debug:    5 MOTD_SHOWN=pam
rush: Debug:    6 HOME=/root
rush: Debug:    7 LANG=en_US.UTF-8
rush: Debug:    8 LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
rush: Debug:    9 SSH_CONNECTION=0.0.0.0 60777 0.0.0.0 22
rush: Debug:   10 XDG_SESSION_CLASS=user
rush: Debug:   11 TERM=xterm
rush: Debug:   12 USER=root
rush: Debug:   13 SHLVL=1
rush: Debug:   14 XDG_SESSION_ID=845160
rush: Debug:   15 XDG_RUNTIME_DIR=/run/user/0
rush: Debug:   16 PS1=[\u@\h:\w]$ 
rush: Debug:   17 SSH_CLIENT=0.0.0.0 60777 22
rush: Debug:   18 XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
rush: Debug:   19 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/bin
rush: Debug:   20 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus
rush: Debug:   21 SSH_TTY=/dev/pts/2
rush: Debug:   22 _=/usr/local/sbin/rush
rush: Debug:   23 OLDPWD=/zpool2/myuser/bin
rush: Notice: Serving interactive shell request for myuser by rule login
rush: Debug: Rule login at /usr/local/etc/rush.rc:54 matched
rush: Debug: Final environment:
rush: Debug:    0: SHELL=/bin/bash
rush: Debug:    1: PWD=/zpool2/myuser
rush: Debug:    2: LOGNAME=root
rush: Debug:    3: XDG_SESSION_TYPE=tty
rush: Debug:    4: LS_OPTIONS=--color=tty -F -a -b -T 0
rush: Debug:    5: MOTD_SHOWN=pam
rush: Debug:    6: HOME=/root
rush: Debug:    7: LANG=en_US.UTF-8
rush: Debug:    8: LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
rush: Debug:    9: SSH_CONNECTION=0.0.0.0 60777 45.135.163.234 22
rush: Debug:   10: XDG_SESSION_CLASS=user
rush: Debug:   11: TERM=xterm
rush: Debug:   12: USER=root
rush: Debug:   13: SHLVL=1
rush: Debug:   14: XDG_SESSION_ID=845160
rush: Debug:   15: XDG_RUNTIME_DIR=/run/user/0
rush: Debug:   16: PS1=[\u@\h:\w]$ 
rush: Debug:   17: SSH_CLIENT=0.0.0.0 60777 22
rush: Debug:   18: XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
rush: Debug:   19: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/bin
rush: Debug:   20: DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus
rush: Debug:   21: SSH_TTY=/dev/pts/2
rush: Debug:   22: _=/usr/local/sbin/rush
rush: Debug:   23: OLDPWD=/zpool2/myuser/bin
rush: Debug: Transforming program name (/bin/sh)
rush: Debug: Transformation map: /etc/rush.shell, :, ${user}, 1, 2, (null)
rush: Debug: transformed value: /bin/sh
rush: Debug: Program name: /bin/sh
rush: Debug: Final arguments:
rush: Debug:    0: /bin/sh
rush: Debug: Chroot dir: /zpool2/myuser
rush: Debug: Home dir: /
rush: Error: invalid uid 1019

我将所有正在使用的二进制文件和库复制到用户目录中并赋予它们所有权。此外,如果我运行,它会chroot /zpool2/myuser /bin/sh运行正常,并将我限制在该用户目录中。所以我不知道为什么 rush 不这样做。如果我chroot从 rush 的 rc 文件中删除,它会起作用,但用户不会被限制。

答案1

提示$ 表明$ /usr/local/sbin/rush --user=myuser...您正在以非特权用户身份运行该命令。

--user=选项有几个限制:

此选项意味着--test并且仅在root使用时有效结合带有-c选项。

当您没有以 root 身份运行该命令时,这可能会触发无效 uid 错误消息。

答案2

当我使用 rush 和 ssh 时我也遇到了类似的问题。

您需要将passwdshadow文件复制groups到 chroot 位置。从 复制/etc到 chroot 位置内的 etc之后your chroot loc/etc/,它现在将解析用户。

在此之前,一旦 ssh 发生并且应用了 chroot,就无法知道用户是谁

相关内容