bash – 我应该在哪里放置无主日志文件

我有一个使用sudo移入和移出的脚本.某些命令必须以$USER执行,某些命令必须以root身份执行.

目前,我正在后台运行循环以保持sudo活动,因此您执行脚本,输入密码一次,脚本发出它需要的命令(以常规用户身份运行其余部分),然后后台循环终止时脚本的确如此.此脚本仅在受控制的环境中运行,我不担心在此过程中sudo访问权被打开.

但是,我也试图将此脚本记录在以后不会被清理的地方.以下是脚本的相关部分:

#!/bin/bash

logFile="path/to/log/file"

main () {
   # some getopts
}

getOptExample () {
   sudoFunction
   # do some other stuff that takes a really long time
   # and bounces back and forth between sudo and not sudo
   cleanUp
}

getOptOtherExample () {
   sudoFunction
   # do some other stuff that takes a really long time
   # and bounces back and forth between sudo and not sudo
   cleanUp
}

sudoFunction () {
    sudo -v
    while true;
    do
        sudo -n true
        sleep 60
        kill -0 "$$" || exit
    done 2>/dev/null &
}

cleanUp () {
    # remove script file
    # remove tmp dir that we're working in
    # reboot computer to apply all changes
}

(main "$@") 2>&1 | tee $logFile

我无法写入/ var / log,因为脚本的最后一行是在调用sudo函数之前发生的,因此它只具有执行用户的权限.我也无法写入我的tmp目录,因为它变得杂乱起来,我需要在脚本完成后删除那里的文件.此外,在脚本自动完成的工作完成后,该目录没有理由坚持下去.

>我的帐户具有未受影响的主目录,但用户无权在该主目录中创建文件.
>这个脚本正在mac OS上运行,但是,我试图让它与其他/ future / non-mac东西兼容(坚持bash,试图坚持posix,地狱,甚至试图坚持使用Linus’添加到Linux内核的准则).
>我需要至少一次重启才能保留日志文件

我应该在哪里转储此脚本的日志文件:

>易于查找(直观)
>用户可写不带sudo
>不写信给用户
主目录
>重启时不会删除

或者有更好的方法让我这样做(我可以发布整个,巨大的脚本,如果有必要)?

最佳答案
使用基本文件权限或ACL来完成这项工作.

例如,权限中的组部分和用于切换主组的命令newgrp.还要考虑使用例如SGID位.没有人作为所有者

不确定,如果OSX上有ACL,但我希望它存在.只需使用setfacl即可允许用户组访问和写入日志文件.

通常,/ var / log /应该用于日志文件.例如.使用适当的权限在/ var / log / yourscripname中设置文件夹.

转载注明原文:bash – 我应该在哪里放置无主日志文件 - 代码日志