最近一台服务器被***了,***者在服务器上替换了一个系统命令,如ps,ss,netstat,lsof等文件。怎么排查的就不说了。本文的主要目的是写一个检查系统用户的一个脚本,检查哪些系统用户有家目录,哪些用户没有家目录,以及哪些用户可以登录系统。
我们这里的环境有点乱,有的服务器上的web用户可以登录系统,有的系统上却不能登录系统,很是不规范,因此写了这么一个脚本来做检查。接下来,就直接上代码了,主要用到了pwd及spwd模块,比起使用读入/etc/passwd及/etc/shadow文件,然后对其进行处理要方便的多。
# encoding: utf8# written by lavenliu at 20170211import pwdimport spwdsys_users = {}usr_no_passwd = []usr_has_passd = []users_entry = pwd.getpwall()for entry in users_entry: sys_users[entry.pw_name] = entry.pw_shellfor username in sys_users.keys(): pass_entry = spwd.getspnam(username) if pass_entry.sp_pwd == '!!' or pass_entry.sp_pwd == '*': usr_no_passwd.append(pass_entry.sp_nam) else: usr_has_passd.append(pass_entry.sp_nam)print "These users have home directory:"for user, home in sys_users.items(): if home == '/sbin/nologin': continue else: print "%15s: %s" % (user, home)printprint "These users can login system:"for user in usr_has_passd: print user
执行结果为:
# python chkuser.py These users have home directory: sync: /bin/sync shutdown: /sbin/shutdown halt: /sbin/halt root: /bin/bashThese users can login system:root
从执行结果看,目前只有root用户可以登录系统。