Linux系统中管理用户登录及登录信息的处理

来源:互联网 发布:nginx 伪静态配置 编辑:程序博客网 时间:2024/06/08 13:43

用户登录或者访问记录

在Linux系统中,有三个主要的日志子系统:

连接时间日志–由多个程序执行,把纪录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和 utmp文件,使系统管理员能够跟踪谁在何时登录到系统。进程统计–由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。

错误日志–由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。 常用的日志文件如下:

access-log 记录HTTP/web的传输 acct/pacct 记录用户命令 aculog 记录MODEM的活动 btmp 记录失败的纪录 lastlog 记录最近几次成功登录的事件和最后一次不成功的登录 messages 从syslog中记录信息(有的链接到syslog文件) sudolog 记录使用sudo发出的命令 sulog 记录使用su命令的使用 syslog 从syslog中记录信息(通常链接到messages文件) utmp 记录当前登录的每个用户 wtmp 一个用户每次登录进入和退出时间的永久纪录 xferlog 记录FTP会话 

utmp、wtmp和lastlog日志文件是多数重用UNIX日志子系统的关键–保持用户登录进入和退出的纪录。有关当前登录用户的信息记录在文件utmp中;登录进入和退出纪录在文件wtmp中;最后一次登录文件可以用lastlog命令察看。数据交换、关机和重起也记录在wtmp文件中。所有的纪录都包含时间戳。这些文件(lastlog通常不大)在具有大量用户的系统中增长十分迅速。例如wtmp文件可以无限增长,除非定期截取。许多系统以一天或者一周为单位把wtmp配置成循环使用。它通常由cron运行的脚本来修改。这些脚本重新命名并循环使用wtmp文件。通常,wtmp在第一天结束后命名为wtmp.1;第二天后wtmp.1变为wtmp.2等等,直到wtmp. 7。

每次有一个用户登录时,login程序在文件lastlog中察看用户的UID。如果找到了,则把用户上次登录、退出时间和主机名写到标准输出中,然后login程序在lastlog中纪录新的登录时间。在新的lastlog纪录写入后,utmp文件打开并插入用户的utmp纪录。该纪录一直用到用户登录退出时删除。utmp文件被各种命令文件使用,包括who、w、users和finger。

下一步,login程序打开文件wtmp附加用户的utmp纪录。当用户登录退出时,具有更新时间戳的同一utmp纪录附加到文件中。wtmp文件被程序last和ac使用。

1.首先查看当前登录用户:

[root@localhost ~]# whoroot     :0           2017-08-04 16:26root     pts/0        2017-08-04 13:52 (:0.0)lockey pts/1        2017-08-04 06:32 (172.25.254.36)第一列是用户名,第二列是连接的终端,tty表示显示器,pts表示远程连接,第三列是登陆时间

2.查看登录用户行为:

[root@localhost ~]# w 07:46:35 up 2 days, 15:35,  6 users,  load average: 0.03, 0.07, 0.02USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHATroot     :0        Wed16   ?xdm?  35:59   0.26s /opt/gnome/bin/gnome-sessionroot     pts/0     Thu13   21:12m  0.07s  0.49s gnome-terminal --working-directlockey pts/1     06:32    0.00s  0.49s  0.00s sshd: lockey [priv] users 表示当前系统登陆用户总数为6。LOAD AVERAGE 与后面的数字一起表示系统在过去1,5,10分钟内的负载程度,数值越小,系统负载越轻。从第二行开始构成一个表格,共有8个栏目,分别显示各个用户正在做的事情及该用户所占用的系统资料。USER:显示登陆用户帐号名。用户重复登陆,该帐号也会重复出现。TTY:用户登陆所用的终端。FROM:显示用户在何处登陆系统。LOGIN@:是LOGIN AT的意思,表示登陆进入系统的时间。IDLE:用户空闲时间,从用户上一次任务结束后,开始记时。JCPU:一终端代号来区分,表示在某段时间内,所有与该终端相关的进程任务所耗费的CPU时间。PCPU:指WHAT域的任务执行后耗费的CPU时间。WHAT:表示当前执行的任务当登陆系统用户很多的时候,可以在W后面加上某个用户名,则会查看该用户执行任务的情况

3.查看lockey用户执行任务情况

[root@localhost ~]# w lockey 07:40:45 up 2 days, 15:29,  6 users,  load average: 0.07, 0.08, 0.02USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHATlockey pts/1     06:32    0.00s  0.48s  0.00s sshd: linfengfeiye [priv] 

4.查看登陆用户历史

[root@localhost ~]# lastlockey pts/1        118.113.209.13   Sat Nov  7 06:32   still logged in   root     pts/1        118.113.209.13   Sat Nov  7 06:12 - 06:32  (00:20)    root     pts/4        118.113.209.13   Sat Nov  7 05:15 - 06:11  (00:55)    root     pts/2        118.113.209.13   Sat Nov  7 04:21 - 06:41  (02:20)    halo  pts/5        222.211.247.164  Fri Nov  6 22:16 - 22:36  (00:20)    root     pts/2        222.211.247.164  Fri Nov  6 21:53 - 22:36  (00:42)    root     pts/4        222.211.247.164  Fri Nov  6 19:59 - 23:08  (03:08)    halo  pts/8        222.211.247.164  Fri Nov  6 19:57 - 22:16  (02:18)    root     pts/7        222.211.247.164  Fri Nov  6 19:42 - 22:36  (02:53)    root     pts/6        222.212.68.214   Fri Nov  6 19:39 - 21:40  (02:00)    

5.查看halo用户登录历史

[root@localhost ~]# last halohalo  pts/5        222.211.247.164  Fri Nov  6 22:16 - 22:36  (00:20)    halo  pts/8        222.211.247.164  Fri Nov  6 19:57 - 22:16  (02:18)     halo  pts/6        118.113.236.146  Fri Nov  6 16:39 - 16:43  (00:03)    

6.剔除指定用户

比如想踢除lockey这个用户和他的所有开启的程序,危险做法为:

pkill -u lockey注意:这个命令实际上很危险,要相当小心的执行,负责可能会导致系统崩溃掉!!!

安全的做法是先查看终端号,然后查看该终端执行的所有进程,根据进程号来停止服务
安全剔除用户

ps -ef| grep pts/0得到用户登录相应的进程号pid后执行.kill -9 pid

7.重点来了(其实这才是写这篇博客的初衷)

如何消去一个用户或者所有用户的登录信息?

比如说你通过ssh登录了别人的系统之后不想让他查找到你的登录踪迹,那么,接下来就是重点了:

清空访问登陆信息

[root@foundation36  ~]#>/var/log/btmp#清除登录失败的用户信息,这些信息在未清除前可以通过lastb命令查看[root@foundation36  ~]#>/var/log/wtmp#清空一个用户每次登录进入和退出时间的永久纪录的用户信息,这些信息在未清除前可以通过last命令查看

做完上边两步,你就暂时的清空了以前的所有用户登录信息,但是你下次登录之后又会被记录下来,那么怎么办呢,请往下看:

[root@foundation36  ~]# echo '12 * * * * root >/var/log/btmp' > /etc/cron.d/test#添加定时执行清理动作,频率为每小时的12分清理一次[root@foundation36  ~]# echo '12 * * * * root >/var/log/wtmp' > /etc/cron.d/test1

如果你想和你的朋友开个玩笑,你也可以通过修改登录信息来误导他,这个有点邪恶额。。

sed 's/lockey/halo/g' -i /var/log/wtmp(btmp)#修改登录用户名称sed 's/118.113.209.13/118.113.209.113/g'  -i /var/log/wtmp(btmp)#修改登录用户的ip