Как создать учетную запись в окне CentOS, чтобы пользователь мог использовать только команды cd и ls, но имел полные права на использование этих команд в файловой системе? Пользователь должен иметь возможность просматривать имена ВСЕХ файлов и каталогов в системе, но не должен иметь возможность просматривать их содержимое, вносить какие-либо изменения и т.д.
1 ответ
Вы могли бы сделать что-то сумасшедшее ... например, написать очень тупую оболочку в виде сценария bash. Затем вы можете использовать этот bash-скрипт в качестве оболочки для этого пользователя.
создайте файл с именем 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 оболочкой, которая используется, когда пользователь входит в систему. Вы можете сделать это, заменив оболочку для этого пользователя в файле /etc /passwd или используя 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
Вам нужно будет убедиться, что у выбранного вами пользователя достаточно прав, чтобы увидеть все файлы, которые вы хотите, чтобы он мог видеть.