Существует два подхода, которые я рассмотрел бы;
Лучший способ сделать это - использовать файл authorized_keys. Вы можете ограничить пользователя запуском только одной команды с одним ключом. Таким образом, если пользователь вошел в систему с одним указанным ключом, он сможет выполнить только одну команду.
Настройка заключается в использовании директивы command = "", указанной в файле authorized_keys. Синтаксис для этого выглядит следующим образом:
command ="command", KEY
Это говорит SSH запустить команду, а затем выйти. Это эффективно ограничивает вашу способность запускать команды на удаленном сервере.
Для безопасного выполнения нескольких команд у вас есть несколько вариантов. Во-первых, рассмотрите возможность вызова сценария вместо команды. Например, запустите top, df -k и имя хоста из сценария оболочки с именем myscript.sh
и установите command = "/ path / to / myscript.sh"
. Во-вторых, если вам нужно запускать несколько команд в разное время в течение дня на одном и том же хосте,
Создайте нового пользователя для этого «кого-то» и поместите свой perl
скрипт в его домашний каталог, а затем сделайте запись в его .bash_profile
для вызов сценария perl
.
FYI: ~ / .bash_profile запускается во время каждой оболочки входа (например: ssh, переключение пользователя и т. д.)
Пример:
suku@ubuntu-vm:~$ cat hello.pl
#!/usr/bin/perl
print "Hello World\n";
suku@ubuntu-vm:~$ cat .bash_profile
perl ~/hello.pl
suku@ubuntu-vm:~$ su - suku
Password:
Hello World
[EDIT]
useradd -m username
will create a user with his home directory as /home/username
If you really want to limit this user's scope only to read and execute your perl script, you need to set immutable attribute for his home directory
Setting immutable attribute:
sudo chattr +i /home/username
Removing immutable attribute:
sudo chattr -i /home/username
If you do so, this user can't touch anything new in his home directory. But he can execute/read your perl script