`
brucectl
  • 浏览: 176764 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

多用户登录自动保存history到统一目录

 
阅读更多
场景:生产环境下,多个普通用户登录,登录后自动记录history操作到某个统一目录保存。

具体要求:

1) 每个用户登录后自动创建子目录及history记录文件;

2) 允许用户创建history记录文件并追加内容,不允许修改和删除;

3) 不允许用户修改和删除其他用户的子目录;

4) 不允许用户查看其他用户的子目录内容;

解决方案:

编写 /etc/profile 文件,添加下面内容
# securiry record history
# add by shenxiaoran

history
USER_IP=$(who am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g')
if [ "$USER_IP" = "" ];then
    USER_IP=`hostname`
fi

if [ ! -d /tmp/user_history ];then
    mkdir /tmp/user_history
    chown root.root /tmp/user_history
    chmod 777 /tmp/user_history
    chattr +a /tmp/user_history
fi

if [ ! -d /tmp/user_history/${LOGNAME} ];then
    mkdir -p /tmp/user_history/${LOGNAME}
fi

export HISTTIMEFORMAT='%F %T '
export HISTSIZE='40960'
time=$(date '+%Y%m%d-%H:%M:%S')
export HISTFILE="/tmp/user_history/${LOGNAME}/${USER_IP}[$time]"
chmod 600 /tmp/user_history/${LOGNAME}/*history* 2>/dev/null

保存

# source  /etc/profile 生效

测试:

创建普通用户,passwd 用户口令,使用普通用户登录

普通用户登录后不会创建history记录文件,退出后立即生成,如下所示:

# ll /tmp/user_history/root/
total 8
-rw------- 1 root root   81 Apr  3 11:43 192.168.11.50[20150403-03:52:17]
-rw------- 1 root root 1239 Apr  3 11:45 192.168.11.50[20150403-11:39:11]
注意:经过修改/etc/profile文件以后,用户登录后输入history命令只能查看到本次登录的历史记录,若想看以前的可以cat ~/.bash_history文件。

用户每开一个终端都会在/tmp/user_history下面保存一个文件,记录当前终端的history信息。

查看文件内容 #cat 192.168.11.50[20150403-11:39:11]

#1428032352
history
#1428032387
cd /tmp/user_history/root/

说明:这里的#1428032352是以Unix时间表示的形式,如果想转换成human模式,可以使用date -d命令转换

# date -d @1428032352
Fri Apr  3 11:39:12 CST 2015

# date -d @1428032352 +'%F %T'
2015-04-03 11:39:12
分享到:
评论

相关推荐

    history_weather_2.zip_GSVU_SOG_history_天气预报 _爬取 天气

    标题中的"history_weather_2.zip_GSVU_SOG_history_天气预报 _爬取 天气"揭示了这个压缩包文件的主要内容,它包含了用于爬取并处理历史天气预报数据的程序,可能涉及到特定的地点(GSVU和SOG可能是地理坐标或气象站...

    PLSQL Developer使用小技巧

    PLSQL Developer允许用户自动保存和恢复桌面布局,确保下次启动时能够快速回到上次的工作状态。 - 在“工具”(Tools)>“首选项”(Preferences)>“用户界面”(User Interface)中,选择“自动保存桌面”(Auto...

    KODExplorer 芒果云-资源管理器

    - 多用户、权限控制: - 可以建立权限组,将功能分配给权限组 - 添加用户,选择所属的权限组。 - 权限按功能划分成颗粒,可以任意配置,例如普通使用者、游客等 - 搜索:支持递归搜索,可选择是否搜索文件内容。 - ...

    cmd操作命令和linux命令大全收集

    copy 路径文件名1 路径文件名2 /y 复制文件1到指定的目录为文件2,用参数/y就同时取消确认你要改写一份现存目录文件 copy c:srv.exe ipadmin$ 复制本地c:srv.exe到对方的admin下 copy 1st.jpg/b+2st.txt/a 3st....

    first-summmmm

    可能涉及到`history`命令的使用,以及如何配置.bashrc文件以优化命令历史记录功能。 6. **script_envset.zip**:环境变量和脚本编程是Linux系统自动化中的关键部分。这个文件可能包含如何设置和使用环境变量(如...

    合并Firefox历史记录并轻松修复丢失的图标_Go_下载.zip

    合并过程可能包括复制和导入places.sqlite文件,或者使用第三方工具如Firefox History Merger,这个工具能够帮助用户将多个Firefox配置文件的历史记录整合到一起。 Firefox History Merger,正如压缩包中的文件名所...

    万像网管2004V943

    服务端则部署在服务器上,处理来自各个客户端的请求,如用户登录、计费计算、权限管理等。服务器上的密码可修改,意味着管理员可以灵活地设置和更改系统的安全设置,确保对网吧运营的全面控制。 压缩包中的文件名称...

    BeyondTxt超越

    这些文件由Visual Studio等IDE自动生成,用于在运行时构建和管理用户界面,比如主窗口(mainForm)、关于对话框(about)、查找字符串功能(FindStr)、跳转行号功能(goLine)以及历史记录功能(history)的界面...

    vscode插件

    6. **版本控制集成**:对于Git用户,"Git History"插件可以方便地查看文件和分支的修改历史,而"Git Project Manager"帮助管理多个Git项目。 7. **代码片段管理**:“Code Spell Checker”可以检查代码中的拼写错误...

    vim配置大全----

    3. **错误提示**:`set noebornoerrorbells`和`set confirm`,前者禁用了错误铃声,后者在删除非空目录时要求确认,提升了用户体验。 4. **自动缩进与制表符设置**: - `set autoindent`与`set cindent`自动调整...

    ISaGRAF 功能操作

    ISaGRAF中的项目组是指同一根目录下的多个项目组成的集合,每个项目组有自己的名称。系统默认包含两个项目组:“Default”(工作区)和“Samples”(示例应用)。 #### 二. 联机调试 (DEBUG) 联机调试是验证程序...

    browsinghistoryview-x64.zip|browsinghistoryview-x64.zip

    2. **多浏览器支持**:不仅限于一种浏览器,用户可以查看多种浏览器的浏览记录,统一管理。 3. **数据排序与筛选**:根据需要,用户可以按日期、URL、访问次数等标准对数据进行排序,并能筛选特定的搜索词或网站。 4...

    Oracle 12C 数据字典视图概念深入浅出

    通过元数据链接,PDB可以访问到根目录中这些视图的元数据。 - **对象链接**:当字典表存储的是与每个PDB相关的数据时,会使用对象链接。这种链接不仅提供了对视图元数据的访问,还可以访问实际的数据。 #### 四、...

    数据库课程设计网吧管理系统.docx

    - **History表**:保存用户的上机记录,包括开始时间、结束时间和应付费用等信息。 - **Member表**:管理会员账户信息,如用户名、密码、折扣等。 综上所述,这套网吧管理系统不仅考虑到了基本的数据管理需求,...

    VSS的安装教程

    - **组内协调**: VSS通过确保在任何时候只有一个人能修改特定文件来避免冲突,除非管理员特别允许多用户同时修改,并且禁止他们之间的修改覆盖。 - **版本跟踪**: VSS能够存储历史版本的文件,并提供方便的方法来...

    有错的.vimrc配置文件

    - `sethistory=500`:增加了命令历史的存储量,方便用户查找和重复执行过往的命令。 - `filetype plugin on` 和 `filetype indent on`:自动加载文件类型插件和相应的缩进规则,提高了不同文件类型的编辑体验。 ###...

    TODO-APP:使用Backbone.js开发ud989的项目

    反之,用户在界面上的操作也会反映到模型上。 4. **路由器(Router)**:路由器用于处理URL和应用状态之间的映射,实现单页面应用(SPA)的导航。在待办事项应用中,不同的URL可能对应不同的待办事项列表状态。 5....

Global site tag (gtag.js) - Google Analytics