Guest User

Untitled

a guest
May 29th, 2018
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. #!/usr/bin/ruby
  2. #
  3. # adduser - Unix-like adduser script. Prompts for parameters and uses dscl internally to create
  4. # new NetInfo users and groups.
  5. #
  6. # Chetan Sarva <csarva@pixelcop.net>
  7.  
  8. def next_user_id(start = 700)
  9. ids = `dscl . -list /Users UniqueID`.split("\n").map{|s| s =~ /(\d+)$/; $1 }.sort.uniq
  10. n = start
  11. while ids.include? n.to_s do
  12. n += 1
  13. end
  14. n
  15. end
  16.  
  17. def next_group_id(start = 700)
  18. ids = `dscl . -list /Groups PrimaryGroupID`.split("\n").map{|s| s =~ /(\d+)$/; $1 }.sort.uniq
  19. n = start
  20. while ids.include? n.to_s do
  21. n += 1
  22. end
  23. n
  24. end
  25.  
  26. puts "adduser!"
  27. puts
  28.  
  29. print "username: "
  30. username = STDIN.gets
  31. username.strip!
  32. if username.empty? then
  33. puts "must enter a username!"
  34. exit
  35. end
  36. dusername = "_#{username}"
  37.  
  38. print "home dir [default=/var/empty]: "
  39. home = STDIN.gets
  40. home = "/var/empty" if home.strip.empty?
  41. home.strip!
  42.  
  43. password = "*"
  44.  
  45. def_group_id = next_group_id()
  46. print "group id (default=#{def_group_id}): "
  47. group_id = STDIN.gets
  48. group_id = def_group_id if group_id.strip.empty?
  49. group_id.strip! if group_id.kind_of? String
  50.  
  51. def_user_id = next_user_id()
  52. print "user id (default=#{def_user_id}): "
  53. user_id = STDIN.gets
  54. user_id = def_user_id if user_id.strip.empty?
  55. user_id.strip! if user_id.kind_of? String
  56.  
  57. print "real name (default=daemon): "
  58. realname = STDIN.gets
  59. realname = "daemon" if realname.strip.empty?
  60. realname.strip!
  61.  
  62. print "shell: (default=/usr/bin/false): "
  63. shell = STDIN.gets
  64. shell = "/usr/bin/false" if shell.strip.empty?
  65. shell.strip!
  66.  
  67.  
  68. cmd = "sudo dscl localhost -create /Local/Default/Groups/#{dusername}"
  69. system("#{cmd}")
  70. system("#{cmd} PrimaryGroupID #{group_id}")
  71. system("sudo dscl localhost -append /Local/Default/Groups/#{dusername} RecordName #{username}")
  72.  
  73. cmd = "sudo dscl localhost -create /Local/Default/Users/#{dusername}"
  74.  
  75. system("#{cmd}")
  76. system("#{cmd} UniqueID #{user_id}")
  77. system("#{cmd} PrimaryGroupID #{group_id}")
  78. system("#{cmd} UserShell #{shell}")
  79. system("#{cmd} RealName '#{realname}'")
  80. system("#{cmd} NFSHomeDirectory #{home}")
  81. system("#{cmd} Password '#{password}'")
  82. system("sudo dscl localhost -append /Local/Default/Users/#{dusername} RecordName #{username}")
Add Comment
Please, Sign In to add comment