我有一个 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
在该测试之后调用。