From a51959fb69a68bbc1739a4a698928a7a11e9aa93 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20R=C4=99korajski?= Date: Tue, 23 Jun 2009 15:04:12 +0000 Subject: [PATCH] - parse smbpasswd, properly set other samba fields Changed files: MigrationTools-smbkrb5.patch -> 1.2 --- MigrationTools-smbkrb5.patch | 90 +++++++++++++++++++++++++++--------- 1 file changed, 68 insertions(+), 22 deletions(-) diff --git a/MigrationTools-smbkrb5.patch b/MigrationTools-smbkrb5.patch index 541cea4..1dc907e 100644 --- a/MigrationTools-smbkrb5.patch +++ b/MigrationTools-smbkrb5.patch @@ -1,32 +1,53 @@ diff -ur MigrationTools-47/migrate_common.ph MigrationTools-47-krb5/migrate_common.ph --- MigrationTools-47/migrate_common.ph 2009-06-22 16:16:02.730586333 +0200 +++ MigrationTools-47-krb5/migrate_common.ph 2009-06-22 16:15:55.070581897 +0200 -@@ -120,10 +120,16 @@ - } - - # Default Kerberos realm --#if ($EXTENDED_SCHEMA) { --# $DEFAULT_REALM = $DEFAULT_MAIL_DOMAIN; --# $DEFAULT_REALM =~ tr/a-z/A-Z/; --#} -+if ($EXTENDED_SCHEMA) { -+ $DEFAULT_REALM = $DEFAULT_MAIL_DOMAIN; -+ $DEFAULT_REALM =~ tr/a-z/A-Z/; -+} +@@ -120,6 +120,11 @@ + # $DEFAULT_REALM = $DEFAULT_MAIL_DOMAIN; + # $DEFAULT_REALM =~ tr/a-z/A-Z/; + #} + -+# Default SMB Domain -+if ($EXTENDED_SCHEMA) { -+ $DEFAULT_SMB_DOMAIN = $DEFAULT_MAIL_DOMAIN; -+ $DEFAULT_SMB_DOMAIN =~ tr/a-z/A-Z/; -+} ++# Default SMB SID (must be non-empty string) ++#if ($EXTENDED_SCHEMA) { ++# $DEFAULT_SMB_SID = ""; ++#} if (-x "/usr/sbin/revnetgroup") { $REVNETGROUP = "/usr/sbin/revnetgroup"; -Only in MigrationTools-47-krb5: migrate_common.ph~ diff -ur MigrationTools-47/migrate_passwd.pl MigrationTools-47-krb5/migrate_passwd.pl --- MigrationTools-47/migrate_passwd.pl 2009-06-22 16:16:02.850581340 +0200 +++ MigrationTools-47-krb5/migrate_passwd.pl 2009-06-22 16:13:13.997264191 +0200 -@@ -138,7 +138,15 @@ +@@ -50,6 +52,7 @@ + exit 1; + } + ++$do_samba = 0; + while ($ARGV[0] =~ /^--.*/) { + if ($ARGV[0] eq "--minuid") { + $minuid = $ARGV[1]; +@@ -57,13 +60,22 @@ + } elsif ($ARGV[0] eq "--maxuid") { + $maxuid = $ARGV[1]; + shift ; shift; ++ } elsif ($ARGV[0] eq "--samba") { ++ $do_samba = 1; ++ shift; + } else { + shift; + } + } + ++if ($do_samba && !defined($DEFAULT_SMB_SID)) { ++ print STDERR "You must set \$DEFAULT_SMB_SID in /etc/openldap/migrate_common.ph to migrate smbpasswd\n"; ++ exit 2; ++} ++ + &parse_args(); + &read_shadow_file(); ++if ($do_samba) { &read_samba(); } + &open_files(); + + while() +@@ -138,7 +150,23 @@ print $HANDLE "objectClass: top\n"; if ($DEFAULT_REALM) { @@ -37,13 +58,21 @@ diff -ur MigrationTools-47/migrate_passwd.pl MigrationTools-47-krb5/migrate_pass + print $HANDLE "krb5KeyVersionNumber: 0\n"; + } + -+ if ($DEFAULT_SMB_DOMAIN) { ++ if ($DEFAULT_SMB_SID) { + print $HANDLE "objectClass: sambaSamAccount\n"; -+ print $HANDLE "sambaSID: 0\n"; ++ print $HANDLE "displayName: $cn\n"; ++ print $HANDLE "sambaSID: $DEFAULT_SMB_SID-$uid\n"; ++ print $HANDLE "sambaPrimaryGroupSID: $DEFAULT_SMB_SID-$gid\n"; ++ if ($do_samba) { ++ print $HANDLE "sambaLMPassword: ".$sambaUsers{$user}->{"sambaLMPassword"}."\n"; ++ print $HANDLE "sambaNTPassword: ".$sambaUsers{$user}->{"sambaNTPassword"}."\n"; ++ print $HANDLE "sambaAcctFlags: ".$sambaUsers{$user}->{"sambaAcctFlags"}."\n"; ++ print $HANDLE "sambaPwdLastSet: ".$sambaUsers{$user}->{"sambaPwdLastSet"}."\n"; ++ } } if ($shadowUsers{$user} ne "") { -@@ -147,10 +155,6 @@ +@@ -147,10 +175,6 @@ print $HANDLE "userPassword: {crypt}$pwd\n"; } @@ -54,3 +83,20 @@ diff -ur MigrationTools-47/migrate_passwd.pl MigrationTools-47-krb5/migrate_pass if ($shell) { print $HANDLE "loginShell: $shell\n"; } +@@ -226,3 +250,16 @@ + } + } + ++sub read_samba ++{ ++ open(INPUT, ") { ++ my ($sambaUser, $id, $lmp, $ntp, $f, $lf, $xxx) = split(':'); ++ $sambaUsers{$sambaUser}->{"sambaLMPassword"} = $lmp; ++ $sambaUsers{$sambaUser}->{"sambaNTPassword"} = $ntp; ++ $sambaUsers{$sambaUser}->{"sambaAcctFlags"} = $f; ++ $lf =~ s/^LCT-//; ++ $sambaUsers{$sambaUser}->{"sambaPwdLastSet"} = hex($lf); ++ } ++ close(INPUT); ++} -- 2.44.0