[asl-commit] ActiveSambaLdap r30:

null at cozmixng.org null at cozmixng.org
Fri Aug 3 22:32:30 EDT 2007


retro	2007-08-04 11:32:29 +0900 (Sat, 04 Aug 2007)

  New Revision: 30

  Added files:
    trunk/test/test_group.rb
  Modified files:
    trunk/lib/active_samba_ldap/group.rb

  Log:


  Added: trunk/test/test_group.rb (+21 -0)
===================================================================
--- trunk/test/test_group.rb	2006-11-14 18:07:35 +09:00 (rev 29)
+++ trunk/test/test_group.rb	2007-08-04 11:32:29 +09:00 (rev 30)
@@ -0,0 +1,21 @@
+require 'asl-test-utils'
+
+class GroupTest < Test::Unit::TestCase
+  include AslTestUtils
+
+  priority :must
+  def test_builtin_group
+    assert_sid("#{@group_class.configuration[:sid]}-543", 543)
+    (544..552).each do |rid|
+      assert_sid("S-1-5-32-#{rid}", rid)
+    end
+    assert_sid("#{@group_class.configuration[:sid]}-553", 553)
+  end
+
+  private
+  def assert_sid(expected, rid)
+    group = @group_class.new("XXX")
+    group.change_sid(rid)
+    assert_equal(expected, group.samba_sid)
+  end
+end

  Modified: trunk/lib/active_samba_ldap/group.rb (+10 -3)
===================================================================
--- trunk/lib/active_samba_ldap/group.rb	2006-11-14 18:07:35 +09:00 (rev 29)
+++ trunk/lib/active_samba_ldap/group.rb	2007-08-04 11:32:29 +09:00 (rev 30)
@@ -4,6 +4,9 @@
   class Group < Base
     extend Unreloadable
 
+    # from librpc/ndr/security.h in Samba
+    SID_BUILTIN = "S-1-5-32"
+
     # from source/include/rpc_misc.c in Samba
     DOMAIN_ADMINS_RID = 0x00000200
     DOMAIN_USERS_RID = 0x00000201
@@ -91,8 +94,8 @@
           group = find_by_gid_number(gid_number)
           raise GidNumberDoesNotExist.new(gid_number) if group.nil?
         rescue ArgumentError
-          group = new(key)
-          raise GroupDoesNotExist.new(key) unless group.exists?
+          raise GroupDoesNotExist.new(key) unless exists?(key)
+          group = find(key)
         end
         group
       end
@@ -214,7 +217,11 @@
     end
 
     def change_sid(rid, allow_non_unique=false)
-      sid = "#{self.class.configuration[:sid]}-#{rid}"
+      if (LOCAL_ADMINS_RID..LOCAL_REPLICATORS_RID).include?(rid.to_i)
+        sid = "#{SID_BUILTIN}-#{rid}"
+      else
+        sid = "#{self.class.configuration[:sid]}-#{rid}"
+      end
       # check_unique_sid_number(sid) unless allow_non_unique
       self.samba_sid = sid
     end



More information about the asl-commit mailing list