用户权限

用户权限

有没有什么方法,使用 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

我希望这对你有帮助,丹尼尔

相关内容