如何在 CentOS 机器上创建一个帐户,以便用户只能使用 cd 和 ls 命令,但拥有在文件系统上任何地方使用这些命令的完整权限?用户必须能够查看系统上所有文件和目录的名称,但不能查看其内容、进行任何更改等。
答案1
您可以做一些疯狂的事情……例如编写一个非常愚蠢的 shell 作为 bash 脚本。然后您可以将该 bash 脚本用作该用户的 shell。
创建一个名为 dumb_shell 的文件并将其粘贴在其中:
#!/bin/bash
printf "$(pwd)$ "
while read line
do
command=$(echo $line | awk '{print $1}')
# check if it is one of the valid commands
if [ "$command" = "ls" -o "$command" = "cd" -o "$command" = "pwd" -o "$command" = "exit" ]
then
#check for possible security vulnerabilities in the command
if [ "$(echo $line | awk '/;|>|<|&|\|/ {print}')" = "" ]
then
#execute the command
$line
fi
fi
printf "$(pwd)$ "
done
当我测试这个时,我将文件放在我的 /opt/ 目录中。确保文件是可执行的
chmod a+x /opt/dumb_shell
使 dumb_shell 成为用户登录时使用的 shell。您可以通过在 /etc/passwd 文件中替换该用户的 shell 或使用 来实现这一点usermod -s /opt/dumb_shell username
。
/etc/passwd 中的条目应按如下所示进行更改:
user:x:1001:1001:user,,,:/home/user:/bin/bash
变成:
user:x:1001:1001:user,,,:/home/user:/opt/dumb_shell
您必须确保您选择的用户具有足够的权限来查看您希望他们能够看到的所有文件。