受限 shell 对新创建的用户不起作用(ubuntu 18.04)

受限 shell 对新创建的用户不起作用(ubuntu 18.04)

我想创建一个具有受限 shell 的新用户,因此我:

ln -s bash rbash  # create a symbolic link to bash with a name "rbash" 

useradd -s /bin/rbash student # add a new user with a shell pointing to that symlink I've created

passwd student # create a password 

su - student # Login as a user 

但是之后我可以通过 cd 进入任意位置。看来受限 shell 不起作用。为什么?

答案1

在中man bash,限制壳被提及如下:

   If bash is started with the name rbash, or the -r option is supplied at
   invocation, the shell becomes restricted.

但是,Ubuntu 18.04 中的版本似乎su用 替换了 shell 的名称su;因此当 bash 查看它时,argv[0]它会看到su(或在用、或选项之一调用的-su情况下) 而不是(或)。su--l--loginrbash-rbash

您实际上可以通过编辑文件/etc/login.defs并注释掉SU_NAME设置来改变这种行为:

# If defined, the command name to display when running "su -".  For
# example, if this is defined as "su" then a "ps" will display the
# command is "-su".  If not defined, then "ps" would display the
# name of the shell actually being run, e.g. something like "-sh".
#
# SU_NAME               su

我无法说这是否是一个好主意,或者是否会产生其他意想不到的后果。请注意,Ubuntu 的较新版本可能使用不同的实现/bin/su(来自util-linux包),可能不会表现出相同的行为。

相关内容