完善bash历史命令审核


1. 下载bash-4.2版本源码包,修改其中的源代码重新编译安装:


wget http://mirrors.ustc.edu.cn/gnu/bash/bash-4.2.tar.gz


2. 修改源码包中的根目录下 config-top.h 文件.

#define SSH_SOURCE_BASHRC
#define SYSLOG_HISTORY

去掉以上两项的注释即可


3. 修改源码包中根目录下 bashhist.c 文件,大概在705行.


/* void
bash_syslog_history (line)
     const char *line;
{
  char trunc[SYSLOG_MAXLEN];


  if (strlen(line) < SYSLOG_MAXLEN)
    syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "HISTORY: PID=%d UID=%d %s", getpid(), current_user.uid, line);
  else
    {
      strncpy (trunc, line, SYSLOG_MAXLEN);
      trunc[SYSLOG_MAXLEN - 1] = '\0';
      syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "HISTORY (TRUNCATED): PID=%d UID=%d %s", getpid(), current_user.uid, trunc);
    }
}
*/
注释以上的代码,添加一下代码:
# ---------------------------------------------------------------------------------------------------------------- #
void
bash_syslog_history (line)
     const char *line;
{
  char trunc[SYSLOG_MAXLEN];
     const char *p;
     p = getenv("NAME_OF_KEY");
  if (strlen(line) < SYSLOG_MAXLEN)
    syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "HISTORY: PID=%d PPID=%d SID=%d  User=%s USER=%s CMD=%s", getpid(), getppid(), getsid(getpid()),  current_user.user_name, p, line);
  else
    {
      strncpy (trunc, line, SYSLOG_MAXLEN);
      trunc[SYSLOG_MAXLEN - 1] = '\0';
      syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "HISTORY (TRUNCATED): PID=%d  PPID=%d SID=%d User=%s USER=%s CMD=%s", getpid(), getppid(), getsid(getpid()), current_user.user_name, p, trunc);
    }
}
# ---------------------------------------------------------------------------------------------------------------- #


4. 编译安装,默认安装在 /usr/local/bin/ 下


./configure && make && make install



5. 用以下脚本内容重写 /root/.bashrc 文件.

# .bashrc
fcomp="/tmp/file"
authorized_keys="$HOME/.ssh/authorized_keys"
secure="/var/log/secure"
record="/var/log/login"
rsager=$(awk -vp=$PPID '/Found matching RSA key/ && $0~p {f=$NF}END{print f}' $secure)
mkdir -p $record

while read LINE
do
        echo $LINE > $fcomp
        name=$(echo $LINE|awk '{print $3}')
        nowrsa=$(ssh-keygen -lf $fcomp|awk '{print $2}')
        if [[ $rsager = $nowrsa ]];then
                NAME_OF_KEY=$name
                readonly NAME_OF_KEY
                export NAME_OF_KEY HISTFILE="$record/$name"
        fi
done < $authorized_keys
rm $fcomp

[ "$BASH_EXECUTION_STRING" ] && logger -t -bash -s "HISTORY $SSH_CLIENT USER=$NAME_OF_KEY CMD=$BASH_EXECUTION_STRING " &>/dev/null

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

6. 修改 /etc/passwd 中的登录shell

sed -i.bak 's#/bin/bash#/usr/local/bin/bash#g' /etc/passwd
mv /bin/{bash,bash.bak}
ln -s /usr/local/bin/bash /bin/bash



重新登陆了即可.


参考: http://m.oschina.net/blog/78441

### 关于Git团队开发中的第二次提交及相关操作 在Git团队协作中,第二次提交通常涉及对已有更改的进一步完善或修复。以下是关于如何高效完成这一过程的最佳实践以及具体的操作方法。 #### 1. 更新本地分支至最新状态 为了确保第二次提交基于最新的代码库,在执行任何新改动之前,应先同步远程仓库的状态到本地分支: ```bash git fetch origin git rebase origin/main # 假设 main 是主分支名称 ``` 通过 `fetch` 获取远程更新而不立即合并,再利用 `rebase` 将本地变更应用到最新版本之上[^4]。 #### 2. 修改与测试新增功能/修正错误 继续实现未完成的功能或者解决第一次评审反馈指出的问题,并进行全面测试验证其正确性和稳定性。 #### 3. 阶段化添加修改内容 只针对本次改进部分做增量式的阶段加入暂存区而非全部重新纳入: ```bash git add -p # 交互式分块选择要提交的部分 ``` 这种方式有助于精确控制哪些变化被记录下来用于此次提交[^2]。 #### 4. 编写清晰有意义的Commit Message 遵循既定格式撰写描述性的提交信息以便后续追踪理解每次变动原因及其影响范围: - **首行**: 简短概括(不超过70字符),采用祈使句形式表达动作。 - **空一行**. - **主体段落**(可选): 更详细的解释背景动机等补充细节;每行长度建议保持在约72字以内便于阅读. 例如: ```text fix: address NPE issue when user profile is null Ensure proper handling of uninitialized profiles by adding default values initialization logic before accessing properties. ``` 上述例子展示了如何按照标准构建一个有效的commit message结构. #### 5. 执行实际提交行为 一旦准备就绪可以正式提交这些调整: ```bash git commit --amend # 如果希望合并最后一次提交的历史成为单一条目时使用此命令代替常规单独创建新的提交对象 # 或者正常方式如下所示 git commit -m "<type>: <subject>" ``` 注意如果选择了前者(--amend选项),那么它会把当前工作树里的改变追加到最后那个尚未推送出去的提交里去形成一个新的修订版号,因此适用于那些还未分享给其他人的个人草稿性质的小修小补场景下比较合适;而后者则是完全独立的新一轮提交流程[^1]. 最后一步就是再次推送到远端服务器让所有人可见我们的劳动成果啦! ```bash git push origin HEAD:refs/for/<branch_name> # 对于 Gerrit 类型审核机制下的项目可能需要这样指定目标分支名来发起Code Review请求 # 普通情况则简单些即可满足需求 git push origin <your_branch> ``` 以上便是围绕着"Git团队协作 第二次提交"所展开的一系列推荐做法概述[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值