/[smeserver]/rpms/e-smith-base+ldap/sme7/e-smith-base+ldap-4.19.1-import_fixes.patch
ViewVC logotype

Annotation of /rpms/e-smith-base+ldap/sme7/e-smith-base+ldap-4.19.1-import_fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (hide annotations) (download)
Tue Oct 7 19:21:54 2008 UTC (15 years, 8 months ago) by slords
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -0 lines
FILE REMOVED
New streams

1 slords 1.1 diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50groups mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50groups
2     --- e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50groups 2008-04-21 16:15:45.000000000 +0200
3     +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50groups 2008-04-16 15:53:18.000000000 +0200
4     @@ -7,12 +7,12 @@
5     next unless ($group_info->{$group});
6    
7     my ($name, $passwd, $gid, $members) = @{$group_info->{$group}};
8     -
9     +
10     $OUT .= "dn: cn=$group,ou=Groups,$ldapBase\n";
11    
12     if ($mapping{$group})
13     {
14     - my ($dname, $rid) = @{$mapping{$group}};
15     + my ($dname, $sid) = @{$mapping{$group}};
16    
17     $OUT .= utf8("objectClass: posixGroup\n");
18     $OUT .= utf8("objectClass: sambaGroupMapping\n");
19     @@ -21,12 +21,17 @@
20     $OUT .= utf8("gidNumber: $gid\n");
21     foreach (split(/,/, $members || ""))
22     {
23     - $OUT .= utf8("memberUid: $_\n");
24     + $OUT .= utf8("memberUid: $_\n");
25     + }
26     + if ($name eq 'nobody'){
27     + foreach(@machines){
28     + $OUT .= utf8("memberUid: $_\n");
29     + }
30     }
31     $OUT .= utf8("description: Local Unix group\n");
32     $OUT .= utf8("displayName: $dname\n");
33     $OUT .= utf8("sambaGroupType: 2\n");
34     - $OUT .= utf8("sambaSID: $local_sid" . "-" . "$rid\n\n");
35     + $OUT .= utf8("sambaSID: $sid\n\n");
36     }
37     else
38     {
39     @@ -36,9 +41,10 @@
40     $OUT .= utf8("gidNumber: $gid\n");
41     foreach (split(/,/, $members || ""))
42     {
43     - $OUT .= utf8("memberUid: $_\n");
44     + $OUT .= utf8("memberUid: $_\n");
45     }
46     $OUT .= "\n";
47     }
48     }
49     }
50     +
51     diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50machines mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50machines
52     --- e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50machines 1970-01-01 01:00:00.000000000 +0100
53     +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50machines 2008-04-21 16:14:40.000000000 +0200
54     @@ -0,0 +1,49 @@
55     +{
56     + my $passwd_info = parse_file("/etc/passwd", @machines);
57     +
58     + foreach my $machine (@machines)
59     + {
60     + # Skip machine in db but not in /etc/passwd.
61     + next unless ($passwd_info->{$machine});
62     +
63     + my ($name, undef, $uid, $gid, $comment, $home, $shell)
64     + = @{$passwd_info->{$machine}};
65     +
66     + my $smbpasswd_info = parse_file("/etc/smbpasswd", uc($machine));
67     +
68     + my (undef, undef, $sambaLMPassword, $sambaNTPassword, $sambaAcctFlags, undef)
69     + = @{$smbpasswd_info->{uc($machine)}};
70     +
71     + my $sambaSID = `/usr/bin/net sam show $name -s /etc/samba/smb-pre-ldap.conf`;
72     + $sambaSID =~ s/(.*) is a (.*) with SID (.+)/$3/;
73     + chomp($sambaSID);
74     +
75     + $OUT .= utf8("dn: uid=$name,ou=Computers,$ldapBase\n");
76     + $OUT .= utf8("objectClass: account\n");
77     + $OUT .= utf8("objectClass: posixAccount\n");
78     + $OUT .= utf8("objectClass: shadowAccount\n");
79     + $OUT .= utf8("objectClass: sambaSamAccount\n") if ($sambaSID ne '');
80     + $OUT .= utf8("objectClass: top\n");
81     + $OUT .= utf8("cn: $name\n");
82     + $OUT .= utf8("uid: $name\n");
83     + $OUT .= utf8("gecos: " . ($comment || "Hostname account for $name") . "\n");
84     + $OUT .= utf8("uidNumber: $uid\n");
85     + $OUT .= utf8("gidNumber: $gid\n");
86     + $OUT .= utf8("userPassword: {crypt}" . ($passwd || "*") . "\n");
87     + $OUT .= utf8("homeDirectory: " . ($home || '/noexistingpath') . "\n");
88     + $OUT .= utf8("loginShell: " . ($shell || "/bin/false") . "\n");
89     + $OUT .= utf8("shadowLastChange: " . ($lastchange || int(time / (24 * 3600))) . "\n");
90     + $OUT .= utf8("shadowMin: " . ($min || "-1") . "\n");
91     + $OUT .= utf8("shadowMax: " . ($max || "99999") . "\n");
92     + $OUT .= utf8("shadowWarning: " . ($warning || "7") . "\n");
93     + $OUT .= utf8("shadowInactive: " . ($inactive || "-1") . "\n");
94     + $OUT .= utf8("shadowExpire: " . ($expire || "-1") . "\n");
95     + $OUT .= utf8("sambaSID: $sambaSID\n") if ($sambaSID ne '');
96     + $OUT .= utf8("sambaLMPassword: $sambaLMPassword\n") if $sambaLMPassword;
97     + $OUT .= utf8("sambaNTPassword: $sambaNTPassword\n") if $sambaNTPassword;
98     + $OUT .= utf8("sambaPwdLastSet: 1207907915\n") if ($sambaLMPassword && $sambaNTPassword); # sambaPwdLastSet needs to be not null
99     + $OUT .= utf8("sambaAcctFlags: $sambaAcctFlags\n") if $sambaAcctFlags;
100     + $OUT .= utf8("shadowFlag: " . ($flag || "-1") . "\n\n");
101     + }
102     +}
103     +
104     diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50users mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50users
105     --- e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50users 2008-04-21 16:15:45.000000000 +0200
106     +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/50users 2008-04-21 16:14:25.000000000 +0200
107     @@ -1,21 +1,32 @@
108     {
109     my $passwd_info = parse_file("/etc/passwd", @users);
110     my $shadow_info = parse_file("/etc/shadow", @users);
111     -
112     + my $smbpasswd_info = parse_file("/etc/smbpasswd", @users);
113     +
114     foreach my $user (@users)
115     {
116     # Skip users in db but not in /etc/passwd.
117     - next unless ($passwd_info->{$user});
118     + next unless ($passwd_info->{$user});
119    
120     my ($name, undef, $uid, $gid, $comment, $home, $shell)
121     = @{$passwd_info->{$user}};
122     my (undef, $passwd, $lastchange, $min, $max, $warning, $inactive,
123     $expire, $flag) = @{$shadow_info->{$user}};
124    
125     + # Import the sambaSID of the user
126     + my $sambaSID = `/usr/bin/net sam show $user -s /etc/samba/smb-pre-ldap.conf 2> /dev/null`;
127     + $sambaSID =~ s/(.*)\\$user is a (.*) with SID (.+)/$3/;
128     + chomp($sambaSID);
129     +
130     + # Import smb passwords (NT and LM) from smbpasswd
131     + my (undef, undef, $sambaLMPassword, $sambaNTPassword, $sambaAcctFlags, undef)
132     + = @{$smbpasswd_info->{$user}} if ($sambaSID ne '');
133     +
134     $OUT .= utf8("dn: uid=$user,ou=Users,$ldapBase\n");
135     $OUT .= utf8("objectClass: account\n");
136     $OUT .= utf8("objectClass: posixAccount\n");
137     $OUT .= utf8("objectClass: shadowAccount\n");
138     + $OUT .= utf8("objectClass: sambaSamAccount\n") if ($sambaSID ne '');
139     $OUT .= utf8("objectClass: top\n");
140     $OUT .= utf8("cn: $name\n");
141     $OUT .= utf8("uid: $name\n");
142     @@ -31,6 +42,11 @@
143     $OUT .= utf8("shadowWarning: " . ($warning || "7") . "\n");
144     $OUT .= utf8("shadowInactive: " . ($inactive || "-1") . "\n");
145     $OUT .= utf8("shadowExpire: " . ($expire || "-1") . "\n");
146     + $OUT .= utf8("sambaSID: $sambaSID\n") if ($sambaSID ne '');
147     + $OUT .= utf8("sambaLMPassword: $sambaLMPassword\n") if $sambaLMPassword;
148     + $OUT .= utf8("sambaNTPassword: $sambaNTPassword\n") if $sambaNTPassword;
149     + $OUT .= utf8("sambaPwdLastSet: 1207907915\n") if ($sambaLMPassword && $sambaNTPassword); # sambaPwdLastSet needs to be not null
150     + $OUT .= utf8("sambaAcctFlags: $sambaAcctFlags\n") if $sambaAcctFlags;
151     $OUT .= utf8("shadowFlag: " . ($flag || "-1") . "\n\n");
152     }
153     }
154     diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/template-begin mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/template-begin
155     --- e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/template-begin 2008-04-21 16:15:45.000000000 +0200
156     +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/home/e-smith/db/ldap/ldif/template-begin 2008-04-21 16:13:59.000000000 +0200
157     @@ -5,28 +5,45 @@
158    
159     $a = esmith::AccountsDB->open_ro;
160     $c = esmith::ConfigDB->open_ro;
161     +
162     + # Create a minimal config file for migration
163     + $domain_master = $smb{DomainMaster} || "no";
164     + $workgroup = $smb{Workgroup};
165     +
166     + open(PRELDAPCONF,">/etc/samba/smb-pre-ldap.conf");
167     + print PRELDAPCONF "domain logons = $smb{DomainMaster}\nworkgroup = $smb{Workgroup}";
168     + close(PRELDAPCONF);
169     +
170     $ldapBase = esmith::util::ldapBase ($DomainName);
171     - $local_sid = `/usr/bin/net getlocalsid -s /dev/null -n $smb{ServerName}`;
172     + $local_sid = `/usr/bin/net getlocalsid -s /etc/samba/smb-pre-ldap.conf -n $smb{ServerName}`;
173     $local_sid =~ s/SID.*is: (.+)/$1/;
174     chomp($local_sid);
175     sub utf8
176     {
177     - my $t = shift;
178     - utf8::encode($t);
179     - return $t;
180     + my $t = shift;
181     + utf8::encode($t);
182     + return $t;
183     }
184     # Basic entries to init.
185     - @ous = ("Groups", "People", "Users"); # ous for Organizational Units.
186     + @ous = ("Groups", "People", "Users", "Computers"); # ous for Organizational Units.
187     @users = ("root", "ntp", "www", "admin", "public");
188     @groups = ("shared", "slocate", "nobody", @users);
189     + @machines = ();
190     +
191     + # Create list of group to map
192     + my @groupmap = `/usr/bin/net groupmap list -s /etc/samba/smb-pre-ldap.conf`;
193     + %mapping = ();
194    
195     - # Groups to map with samba, their names and their rids.
196     - %mapping =
197     - (
198     - 'admin' => ['Domain Admins', "512"],
199     - 'shared' => ['Domain Users', "513"],
200     - 'nobody' => ['Domain Guests', "514"]
201     - );
202     + foreach (@groupmap)
203     + {
204     + chomp($_);
205     + my $g = $_;
206     + $g =~ /(.+) \((.+)\) -> (.+)/;
207     + my $dname = $1;
208     + my $sid = $2;
209     + my $name = $3;
210     + $mapping{$name} = ["$dname","$sid"];
211     + }
212    
213     # Add users and groups from db.
214     foreach my $account ($a->users, $a->groups)
215     @@ -34,17 +51,22 @@
216     @users = (@users, $account->key);
217     @groups = (@groups, $account->key);
218     }
219     -
220     +
221     + #Add machines
222     + foreach ($a->get_all_by_prop('type'=>'machine')){
223     + @machines = (@machines,$_->key);
224     + }
225     +
226     # Parse a file with fields separated by ':' (ie /etc/{group,passwd,shadow}).
227     sub parse_file
228     {
229     - # We are only interested in @keep accounts.
230     + # We are only interested in @keep accounts.
231     my ($file, @keep) = @_;
232     -
233     +
234     my %result = ();
235     -
236     +
237     open(FILE, $file) or die("open: $!");
238     -
239     +
240     my @line;
241     while(<FILE>)
242     {
243     @@ -56,7 +78,7 @@
244     if ($line[0] eq $_);
245     }
246     }
247     -
248     +
249     return \%result;
250     }
251     $OUT = "";

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed