权限取决于传递给应用程序的参数

权限取决于传递给应用程序的参数

我有一个 Java 应用程序,它可以写入我拥有的一个非常重要的表。这是受 sudo 保护的,但此应用程序需要参数来决定输出应该去往何处。默认值是 REAL DEAL,但“输出”参数优先于默认值,因此如果用户提供了他们有写入权限的路径,例如:/home/username/mystuff那么我希望允许用户写入这些目录。

该应用程序是在 shell 脚本中启动的,所以我想知道我是否可以检查字符串不相等/path/to/real/deal且不为空(因为/path/to/real/deal是默认值)并允许用户写入他们有权限的地方。

我对 Linux 权限的印象是它与应用程序本身绑定并且不能有条件地批准,但我想知道是否有一些 bash fu 或替代方法来获得我想要的结果。

使用Ubuntu 10.04.4 LTS

答案1

Linux 权限与用户绑定(而不是与应用程序绑定)。您可以通过以普通用户身份启动脚本来获得所需的结果:

OUTFILE="/home/username/mystuff"
DEFAULT="/path/to/real/deal"
touch "$OUTFILE" || OUTFILE="$DEFAULT"
sudo java_app "$OUTFILE"

Touch 无法在用户没有写入权限的目录中工作,因此在这种情况下 touch 将失败,输出文件将获取默认路径/文件名。Sudo
在该测试之后调用。

相关内容