chroot_package.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!/usr/bin/python
  2. import os
  3. import stat
  4. import shutil
  5. def postInstall(fromVersion, fromRelease, toVersion, toRelease):
  6. CHROOT = "/var/named/chroot"
  7. NODES = {
  8. "/dev/random" : [stat.S_IFCHR | 0666, 1, 8],
  9. "/dev/zero" : [stat.S_IFCHR | 0666, 1, 5],
  10. "/dev/null" : [stat.S_IFCHR | 0666, 1, 3],
  11. "/dev/urandom" : [stat.S_IFCHR | 0666, 1, 9],
  12. "/dev/log" : [stat.S_IFSOCK | 0666, 1, 1],
  13. }
  14. # Create device NODES in chroot
  15. for node, values in NODES.items():
  16. if not os.path.exists("%s%s" % (CHROOT, node)):
  17. os.mknod("%s%s" % (CHROOT, node), values[0], os.makedev(values[1], values[2]))
  18. try:
  19. os.unlink("%s/etc/localtime" % CHROOT)
  20. except:
  21. pass
  22. # Copy config files to run under chroot
  23. shutil.copy("/etc/localtime", "%s/etc/localtime" % CHROOT)
  24. for files in ["/etc/bind/bind.keys", "/etc/bind/named.conf", "/etc/bind/rndc.key", "/var/named/named.ca"]:
  25. shutil.copy("%s" % files, "%s%s" % (CHROOT, files))
  26. try:
  27. shutil.copytree("/var/named/pri", "%s/var/named/pri" % CHROOT)
  28. except OSError:
  29. pass
  30. try:
  31. shutil.copytree("/var/named/sec", "%s/var/named/sec" % CHROOT)
  32. except OSError:
  33. pass
  34. os.system("ln -s ../../var/named/pri /var/named/chroot/etc/bind/")
  35. os.system("ln -s ../../var/named/sec /var/named/chroot/etc/bind/")
  36. # Fix permissions
  37. os.system("chmod 0700 %s" % CHROOT)
  38. os.system("chown named:named %s" % CHROOT)
  39. os.system("chown -R named:named %s/var/named" % CHROOT)
  40. os.system("chown -R named:named %s/etc/bind" % CHROOT)
  41. os.system("chown -R named:named %s/var/run/named" % CHROOT)
  42. os.system("chown -R named:named %s/var/log" % CHROOT)