Advertisement
Guest User

Untitled

a guest
Jul 29th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.59 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. import daemon
  4. import time
  5. import socket
  6. import fcntl
  7. import struct
  8. import md5
  9. import sys
  10. import os
  11.  
  12. def getHwAddr(ifname):
  13. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  14. info = fcntl.ioctl(s.fileno(), 0x8927, struct.pack('256s', ifname[:15]))
  15. return ''.join(['%02x:' % ord(char) for char in info[18:24]])[:-1]
  16.  
  17. serverkey = md5.md5(getHwAddr('eth0')).hexdigest()
  18.  
  19. addr = ('', 30331)
  20. isock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  21. isock.bind(addr)
  22.  
  23. daemon.daemonize()
  24. while True:
  25. isock.listen(1)
  26. conn, addr = isock.accept()
  27. data = conn.recv(1024)
  28. print data
  29. sdata = data.split()
  30. if len(sdata) > 0:
  31. if sdata[0] != serverkey:
  32. conn.send('access denied')
  33. conn.close()
  34. else :
  35. if sdata[1] == 'create':
  36. if len(sdata) < 5:
  37. conn.send('Invalid parameters')
  38. else:
  39. username = sdata[2]
  40. password = sdata[3]
  41. quota = sdata[4]
  42. cmd = '/usr/sbin/useradd -G backup -s /bin/bash %s 2>&1' % (username)
  43. res = os.popen(cmd).read().rstrip()
  44. if len(res) == 0:
  45. cmd = '/bin/echo %s > /tmp/pw ; /usr/bin/passwd --stdin %s < /tmp/pw; /bin/rm -f /tmp/pw' % (password, username)
  46. res = os.popen(cmd).read()
  47. cmd = 'jk_jailuser -m -j /home/jail %s' % (username)
  48. res = os.popen(cmd).read()
  49. cmd = 'sed "s=/home/%s:/usr/sbin/jk_lsh=/home/%s:/bin/bash=g" /home/jail/etc/passwd > /home/jail/etc/passwd.new; rm -f /home/jail/etc/passwd; mv /home/jail/etc/passwd.new /home/jail/etc/passwd' % (username,username)
  50. res = os.popen(cmd).read()
  51. cmd= '/usr/sbin/setquota -u %s 0 %s 0 0 -a /dev/xvda3' % (username, quota)
  52. res = os.popen(cmd).read()
  53. conn.send('success')
  54. else:
  55. conn.send('username already exists')
  56. elif sdata[1] == 'terminate':
  57. username = sdata[2]
  58. cmd = '/usr/sbin/userdel -rf %s' % (username)
  59. res = os.popen(cmd).read().rstrip()
  60. cmd = 'cat /home/jail/etc/passwd | grep -v %s > /home/jail/etc/passwd.new; rm -f /home/jail/etc/passwd; mv /home/jail/etc/passwd.new /home/jail/etc/passwd' % (username) res = os.popen(cmd).read().rstrip()
  61. cmd = 'cat /home/jail/etc/group | grep -v ^%s > /home/jail/etc/group.new; rm -f /home/jail/etc/group; mv /home/jail/etc/group.new /home/jail/etc/group' % (username)
  62. res = os.popen(cmd).read().rstrip()
  63. conn.send('success')
  64. elif sdata[1] == 'suspend':
  65. username = sdata[2]
  66. cmd = '/usr/bin/chsh -s /bin/false %s 2>&1' % (username)
  67. res = os.popen(cmd).read()
  68. conn.send('success')
  69. elif sdata[1] == 'unsuspend':
  70. username = sdata[2]
  71. cmd = '/usr/bin/chsh -s /bin/bash %s 2>&1' % (username)
  72. res = os.popen(cmd).read()
  73. conn.send('success')
  74. elif sdata[1] == 'chpw':
  75. username = sdata[2]
  76. password = sdata[3]
  77. cmd = '/bin/echo %s > /tmp/pw ; /usr/bin/passwd --stdin %s < /tmp/pw; /bin/rm -f /tmp/pw' % (password, username)
  78. res = os.popen(cmd).read()
  79. conn.send('success')
  80. elif sdata[1] == 'getuserusage':
  81. username = sdata[2]
  82. cmd = '/usr/bin/quota %s | /usr/bin/tail -1 | /bin/awk {\'print $2\'}' % (username)
  83. res = os.popen(cmd).read()
  84. conn.send(res)
  85. elif sdata[1] == 'getuserlimit':
  86. username = sdata[2]
  87. cmd = '/usr/bin/quota %s | /usr/bin/tail -1 | /bin/awk {\'print $4\'}' % (username)
  88. res = os.popen(cmd).read()
  89. conn.send(res)
  90.  
  91. else:
  92. conn.send('access denied')
  93.  
  94. conn.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement