You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux服务器下以SA2身份获取日志并开放给SA1的实现方案

解决方案:让SA1间接访问SA2专属日志

方案一:通过sudo权限控制(推荐,遵循最小权限原则)

前置配置

  1. 使用visudo命令编辑sudoers配置文件(必须用此命令,避免语法错误导致sudo失效),添加以下规则:
    SA1 ALL=(SA2) NOPASSWD: /bin/cp /path/to/sa2-restricted-logs/* /public-shared/
    
    这条规则限制SA1仅能无需SA2密码,以SA2身份执行指定的日志复制命令,避免权限过度开放。

编写执行脚本

创建脚本get_sa2_logs.sh(SA1需拥有该脚本的读写执行权限):

#!/bin/bash

# 根据实际环境修改路径
SA2_LOG_SOURCE="/var/log/sa2-only/"
PUBLIC_TARGET="/public-shared/"

# 以SA2身份执行日志复制
sudo -u SA2 cp -rf "${SA2_LOG_SOURCE}"* "${PUBLIC_TARGET}"

# 输出执行结果
if [ $? -eq 0 ]; then
    echo "日志复制成功,可前往${PUBLIC_TARGET}查看"
else
    echo "复制失败,请检查路径或sudo配置是否正确"
fi

给脚本添加执行权限:

chmod +x get_sa2_logs.sh

使用方式

团队成员用SA1登录服务器后,直接运行脚本即可:

./get_sa2_logs.sh

完成后就能在/public-shared/目录下访问SA2专属日志。


方案二:SA1免密SSH登录本地SA2(适用于需执行复杂命令的场景)

前置配置

  1. 切换到SA1账号,生成无密码SSH密钥对:
    ssh-keygen -t rsa
    
    执行过程中一路回车,不要设置密钥密码。
  2. 将SA1的公钥添加到SA2的SSH授权列表:
    sudo -u SA2 mkdir -p ~SA2/.ssh
    cat ~SA1/.ssh/id_rsa.pub | sudo -u SA2 tee -a ~SA2/.ssh/authorized_keys
    sudo -u SA2 chmod 600 ~SA2/.ssh/authorized_keys
    sudo -u SA2 chmod 700 ~SA2/.ssh
    
    配置完成后,SA1就能免密通过SSH登录本地的SA2账号。

编写执行脚本

创建脚本fetch_sa2_logs_via_ssh.sh:

#!/bin/bash

SA2_LOG_SOURCE="/var/log/sa2-restricted/"
PUBLIC_TARGET="/public-shared/"

# 本地SSH登录SA2并执行日志复制
ssh SA2@localhost "cp -rf ${SA2_LOG_SOURCE}* ${PUBLIC_TARGET}"

# 验证执行结果
if [ $? -eq 0 ]; then
    echo "日志已同步到公共目录"
else
    echo "同步失败,请检查SSH配置或路径"
fi

给脚本添加执行权限:

chmod +x fetch_sa2_logs_via_ssh.sh

使用方式

SA1登录服务器后运行脚本即可,无需输入SA2密码。


安全提示

  • 优先采用方案一,sudo规则严格限制了SA1的操作范围,避免SA2账号被完全控制
  • 确保公共目录/public-shared/仅用于存放共享日志,避免存入其他敏感文件
  • 定期检查sudoers配置或SSH授权密钥,防止权限配置被篡改

内容的提问来源于stack exchange,提问作者Vidhya Dhara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:12:46