有没有什么方法,使用 shell 脚本,我可以以另一个用户的身份在一个唯一(随机)命名的目录中执行一个程序,该用户可以对该目录中的所有文件进行 rwx 访问,但不能更改其外部的任何内容。
即,当程序在文件夹中使用此脚本执行时,它只能访问文件夹内的文件,而不能更改任何系统设置或导航到此文件夹之外
答案1
您可以使用rbash
(或bash -r
):它是 的受限版本bash
,对用户施加了一些与完整 bash 相关的限制。摘自rbash
手册页:
它的行为与 bash 相同,但不允许或不执行下列操作:
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
,请使用 启动您的脚本#!/bin/rbash
。
希望这有帮助。
答案2
使用:
sudo -u USERNAME
编辑:要使用此命令而不输入密码,请使用:
echo PASSWORD | sudo -u USERNAME COMMAND
将 PASSWORD 替换为 USERNAME 的密码。将 USERNAME 替换为用户名。将 COMMAND 替换为要执行的命令。
例如:
echo password123 | sudo -u daniel cp ./file ./dir/filecopied
我希望这对你有帮助,丹尼尔