无 root 权限时如何在/var/log 下写入日志 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
zedpass
V2EX    Linux

无 root 权限时如何在/var/log 下写入日志

  •  
  •   zedpass 2022-04-19 17:05:56 +08:00 3678 次点击
    这是一个创建于 1351 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有一个 python 告警脚本部署在多台服务器,现在需要让这个脚本的运行日志写入到 /var/log/zabbix 目录下,但是没有服务器的 root 权限,无法直接在 /var/log/zabbix 下创建日志文件,尝试使用 syslog ,可以无 root 权限写入日志到 /var/log/syslog ,google 了一圈没找到怎么写入到 /var/log 下的指定目录,求解

    cpstar
        1
    cpstar  
       2022-04-19 17:28:17 +08:00
    先 root 创建一个 /var/log/zabbix 然后 chown 给相应用户?
    MilkShake
        2
    MilkShake  
       2022-04-19 17:31:23 +08:00
    目录权限修改一下吧。
    adoal
        3
    adoal  
       2022-04-19 18:21:05 +08:00 via iPhone
    你的脚本又不是 zabbix 的一部分,为什么要往 /var/log/zabbix 下写东西?
    dndx
        4
    dndx  
       2022-04-19 18:32:46 +08:00
    syslog
    k9982874
        5
    k9982874  
       2022-04-19 18:48:44 +08:00
    把你的用户加入 zabbix 组,设置目录对 zabbix 组可写
    documentzhangx66
        6
    documentzhangx66  
       2022-04-19 19:16:18 +08:00
    1 楼正解,就拿装 Oracle 的过程来分析一下:

    以 root 用户登录 shell:

    1.添加用户 oracle:
    useradd oracle

    2.添加用户组 oinstall
    /usr/sbin/groupadd oinstall

    3.把 oracle 用户拉到 oinstall 用户组里
    /usr/sbin/usermod -g oinstall -G dba oracle

    4.创建目录,因为当前用户是 root ,所以创建的目录,权限属于 root:
    mkdir -p /opt/oracle/

    5.把目录 /opt/oracle 的所有权限赋值给用户 oracle 与用户组 oinstall
    chown -R oracle.oinstall /opt/oracle
    zedpass
        7
    zedpass  
    OP
       2022-04-19 21:19:38 +08:00
    @adoal 因为是 zabbix 的告警脚本,所以想统一放到 zabbix 目录下
    zedpass
        8
    zedpass  
    OP
       2022-04-19 21:20:42 +08:00
    @dndx syslog 好像只能写入到 /var/log/syslog 下面?没找到自定义路径的方法
    adoal
        9
    adoal  
       2022-04-19 23:01:56 +08:00   4
    @zedpass “zabbix 的告警脚本”是什么意思?是你从 zabbix 外部独立运行这个脚本,还是会在 zabbix 运行时触发?
    前者的话跟 zabbix 没有任何关系,只是你从心理上觉得适合“统一放到 zabbix 目录下”而已。如果是后者,(我不懂 zabbix ,按一般情况推理)那运行时是以 zabbix 身份启动的,那一般不是很建议自己搞日志,应该通过 zabbix 提供的机制……如果没有的话,真是个人畜无害的小白花纯脚本,需要自己来搞日志,那也不应该放到 /var/log/zabbix 下。

    另外,你这个话题提供的 context 不太足,让人没办法判断。你在这个工作里是什么角色?服务器拿不到 root ,那我按一般情况推理来假设,你应该不是这个服务器的“法定”运维管理人……那应该去找对应的人协商应该怎么办。是给你权限,还是由对方部署,还是按对方的要求把日志文件写到指定的地方……总之靠你在 v2 就这么没有 context 地莫名其妙发一帖,别人又不知道你的实际情况,没法给出准确的建议。

    一般来说,“我没有服务器 root 权限”这事不是个纯粹的技术问题。它的本质是“我并不是所在的组织机构里认可的能合规管理这台服务器的人”,是人的职权问题。操作系统里帐号、文件系统的权限,只不过是管理策略落实到技术上的投影。你首要该做的是把职权的障碍打通。
    adoal
        10
    adoal  
       2022-04-19 23:03:31 +08:00
    @zedpass syslog 可以通过 /etc/syslog.conf (或者 rsyslog.conf )来配置,但……这是系统全局配置,肯定又要 root 的。
    raysonx
        11
    raysonx  
       2022-04-20 07:39:40 +08:00   1
    可以按 1 楼的方法先为你的脚本创建一个用户,比如 myapp ,然后创建于一个子目录 /var/log/myapp ,用 chown myapp: -R /var/log/myapp 修改目录权限。
    然而现在更优雅的办法是直接把日志输出到 stderr ,然后用 systemd 等工具启动服务自动管理日志。
    HeyEvan
        12
    HeyEvan  
       2022-04-20 12:57:41 +08:00
    programName="Your Program"

    tee /etc/rsyslog.d/${programName:?'-'}.conf << EOF
    \$template CleanMsgFormat, "%msg%\n"
    \$template ${programName:?'-'}LogPath, "/var/log/zabbix/%programname%-%\$YEAR%-%\$MONTH%-%\$DAY%.log"
    if \$programname == '${programName:?'-'}' then ?${programName:?'-'}LogPath; CleanMsgFormat
    & stop
    EOF

    重启就好了
    systemctl restart rsyslog
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1014 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 22:59 PVG 06:59 LAX 14:59 JFK 17:59
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86