Initial import
[samba] / examples / LDAP / smbldap-tools-0.9.1 / configure.pl
1 #!/usr/bin/perl -w
2
3 # $Id: configure.pl,v 1.16 2005/05/27 14:28:47 jtournier Exp $
4 # $Source: /opt/cvs/samba/smbldap-tools/configure.pl,v $
5
6 # This script can help you setting up the smbldap_conf.pl file. It will get all the defaults value
7 # that are defined in the smb.conf configuration file. You should then start with this configuration
8 # file. You will also need the SID for your samba domain: set up the controler domain before using
9 # this script.
10
11 #  This code was developped by IDEALX (http://IDEALX.org/) and
12 #  contributors (their names can be found in the CONTRIBUTORS file).
13 #
14 #                 Copyright (C) 2002 IDEALX
15 #
16 #  This program is free software; you can redistribute it and/or
17 #  modify it under the terms of the GNU General Public License
18 #  as published by the Free Software Foundation; either version 2
19 #  of the License, or (at your option) any later version.
20 #
21 #  This program is distributed in the hope that it will be useful,
22 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
23 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24 #  GNU General Public License for more details.
25 #
26 #  You should have received a copy of the GNU General Public License
27 #  along with this program; if not, write to the Free Software
28 #  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
29 #  USA.
30
31
32 use strict;
33 use File::Basename;
34
35 # we need to be root to configure the scripts
36 if ($< != 0) {
37   die "Only root can configure the smbldap-tools scripts\n";
38 }
39
40 print "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
41        smbldap-tools script configuration
42        -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
43 Before starting, check
44  . if your samba controller is up and running.
45  . if the domain SID is defined (you can get it with the 'net getlocalsid')
46
47  . you can leave the configuration using the Crtl-c key combination
48  . empty value can be set with the \".\" character\n";
49 print "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n";
50
51 # we first check if Samba is up and running
52 my $test_smb=`pidof smbd`;
53 chomp($test_smb);
54 die "\nSamba need to be started first !\n" if ($test_smb eq "" || not defined $test_smb);
55
56 print "Looking for configuration files...\n\n";
57 my $smb_conf="";
58 if (-e "/etc/samba/smb.conf") {
59   $smb_conf="/etc/samba/smb.conf";
60 } elsif (-e "/usr/local/samba/lib/smb.conf") {
61   $smb_conf="/usr/local/samba/lib/smb.conf";
62 }
63 print "Samba Configuration File Path [$smb_conf] > ";
64 chomp(my $config_smb=<STDIN>);
65 if ($config_smb ne "") {
66   $smb_conf=$config_smb;
67 }
68
69 my $conf_dir;
70 if (-d "/etc/opt/IDEALX/smbldap-tools") {
71         $conf_dir="/etc/opt/IDEALX/smbldap-tools/";
72 } elsif (-d "/etc/smbldap-tools") {
73         $conf_dir="/etc/smbldap-tools/";
74 } else {
75         $conf_dir="/etc/opt/IDEALX/smbldap-tools/";
76 }
77
78 print "\nThe default directory in which the smbldap configuration files are stored is shown.\n";
79 print "If you need to change this, enter the full directory path, then press enter to continue.\n";
80 print "Smbldap-tools Configuration Directory Path [$conf_dir] > ";
81 my $conf_dir_tmp;
82 chomp($conf_dir_tmp=<STDIN>);
83 if ($conf_dir_tmp ne "") {
84   $conf_dir=$conf_dir_tmp;
85 }
86
87 $conf_dir=~s/(\w)$/$1\//;
88 if (! -d $conf_dir) {
89         mkdir "$conf_dir";
90 }
91
92 my $smbldap_conf="$conf_dir"."smbldap.conf";
93 my $smbldap_bind_conf="$conf_dir"."smbldap_bind.conf";
94
95
96
97 # Let's read the smb.conf configuration file
98 my %config;
99 open (CONFIGFILE, "$smb_conf") || die "Unable to open $smb_conf for reading !\n";
100
101 while (<CONFIGFILE>) {
102
103   chomp($_);
104
105   ## eat leading whitespace
106   $_=~s/^\s*//;
107
108   ## eat trailing whitespace
109   $_=~s/\s*$//;
110
111
112   ## throw away comments
113   next if (($_=~/^#/) || ($_=~/^;/));
114
115   ## check for a param = value
116   if ($_=~/=/) {
117     #my ($param, $value) = split (/=/, $_);
118     my ($param, $value) = ($_=~/([^=]*)=(.*)/i);
119     $param=~s/./\l$&/g;
120     $param=~s/\s+//g;
121     $value=~s/^\s+//;
122
123     $value=~s/"//g;
124
125     $config{$param} = $value;
126     #print "param=$param\tvalue=$value\n";
127
128     next;
129   }
130 }
131 close (CONFIGFILE);
132
133 print "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n";
134 print "Let's start configuring the smbldap-tools scripts ...\n\n";
135
136 # This function need 4 parameters:
137 # . the description of the parameter
138 # . name of the key it is related to in the %config hash (key similar as the name parameter in
139 #   smb.conf). You can get all the available keys using this:
140 #   foreach my $tmp (keys %config) {
141 #       print "key=$tmp\t value=$config{$tmp}\n";
142 #   }
143 # . if no value is found in smb.conf for the keys, this value is proposed
144 # . the 'insist' variable: if set to 1, then the script will always call for a value
145 #   for the parameter. In other words, there's not default value, and it can't be set
146 #   to a null caracter string.
147
148 sub read_entry
149   {
150     my $description=shift;
151     my $value=shift;
152     my $example_value=shift;
153     my $insist=shift;
154     my $value_tmp;
155     chomp($value);
156     $insist=0 if (! defined $insist);
157     if (defined $config{$value} and $config{$value} ne "") {
158       print "$description [$config{$value}] > ";
159       $value_tmp=$config{$value};
160     } else {
161       print "$description [$example_value] > ";
162       $value_tmp="$example_value";
163     }
164     chomp(my $get=<STDIN>);
165     if ($get eq "") {
166       $value=$value_tmp;
167     } elsif ($get eq ".") {
168       $value="";
169     } else {
170       $value=$get;
171     }
172     if ($insist == 1 and "$value" eq "") {
173       while ($insist == 1) {
174         print "  Warning: You really need to set this parameter...\n";
175         $description=~s/. /  /;
176         if (defined $config{$value}) {
177           print "$description [$config{$value}] > ";
178           $value_tmp=$config{$value};
179         } else {
180           print "$description [$value] > ";
181           $value_tmp="$value";
182         }
183         chomp(my $get=<STDIN>);
184         if ($get eq "") {
185           $value=$value_tmp;
186         } elsif ($get eq ".") {
187           $value="";
188         } else {
189           $value=$get;
190           $insist=0;
191         }
192       }
193     }
194     return $value;
195   }
196
197 print ". workgroup name: name of the domain Samba act as a PDC\n";
198 my $workgroup=read_entry("  workgroup name","workgroup","",0);
199
200 print ". netbios name: netbios name of the samba controler\n";
201 my $netbios_name=read_entry("  netbios name","netbiosname","",0);
202
203 print ". logon drive: local path to which the home directory will be connected (for NT Workstations). Ex: 'H:'\n";
204 my $logondrive=read_entry("  logon drive","logondrive","",0);
205
206 print ". logon home: home directory location (for Win95/98 or NT Workstation).\n  (use %U as username) Ex:'\\\\$netbios_name\\%U'\n";
207 my $logonhome=read_entry("  logon home (press the \".\" character if you don't want homeDirectory)","logonhome","\\\\$netbios_name\\%U",0);
208 #$logonhome=~s/\\/\\\\/g;
209
210 print ". logon path: directory where roaming profiles are stored. Ex:'\\\\$netbios_name\\profiles\\\%U'\n";
211 my $logonpath=read_entry("  logon path (press the \".\" character if you don't want roaming profile)","logonpath","\\\\$netbios_name\\profiles\\\%U",0);
212 #$logonpath=~s/\\/\\\\/g;
213
214 my $userHome=read_entry(". home directory prefix (use %U as username)","","/home/\%U",0);
215
216 my $userHomeDirectoryMode=read_entry(". default users' homeDirectory mode","","700",0);
217
218 my $userScript=read_entry(". default user netlogon script (use %U as username)","logonscript","",0);
219
220 my $defaultMaxPasswordAge=read_entry("  default password validation time (time in days)","","45",0);
221
222 #############################
223 # ldap directory parameters #
224 #############################
225 my $ldap_suffix=read_entry(". ldap suffix","ldapsuffix","",0);
226 my $ldap_group_suffix=read_entry(". ldap group suffix","ldapgroupsuffix","",0);
227 $ldap_group_suffix=~s/ou=//;
228 my $ldap_user_suffix=read_entry(". ldap user suffix","ldapusersuffix","",0);
229 $ldap_user_suffix=~s/ou=//;
230 my $ldap_machine_suffix=read_entry(". ldap machine suffix","ldapmachinesuffix","",0);
231 $ldap_machine_suffix=~s/ou=//;
232 my $ldap_idmap_suffix=read_entry(". Idmap suffix","ldapidmapsuffix","ou=Idmap",0);
233 print ". sambaUnixIdPooldn: object where you want to store the next uidNumber\n";
234 print "  and gidNumber available for new users and groups\n";
235 my $sambaUnixIdPooldn=read_entry("  sambaUnixIdPooldn object (relative to \${suffix})","","sambaDomainName=$workgroup",0);
236
237 # parameters for the master ldap server
238 my ($trash1,$server);
239 if (defined $config{passdbbackend}) {
240   ($trash1,$server)=($config{passdbbackend}=~m/(.*)ldap:\/\/(.*)/);
241 } else {
242   $server="127.0.0.1";
243 }
244 $server=~s/\///;
245 my $ldapmasterserver;
246 print ". ldap master server: IP adress or DNS name of the master (writable) ldap server\n";
247 $ldapmasterserver=read_entry("  ldap master server","",$server,0);
248 my $ldapmasterport;
249 if (defined $config{ldapport}) {
250   $ldapmasterport=read_entry(". ldap master port","ldapport","",0);
251 } else {
252   $ldapmasterport=read_entry(". ldap master port","","389",0);
253 }
254 my $ldap_master_admin_dn=read_entry(". ldap master bind dn","ldapadmindn","",0);
255 system "stty -echo";
256 my $ldap_master_bind_password=read_entry(". ldap master bind password","","",1);
257 print "\n";
258 system "stty echo";
259
260 # parameters for the slave ldap server
261 print ". ldap slave server: IP adress or DNS name of the slave ldap server: can also be the master one\n";
262 my $ldap_slave_server=read_entry("  ldap slave server","","$server",0);
263 my $ldap_slave_port;
264 if (defined $config{ldapport}) {
265   $ldap_slave_port=read_entry(". ldap slave port","ldapport","",0);
266 } else {
267   $ldap_slave_port=read_entry(". ldap slave port","","389",0);
268 }
269 my $ldap_slave_admin_dn=read_entry(". ldap slave bind dn","ldapadmindn","",0);
270 system "stty -echo";
271 my $ldap_slave_bind_password=read_entry(". ldap slave bind password","","",1);
272 print "\n";
273 system "stty echo";
274 my $ldaptls=read_entry(". ldap tls support (1/0)","","0",0);
275 my ($cert_verify,$cert_cafile,$cert_clientcert,$cert_clientkey)=("","","","");
276 if ($ldaptls == 1) {
277   $cert_verify=read_entry(". How to verify the server's certificate (none, optional or require)","","require",0);
278   $cert_cafile=read_entry(". CA certificate file","","$conf_dir/ca.pem",0);
279   $cert_clientcert=read_entry(". certificate to use to connect to the ldap server","","$conf_dir/smbldap-tools.pem",0);
280   $cert_clientkey=read_entry(". key certificate to use to connect to the ldap server","","$conf_dir/smbldap-tools.key",0);
281 }
282
283 # let's test if any sid is available
284 # Here is the strategy: If smb.conf has 'domain master = No'
285 #  this means we are a BDC and we must obtain the SID from the PDC
286 #  using the command 'net rpc getsid -S PDC -Uroot%password' BEFORE
287 #  executing this script - that then guarantees the correct SID is available.
288 my $sid_tmp=`net getlocalsid \$netbios_name 2>/dev/null | cut -f2 -d: | sed "s/ //g"`;
289 chomp $sid_tmp;
290 print ". SID for domain $config{workgroup}: SID of the domain (can be obtained with 'net getlocalsid $netbios_name')\n";
291 my $sid=read_entry("  SID for domain $config{workgroup}","","$sid_tmp",0);
292
293 print ". unix password encryption: encryption used for unix passwords\n";
294 my $cryp_algo=read_entry("  unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA)","","SSHA",0);
295 my $crypt_salt_format="";
296 if ( $cryp_algo eq "CRYPT" ) {
297   print ". crypt salt format: If hash_encrypt is set to CRYPT, you may set \n";
298   print "  a salt format. The default is \"\%s\", but many systems will generate\n";
299   print "  MD5 hashed passwords if you use \"\$1\$\%\.8s\"\n";
300   $crypt_salt_format=read_entry("  crypt salt format","","\%s",0);
301 }
302
303 my $default_user_gidnumber=read_entry(". default user gidNumber","","513",0);
304
305 my $default_computer_gidnumber=read_entry(". default computer gidNumber","","515",0);
306
307 my $userLoginShell=read_entry(". default login shell","","/bin/bash",0);
308
309 my $skeletonDir=read_entry(". default skeleton directory","","/etc/skel",0);
310
311 my $mailDomain=read_entry(". default domain name to append to mail adress", "","",0);
312
313 print "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n";
314 my $template_smbldap="
315 # \$Source: /opt/cvs/samba/smbldap-tools/configure.pl,v \$
316 # \$Id: configure.pl,v 1.16 2005/05/27 14:28:47 jtournier Exp \$
317 #
318 # smbldap-tools.conf : Q & D configuration file for smbldap-tools
319
320 #  This code was developped by IDEALX (http://IDEALX.org/) and
321 #  contributors (their names can be found in the CONTRIBUTORS file).
322 #
323 #                 Copyright (C) 2001-2002 IDEALX
324 #
325 #  This program is free software; you can redistribute it and/or
326 #  modify it under the terms of the GNU General Public License
327 #  as published by the Free Software Foundation; either version 2
328 #  of the License, or (at your option) any later version.
329 #
330 #  This program is distributed in the hope that it will be useful,
331 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
332 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
333 #  GNU General Public License for more details.
334 #
335 #  You should have received a copy of the GNU General Public License
336 #  along with this program; if not, write to the Free Software
337 #  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
338 #  USA.
339
340 #  Purpose :
341 #       . be the configuration file for all smbldap-tools scripts
342
343 ##############################################################################
344 #
345 # General Configuration
346 #
347 ##############################################################################
348
349 # Put your own SID. To obtain this number do: \"net getlocalsid\".
350 # If not defined, parameter is taking from \"net getlocalsid\" return
351 SID=\"$sid\"
352
353 # Domain name the Samba server is in charged.
354 # If not defined, parameter is taking from smb.conf configuration file
355 # Ex: sambaDomain=\"IDEALX-NT\"
356 sambaDomain=\"$workgroup\"
357
358 ##############################################################################
359 #
360 # LDAP Configuration
361 #
362 ##############################################################################
363
364 # Notes: to use to dual ldap servers backend for Samba, you must patch
365 # Samba with the dual-head patch from IDEALX. If not using this patch
366 # just use the same server for slaveLDAP and masterLDAP.
367 # Those two servers declarations can also be used when you have 
368 # . one master LDAP server where all writing operations must be done
369 # . one slave LDAP server where all reading operations must be done
370 #   (typically a replication directory)
371
372 # Slave LDAP server
373 # Ex: slaveLDAP=127.0.0.1
374 # If not defined, parameter is set to \"127.0.0.1\"
375 slaveLDAP=\"$ldap_slave_server\"
376
377 # Slave LDAP port
378 # If not defined, parameter is set to \"389\"
379 slavePort=\"$ldap_slave_port\"
380
381 # Master LDAP server: needed for write operations
382 # Ex: masterLDAP=127.0.0.1
383 # If not defined, parameter is set to \"127.0.0.1\"
384 masterLDAP=\"$ldapmasterserver\"
385
386 # Master LDAP port
387 # If not defined, parameter is set to \"389\"
388 masterPort=\"$ldapmasterport\"
389
390 # Use TLS for LDAP
391 # If set to 1, this option will use start_tls for connection
392 # (you should also used the port 389)
393 # If not defined, parameter is set to \"1\"
394 ldapTLS=\"$ldaptls\"
395
396 # How to verify the server's certificate (none, optional or require)
397 # see \"man Net::LDAP\" in start_tls section for more details
398 verify=\"$cert_verify\"
399
400 # CA certificate
401 # see \"man Net::LDAP\" in start_tls section for more details
402 cafile=\"$cert_cafile\"
403
404 # certificate to use to connect to the ldap server
405 # see \"man Net::LDAP\" in start_tls section for more details
406 clientcert=\"$cert_clientcert\"
407
408 # key certificate to use to connect to the ldap server
409 # see \"man Net::LDAP\" in start_tls section for more details
410 clientkey=\"$cert_clientkey\"
411
412 # LDAP Suffix
413 # Ex: suffix=dc=IDEALX,dc=ORG
414 suffix=\"$ldap_suffix\"
415
416 # Where are stored Users
417 # Ex: usersdn=\"ou=Users,dc=IDEALX,dc=ORG\"
418 # Warning: if 'suffix' is not set here, you must set the full dn for usersdn
419 usersdn=\"ou=$ldap_user_suffix,\${suffix}\"
420
421 # Where are stored Computers
422 # Ex: computersdn=\"ou=Computers,dc=IDEALX,dc=ORG\"
423 # Warning: if 'suffix' is not set here, you must set the full dn for computersdn
424 computersdn=\"ou=$ldap_machine_suffix,\${suffix}\"
425
426 # Where are stored Groups
427 # Ex: groupsdn=\"ou=Groups,dc=IDEALX,dc=ORG\"
428 # Warning: if 'suffix' is not set here, you must set the full dn for groupsdn
429 groupsdn=\"ou=$ldap_group_suffix,\${suffix}\"
430
431 # Where are stored Idmap entries (used if samba is a domain member server)
432 # Ex: groupsdn=\"ou=Idmap,dc=IDEALX,dc=ORG\"
433 # Warning: if 'suffix' is not set here, you must set the full dn for idmapdn
434 idmapdn=\"$ldap_idmap_suffix,\${suffix}\"
435
436 # Where to store next uidNumber and gidNumber available for new users and groups
437 # If not defined, entries are stored in sambaDomainName object.
438 # Ex: sambaUnixIdPooldn=\"sambaDomainName=\${sambaDomain},\${suffix}\"
439 # Ex: sambaUnixIdPooldn=\"cn=NextFreeUnixId,\${suffix}\"
440 sambaUnixIdPooldn=\"$sambaUnixIdPooldn,\${suffix}\"
441
442 # Default scope Used
443 scope=\"sub\"
444
445 # Unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT)
446 hash_encrypt=\"$cryp_algo\"
447
448 # if hash_encrypt is set to CRYPT, you may set a salt format.
449 # default is \"\%s\", but many systems will generate MD5 hashed
450 # passwords if you use \"\$1\$\%\.8s\". This parameter is optional!
451 crypt_salt_format=\"$crypt_salt_format\"
452
453 ##############################################################################
454
455 # Unix Accounts Configuration
456
457 ##############################################################################
458
459 # Login defs
460 # Default Login Shell
461 # Ex: userLoginShell=\"/bin/bash\"
462 userLoginShell=\"$userLoginShell\"
463
464 # Home directory
465 # Ex: userHome=\"/home/\%U\"
466 userHome=\"$userHome\"
467
468 # Default mode used for user homeDirectory
469 userHomeDirectoryMode=\"$userHomeDirectoryMode\"
470
471 # Gecos
472 userGecos=\"System User\"
473
474 # Default User (POSIX and Samba) GID
475 defaultUserGid=\"$default_user_gidnumber\"
476
477 # Default Computer (Samba) GID
478 defaultComputerGid=\"$default_computer_gidnumber\"
479
480 # Skel dir
481 skeletonDir=\"$skeletonDir\"
482
483 # Default password validation time (time in days) Comment the next line if
484 # you don't want password to be enable for defaultMaxPasswordAge days (be
485 # careful to the sambaPwdMustChange attribute's value)
486 defaultMaxPasswordAge=\"$defaultMaxPasswordAge\"
487
488 ##############################################################################
489 #
490 # SAMBA Configuration
491 #
492 ##############################################################################
493
494 # The UNC path to home drives location (\%U username substitution)
495 # Just set it to a null string if you want to use the smb.conf 'logon home'
496 # directive and/or disable roaming profiles
497 # Ex: userSmbHome=\"\\\\PDC-SMB3\\%U\"
498 userSmbHome=\"$logonhome\"
499
500 # The UNC path to profiles locations (\%U username substitution)
501 # Just set it to a null string if you want to use the smb.conf 'logon path'
502 # directive and/or disable roaming profiles
503 # Ex: userProfile=\"\\\\PDC-SMB3\\profiles\\\%U\"
504 userProfile=\"$logonpath\"
505
506 # The default Home Drive Letter mapping
507 # (will be automatically mapped at logon time if home directory exist)
508 # Ex: userHomeDrive=\"H:\"
509 userHomeDrive=\"$logondrive\"
510
511 # The default user netlogon script name (\%U username substitution)
512 # if not used, will be automatically username.cmd
513 # make sure script file is edited under dos
514 # Ex: userScript=\"startup.cmd\" # make sure script file is edited under dos
515 userScript=\"$userScript\"
516
517 # Domain appended to the users \"mail\"-attribute
518 # when smbldap-useradd -M is used
519 # Ex: mailDomain=\"idealx.com\"
520 mailDomain=\"$mailDomain\"
521
522 ##############################################################################
523 #
524 # SMBLDAP-TOOLS Configuration (default are ok for a RedHat)
525 #
526 ##############################################################################
527
528 # Allows not to use smbpasswd (if with_smbpasswd == 0 in smbldap_conf.pm) but
529 # prefer Crypt::SmbHash library
530 with_smbpasswd=\"0\"
531 smbpasswd=\"/usr/bin/smbpasswd\"
532
533 # Allows not to use slappasswd (if with_slappasswd == 0 in smbldap_conf.pm)
534 # but prefer Crypt:: libraries
535 with_slappasswd=\"0\"
536 slappasswd=\"/usr/sbin/slappasswd\"
537
538 # comment out the following line to get rid of the default banner
539 # no_banner=\"1\"
540 ";
541
542 my $template_smbldap_bind="
543 ############################
544 # Credential Configuration #
545 ############################
546 # Notes: you can specify two differents configuration if you use a
547 # master ldap for writing access and a slave ldap server for reading access
548 # By default, we will use the same DN (so it will work for standard Samba
549 # release)
550 slaveDN=\"$ldap_master_admin_dn\"
551 slavePw=\"$ldap_master_bind_password\"
552 masterDN=\"$ldap_slave_admin_dn\"
553 masterPw=\"$ldap_slave_bind_password\"
554 ";
555
556 print "backup old configuration files:\n";
557 print "  $smbldap_conf->$smbldap_conf.old\n";
558 print "  $smbldap_bind_conf->$smbldap_bind_conf.old\n";
559 rename "$smbldap_conf","$smbldap_conf.old";
560 rename "$smbldap_bind_conf","$smbldap_bind_conf.old";
561
562 print "writing new configuration file:\n";
563 open (SMBLDAP,'>',"$smbldap_conf") || die "Unable to open $smbldap_conf for writing !\n";
564 print SMBLDAP "$template_smbldap";
565 close(SMBLDAP);
566 print "  $smbldap_conf done.\n";
567 my $mode=0644;
568 chmod $mode,"$smbldap_conf","$smbldap_conf.old";
569
570 open (SMBLDAP_BIND,'>',"$smbldap_bind_conf") || die "Unable to open $smbldap_bind_conf for writing !\n";
571 print SMBLDAP_BIND "$template_smbldap_bind";
572 close(SMBLDAP_BIND);
573 print "  $smbldap_bind_conf done.\n";
574 $mode=0600;
575 chmod $mode,"$smbldap_bind_conf","$smbldap_bind_conf.old";
576
577
578