Я разработал Perl-скрипт, который обеспечивает функциональность на основе меню, позволяющую пользователям выполнять некоторые простые задачи.
Мне нужно, чтобы пользователи могли выполнять такие задачи, как копирование файлов (сохранение текущей даты и разрешений), запуск других программ (например, less или vi) от имени другого пользователя.Скрипт использует много функций system ().Я хочу, чтобы пользователи запускали меню, вызывая:
sudo -u perluser /usr/bin/perl /data/perlscripts/scripta.pl
Это должно запустить скрипт как пользователь perl, что он делает, а затем выполнять различные задачи в зависимости от того, что выберет пользователь.Проблема заключается в том, что всякий раз, когда я использую системный вызов, такой как
system("clear");
, я получаю следующую ошибку
Can't exec "clear": Permission denied at /data/perlscripts/scripta.pl line 3
Если я запускаю скрипт, войдя в систему как perluser, то все это выполняется успешно.
Есть ли способ заставить это работать?Я не хочу, чтобы пользователи могли входить в систему как привилегированный пользователь, поскольку мне нужно контролировать, что они могут запускать.Я также не хочу запускать такие команды, как
system("sudo -u perluser clear");
, поскольку тогда мне потребовалась бы другая команда для настройки всех команд sudo, которые я хотел запустить (что они, вероятно, откажутся выполнять), и этоне будет масштабируемым, если мне придется добавить дополнительные команды в какой-то момент.
Спасибо,