root / image_creator / os_type / unix.py @ 9297c398
History | View | Annotate | Download (1.7 kB)
1 | aa2062ba | Nikos Skalkotos | #!/usr/bin/env python
|
---|---|---|---|
2 | aa2062ba | Nikos Skalkotos | |
3 | aa2062ba | Nikos Skalkotos | import re |
4 | 8c574358 | Nikos Skalkotos | import sys |
5 | aa2062ba | Nikos Skalkotos | |
6 | aa2062ba | Nikos Skalkotos | from image_creator.os_type import OSBase |
7 | aa2062ba | Nikos Skalkotos | |
8 | 8c574358 | Nikos Skalkotos | |
9 | aa2062ba | Nikos Skalkotos | class Unix(OSBase): |
10 | 0d5a999d | Nikos Skalkotos | |
11 | 0d5a999d | Nikos Skalkotos | sensitive_userdata = ['.bash_history']
|
12 | 0d5a999d | Nikos Skalkotos | |
13 | aa2062ba | Nikos Skalkotos | def get_metadata(self): |
14 | aa2062ba | Nikos Skalkotos | meta = super(Unix, self).get_metadata() |
15 | aa2062ba | Nikos Skalkotos | meta["USERS"] = " ".join(self.get_passworded_users()) |
16 | aa2062ba | Nikos Skalkotos | return meta
|
17 | aa2062ba | Nikos Skalkotos | |
18 | aa2062ba | Nikos Skalkotos | def get_passworded_users(self): |
19 | aa2062ba | Nikos Skalkotos | users = [] |
20 | aa2062ba | Nikos Skalkotos | regexp = re.compile('(\S+):((?:!\S+)|(?:[^!*]\S+)|):(?:\S*:){6}')
|
21 | aa2062ba | Nikos Skalkotos | |
22 | 36e348b6 | Nikos Skalkotos | for line in self.g.cat('/etc/shadow').splitlines(): |
23 | aa2062ba | Nikos Skalkotos | match = regexp.match(line) |
24 | aa2062ba | Nikos Skalkotos | if not match: |
25 | aa2062ba | Nikos Skalkotos | continue
|
26 | aa2062ba | Nikos Skalkotos | |
27 | aa2062ba | Nikos Skalkotos | user, passwd = match.groups() |
28 | aa2062ba | Nikos Skalkotos | if len(passwd) > 0 and passwd[0] == '!': |
29 | 36e348b6 | Nikos Skalkotos | print "Warning: Ignoring locked %s account." % user |
30 | aa2062ba | Nikos Skalkotos | else:
|
31 | aa2062ba | Nikos Skalkotos | users.append(user) |
32 | aa2062ba | Nikos Skalkotos | |
33 | aa2062ba | Nikos Skalkotos | return users
|
34 | aa2062ba | Nikos Skalkotos | |
35 | 0d5a999d | Nikos Skalkotos | def data_cleanup(self): |
36 | 0d5a999d | Nikos Skalkotos | self.cleanup_userdata()
|
37 | 0d5a999d | Nikos Skalkotos | self.cleanup_tmp()
|
38 | 0d5a999d | Nikos Skalkotos | self.cleanup_log()
|
39 | 9297c398 | Nikos Skalkotos | self.cleanup_mail()
|
40 | 0d5a999d | Nikos Skalkotos | |
41 | 0d5a999d | Nikos Skalkotos | def cleanup_tmp(self): |
42 | 8c574358 | Nikos Skalkotos | self.foreach_file('/tmp', self.g.rm_rf, maxdepth=1) |
43 | 9297c398 | Nikos Skalkotos | self.foreach_file('/var/tmp', self.g.rm_rf, maxdepth=1) |
44 | 0d5a999d | Nikos Skalkotos | |
45 | 0d5a999d | Nikos Skalkotos | def cleanup_log(self): |
46 | 8c574358 | Nikos Skalkotos | self.foreach_file('/var/log', self.g.truncate, ftype='r') |
47 | 0d5a999d | Nikos Skalkotos | |
48 | 9297c398 | Nikos Skalkotos | def cleanup_mail(self): |
49 | 9297c398 | Nikos Skalkotos | self.foreach_file('var/spool/mail', self.g.rm_rf, maxdepth=1) |
50 | 9297c398 | Nikos Skalkotos | self.foreach_file('var/mail', self.g.rm_rf, maxdepth=1) |
51 | 9297c398 | Nikos Skalkotos | |
52 | 0d5a999d | Nikos Skalkotos | def cleanup_userdata(self): |
53 | 0d5a999d | Nikos Skalkotos | homedirs = ['/root'] + self.ls('/home/') |
54 | 0d5a999d | Nikos Skalkotos | |
55 | 0d5a999d | Nikos Skalkotos | for homedir in homedirs: |
56 | 0d5a999d | Nikos Skalkotos | for data in self.sensitive_userdata: |
57 | 0d5a999d | Nikos Skalkotos | fname = "%s/%s" % (homedir, data)
|
58 | 0d5a999d | Nikos Skalkotos | if self.g.is_file(fname): |
59 | 0d5a999d | Nikos Skalkotos | self.g.scrub_file(fname)
|
60 | aa2062ba | Nikos Skalkotos | |
61 | aa2062ba | Nikos Skalkotos | # vim: set sta sts=4 shiftwidth=4 sw=4 et ai : |