2

Как создать учетную запись в окне CentOS, чтобы пользователь мог использовать только команды cd и ls, но имел полные права на использование этих команд в файловой системе? Пользователь должен иметь возможность просматривать имена ВСЕХ файлов и каталогов в системе, но не должен иметь возможность просматривать их содержимое, вносить какие-либо изменения и т.д.

1 ответ1

3

Вы могли бы сделать что-то сумасшедшее ... например, написать очень тупую оболочку в виде сценария 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

Вам нужно будет убедиться, что у выбранного вами пользователя достаточно прав, чтобы увидеть все файлы, которые вы хотите, чтобы он мог видеть.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .