登录后自动运行Bash脚本
问题描述:
我编写了一个脚本,用于发送登录到日志文件的人的日期和用户名以记录谁已经登录。我想知道如何将此脚本设置为当用户登录时自动执行,而不必在终端中手动运行它。注:用户名是登录的当前用户登录后自动运行Bash脚本
我的代码:
#!/bin/bash
printf "$(date) $HOSTNAME booted!\n" >> /home/USERNAME/boot.log
答
解决此问题的更优雅的方法是从日志文件中读取,这些日志文件已被写入并且不能被用户更改。没有人可以说它比Bjørne Malmanger's in his answer更好:
我不会相信用户给你提供的信息。作为root你 把它;-)
一个很好的方式做,这是last
命令,这是伟大的,因为它巧妙地显示所有登录:图形,控制台和SSH。
last
不太优雅但仍然安全的方法是在/var/log/auth.log上执行grep。在我的Gnome/Ubuntu系统,我可以用它来追踪图形登录:需要为每个登录类型被发现
grep "session opened for user USERNAME"
为您的机器正确的模式:图形,控制台和SSH。这很麻烦,但是如果你需要的信息比last
的信息更远,你可能需要这样做。
直接回答你的问题:
您可以修改这样的脚本来获取用户名
#!bin/bash
printf "$(date) $HOSTNAME booted!\n" >> /home/$(whoami)/boot.log
这行添加到/ etc/profile文件
. /path/to/script.sh
这是不安全,但因为用户将能够编辑自己的日志
答
为什么不'您是否使用last
命令?
我不会相信用户给你提供的信息。作为根你采取;-)
是否有任何安全考虑?你相信用户吗?特别是 - 如果用户有能力禁用日志记录或篡改他/她登录的现有记录,那么这样做是否正确? – ruakh 2012-03-12 20:21:48