Есть ли способ, с помощью которого, используя сценарии оболочки, я могу выполнить программу от имени другого пользователя в каталоге с уникальным (случайным образом) именем, где пользователь имеет доступ к файлам в этом каталоге с помощью rwx, но не может ничего изменить за его пределами.
то есть. Когда программа выполняется с использованием этого сценария в папке, она может получить доступ только к файлам внутри папки и не может изменять какие-либо системные настройки или перемещаться за пределы этой папки
Вы могли использовать rbash
(или bash -r
): это - ограниченная версия bash
это налагает некоторые ограничения пользователю относительно полного удара. От rbash
страница справочника:
Это ведет себя тождественно для избиения за исключением того, что следующее запрещено или не выполнено:
o changing directories with cd o setting or unsetting the values of SHELL, PATH, ENV, or BASH_ENV o specifying command names containing / o specifying a file name containing a / as an argument to the . builtin command o Specifying a filename containing a slash as an argument to the -p option to the hash builtin command o importing function definitions from the shell environment at startup o parsing the value of SHELLOPTS from the shell environment at startup o redirecting output using the >, >|, <>, >&, &>, and >> redirection operators o using the exec builtin command to replace the shell with another command o adding or deleting builtin commands with the -f and -d options to the enable builtin command o Using the enable builtin command to enable disabled shell builtins o specifying the -p option to the command builtin command o turning off restricted mode with set +r or set +o restricted.
Использовать rbash
trasparently, запустите свой сценарий с #!/bin/rbash
.
Надеюсь эта справка.
Использование:
sudo -u USERNAME
РЕДАКТИРОВАНИЕ: Чтобы использовать эту команду без ввода пароля, используйте:
echo PASSWORD | sudo -u USERNAME COMMAND
Замените ПАРОЛЬ паролем ИМЯ ПОЛЬЗОВАТЕЛЯ. Замените USERNAME именем пользователя. Замените КОМАНДУ командой, которую хотите выполнить.
Например:
echo password123 | sudo -u daniel cp ./file ./dir/filecopied
Я надеюсь, что это помогло вам, Даниэль