mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-09 18:45:54 +02:00
Sambactrl und samba.cgi von Maniacikarus
git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@432 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8
This commit is contained in:
@@ -22,22 +22,23 @@ my %netsettings = ();
|
||||
my %ovpnsettings = ();
|
||||
my $message = "";
|
||||
my $errormessage = "";
|
||||
my $shareentry = "";
|
||||
my @shares = ();
|
||||
my @shareline = ();
|
||||
my $shareconfigentry = "";
|
||||
my @sharesconfig = ();
|
||||
my @shareconfigline = ();
|
||||
my $shareoption = '';
|
||||
my $defaultoption= "[Share]\npath = /shares/share1\ncomment = Share - Public Access\nbrowseable = yes\nwriteable = yes\ncreate mask = 0777\ndirectory mask = 0777\nguest ok = yes\npublic = yes\nforce user = samba";
|
||||
my $userentry = "";
|
||||
my @user = ();
|
||||
my @userline = ();
|
||||
my @proto = ();
|
||||
my %selected= () ;
|
||||
my $sharefile = "/var/ipfire/samba/shares";
|
||||
my $userfile = "/var/ipfire/samba/private/smbpasswd";
|
||||
&General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
|
||||
&General::readhash("${General::swroot}/ovpn/settings", \%ovpnsettings);
|
||||
|
||||
############################################################################################################################
|
||||
############################################# Samba Dienste f<>r Status<75>berpr<70>fung ##########################################
|
||||
|
||||
my %servicenames =
|
||||
(
|
||||
'SMB Daemon' => 'smbd',
|
||||
@@ -47,6 +48,27 @@ my %servicenames =
|
||||
|
||||
&Header::showhttpheaders();
|
||||
|
||||
############################################################################################################################
|
||||
#################################### Initialisierung von Samba Sharess f<>r die Verarbeitung ################################
|
||||
|
||||
my @Zeilen= ();
|
||||
my @Shares= ();
|
||||
my $shareentry = "";
|
||||
my @shares = ();
|
||||
my @shareline = ();
|
||||
my $sharefile = "/var/ipfire/samba/shares";
|
||||
my $EOF = qx(cat $sharefile | wc -l);
|
||||
|
||||
@shares = `grep -n '^\\[' $sharefile`;
|
||||
foreach $shareentry (@shares)
|
||||
{
|
||||
@shareline = split( /\:/, $shareentry );
|
||||
push(@Zeilen,$shareline[0]);push(@Shares,$shareline[1]);
|
||||
}
|
||||
|
||||
############################################################################################################################
|
||||
#################################### Initialisierung von Samba Variablen f<>r global Settings ###############################
|
||||
|
||||
$sambasettings{'WORKGRP'} = 'homeip.net';
|
||||
$sambasettings{'NETBIOSNAME'} = 'IPFIRE';
|
||||
$sambasettings{'SRVSTRING'} = 'Samba Server running on IPFire 2.0';
|
||||
@@ -73,16 +95,17 @@ $sambasettings{'ACTION'} = '';
|
||||
&Header::openbigbox('100%', 'left', '', $errormessage);
|
||||
|
||||
############################################################################################################################
|
||||
############################################################################################################################
|
||||
############################################# Samba Rootskript aufrufe f<>r SU-Actions ######################################
|
||||
|
||||
if ($sambasettings{'ACTION'} eq 'smbuserdisable'){system('/usr/local/bin/sambactrl 1 $sambasettings{"NAME"}');}
|
||||
if ($sambasettings{'ACTION'} eq 'smbuserenable'){system('/usr/local/bin/sambactrl 2 $sambasettings{"NAME"}');}
|
||||
if ($sambasettings{'ACTION'} eq 'smbuserdelete'){system('/usr/local/bin/sambactrl 3 $sambasettings{"NAME"}');}
|
||||
if ($sambasettings{'ACTION'} eq 'smbuseradd'){system('/usr/local/bin/sambactrl 4 $username $password');}
|
||||
if ($sambasettings{'ACTION'} eq 'smbchangepw'){system('/usr/local/bin/sambactrl 5 $username $password');}
|
||||
if ($sambasettings{'ACTION'} eq 'smbsharechange'){system('/usr/local/bin/sambactrl 7 $sambasettings{"SHARENAME"} $sambasettings{"SHAREOPTION"}');}
|
||||
if ($sambasettings{'ACTION'} eq 'smbstart'){system('/usr/local/bin/sambactrl 8');}
|
||||
if ($sambasettings{'ACTION'} eq 'smbstop'){system('/usr/local/bin/sambactrl 9');}
|
||||
if ($sambasettings{'ACTION'} eq 'smbuserdisable'){system('/usr/local/bin/sambactrl smbuserdisable $sambasettings{"NAME"}');}
|
||||
if ($sambasettings{'ACTION'} eq 'smbuserenable'){system('/usr/local/bin/sambactrl smbuserenable $sambasettings{"NAME"}');}
|
||||
if ($sambasettings{'ACTION'} eq 'smbuserdelete'){system('/usr/local/bin/sambactrl smbuserdelete $sambasettings{"NAME"}');}
|
||||
if ($sambasettings{'ACTION'} eq 'smbuseradd'){system('/usr/local/bin/sambactrl smbuseradd $username $password');}
|
||||
if ($sambasettings{'ACTION'} eq 'smbchangepw'){system('/usr/local/bin/sambactrl smbchangepw $username $password');}
|
||||
if ($sambasettings{'ACTION'} eq 'smbrestart'){system('/usr/local/bin/sambactrl smbrestart');}
|
||||
if ($sambasettings{'ACTION'} eq 'smbstart'){system('/usr/local/bin/sambactrl smbstart');}
|
||||
if ($sambasettings{'ACTION'} eq 'smbstop'){system('/usr/local/bin/sambactrl smbstop');}
|
||||
# smbsharechange is directly called by the if clause
|
||||
|
||||
############################################################################################################################
|
||||
############################################## Samba Share neu anlegen #####################################################
|
||||
@@ -90,7 +113,6 @@ if ($sambasettings{'ACTION'} eq 'smbstop'){system('/usr/local/bin/sambactrl 9');
|
||||
if ($sambasettings{'ACTION'} eq 'smbshareadd')
|
||||
{
|
||||
my $emptyline= "";
|
||||
system('/usr/local/bin/sambactrl 6');
|
||||
open (FILE, ">>${General::swroot}/samba/shares") or die "Can't save the shares settings: $!";
|
||||
flock (FILE, 2);
|
||||
|
||||
@@ -100,10 +122,138 @@ $emptyline
|
||||
END
|
||||
;
|
||||
close FILE;
|
||||
system('/usr/local/bin/sambactrl smbsharechange');
|
||||
|
||||
@Zeilen = ();
|
||||
@Shares = ();
|
||||
@shares = `grep -n '^\\[' $sharefile`;
|
||||
foreach $shareentry (@shares)
|
||||
{
|
||||
@shareline = split( /\:/, $shareentry );
|
||||
push(@Zeilen,$shareline[0]);push(@Shares,$shareline[1]);
|
||||
}
|
||||
}
|
||||
|
||||
############################################################################################################################
|
||||
################################################## Samba Share l<>schen #####################################################
|
||||
|
||||
if ($sambasettings{'ACTION'} eq 'smbsharedel')
|
||||
{
|
||||
my $sharebody = '';
|
||||
my $sharehead = '';
|
||||
my $sharetext = '';
|
||||
my $sharename = "$sambasettings{'NAME'}";
|
||||
chomp $sharename;
|
||||
$sharename=~s/\s//g;
|
||||
|
||||
for(my $i = 0; $i <= $#Shares; $i++)
|
||||
{
|
||||
chomp $Shares[$i];
|
||||
$Shares[$i]=~s/\s//g;
|
||||
if ( "$Shares[$i]" eq "$sharename" )
|
||||
{
|
||||
my $Zeilenbegin = $Zeilen[$i]-2;
|
||||
my $Zeilenende = $EOF-$Zeilen[$i+1]+1;
|
||||
my $Zeilenende2 = $Zeilenende-1;
|
||||
|
||||
if ( $Zeilen[$i] eq $Zeilen[$#Shares] )
|
||||
{
|
||||
$sharehead = qx(head -$Zeilenbegin $sharefile);
|
||||
$sharetext = $sharehead;
|
||||
}
|
||||
elsif ($Zeilen[$i] eq 1 )
|
||||
{
|
||||
$sharehead = qx(tail -$Zeilenende $sharefile | head -$Zeilenende2);
|
||||
$sharetext = $sharehead;
|
||||
}
|
||||
else
|
||||
{
|
||||
$sharehead = qx(head -$Zeilenbegin $sharefile);$sharebody = qx(tail -$Zeilenende $sharefile | head -$Zeilenende2);
|
||||
$sharetext = "$sharehead\n$sharebody";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
open (FILE, ">${General::swroot}/samba/shares") or die "Can't delete the share settings: $!";
|
||||
flock (FILE, 2);
|
||||
print FILE <<END
|
||||
$sharetext
|
||||
END
|
||||
;
|
||||
close FILE;
|
||||
system('/usr/local/bin/sambactrl smbsharechange');
|
||||
|
||||
@Zeilen = ();
|
||||
@Shares = ();
|
||||
@shares = `grep -n '^\\[' $sharefile`;
|
||||
foreach $shareentry (@shares)
|
||||
{
|
||||
@shareline = split( /\:/, $shareentry );
|
||||
push(@Zeilen,$shareline[0]);push(@Shares,$shareline[1]);
|
||||
}
|
||||
}
|
||||
############################################################################################################################
|
||||
################################################## Sambashare <20>ndern #######################################################
|
||||
|
||||
if ($sambasettings{'ACTION'} eq 'smbsharechange')
|
||||
{
|
||||
my $sharebody = '';
|
||||
my $sharehead = '';
|
||||
my $sharename = "$sambasettings{'NAME'}";
|
||||
my $sharetext = '';
|
||||
chomp $sharename;
|
||||
$sharename=~s/\s//g;
|
||||
|
||||
for(my $i = 0; $i <= $#Shares; $i++)
|
||||
{
|
||||
chomp $Shares[$i];
|
||||
$Shares[$i]=~s/\s//g;
|
||||
if ( "$Shares[$i]" eq "$sharename" )
|
||||
{
|
||||
my $Zeilenbegin = $Zeilen[$i]-2;
|
||||
my $Zeilenende = $EOF-$Zeilen[$i+1]+1;
|
||||
my $Zeilenende2 = $Zeilenende-1;
|
||||
|
||||
if ( $Zeilen[$i] eq $Zeilen[$#Shares] )
|
||||
{
|
||||
$sharehead = qx(head -$Zeilenbegin $sharefile);
|
||||
$sharetext = $sharehead;
|
||||
}
|
||||
elsif ($Zeilen[$i] eq 1 )
|
||||
{
|
||||
$sharehead = qx(tail -$Zeilenende $sharefile | head -$Zeilenende2);
|
||||
$sharetext = $sharehead;
|
||||
}
|
||||
else
|
||||
{
|
||||
$sharehead = qx(head -$Zeilenbegin $sharefile);$sharebody = qx(tail -$Zeilenende $sharefile | head -$Zeilenende2);
|
||||
$sharetext = "$sharehead\n$sharebody";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
open (FILE, ">${General::swroot}/samba/shares") or die "Can't delete the share settings: $!";
|
||||
flock (FILE, 2);
|
||||
print FILE <<END
|
||||
$sharetext
|
||||
$sambasettings{'SHAREOPTION'}
|
||||
END
|
||||
;
|
||||
close FILE;
|
||||
system('/usr/local/bin/sambactrl smbsharechange');
|
||||
|
||||
@Zeilen = ();
|
||||
@Shares = ();
|
||||
@shares = `grep -n '^\\[' $sharefile`;
|
||||
foreach $shareentry (@shares)
|
||||
{
|
||||
@shareline = split( /\:/, $shareentry );
|
||||
push(@Zeilen,$shareline[0]);push(@Shares,$shareline[1]);
|
||||
}
|
||||
}
|
||||
|
||||
############################################################################################################################
|
||||
##################################### Umsetzen der Werte von Checkboxen und Dropdowns ######################################
|
||||
|
||||
if ($sambasettings{'ACTION'} eq $Lang::tr{'save'})
|
||||
{
|
||||
@@ -115,7 +265,7 @@ if ($checked{'VPN'}){ $sambasettings{'INTERFACES'} = "$sambasettings{'INTERFACES
|
||||
if ($sambasettings{'OTHERINTERFACES'} ne ''){ $sambasettings{'INTERFACES'} = "$sambasettings{'INTERFACES'} $sambasettings{'OTHERINTERFACES'}";}
|
||||
|
||||
############################################################################################################################
|
||||
############################################################################################################################
|
||||
############################################# Schreiben der Samba globals ##################################################
|
||||
|
||||
&General::writehash("${General::swroot}/samba/settings", \%sambasettings);
|
||||
|
||||
@@ -174,6 +324,9 @@ if ($errormessage) {
|
||||
&Header::closebox();
|
||||
}
|
||||
|
||||
############################################################################################################################
|
||||
########################################## Aktivieren von Checkboxen und Dropdowns #########################################
|
||||
|
||||
$checked{'WINSSUPPORT'}{$sambasettings{'WINSSUPPORT'}} = "checked='checked' ";
|
||||
$checked{'GREEN'}{$sambasettings{'GREEN'}} = "checked='checked' ";
|
||||
$checked{'BLUE'}{$sambasettings{'BLUE'}} = "checked='checked' ";
|
||||
@@ -184,7 +337,7 @@ $selected{'MAPTOGUEST'}{$sambasettings{'MAPTOGUEST'}} = "selected='selected'";
|
||||
$selected{'SECURITY'}{$sambasettings{'SECURITY'}} = "selected='selected'";
|
||||
|
||||
############################################################################################################################
|
||||
############################################################################################################################
|
||||
################################### Aufbau der HTML Seite f<>r globale Sambaeinstellungen ###################################
|
||||
|
||||
&Header::openbox('100%', 'center', 'Samba');
|
||||
print <<END
|
||||
@@ -278,6 +431,9 @@ END
|
||||
;
|
||||
&Header::closebox();
|
||||
|
||||
############################################################################################################################
|
||||
########################################## Benutzerverwaltung f<>r Usersecurity #############################################
|
||||
|
||||
if ($sambasettings{'SECURITY'} eq 'user')
|
||||
{
|
||||
&Header::openbox('100%', 'center', 'accounting - user Security');
|
||||
@@ -290,9 +446,13 @@ print <<END
|
||||
<tr><td><u>Benutzername</u></td><td><u>Passwort</u></td><td><u>Status</u></td><td colspan='3' width="5"><u>Optionen</u></td></tr>
|
||||
END
|
||||
;
|
||||
open( FILE, "< $userfile") or die "Can't read user file: $!";
|
||||
|
||||
system('/usr/local/bin/sambactrl readsmbpasswd');
|
||||
open(FILE, "</var/ipfire/samba/private/smbpasswd") or die "Can't read user file: $!";
|
||||
flock (FILE, 2);
|
||||
@user = <FILE>;
|
||||
close(FILE);
|
||||
system('/usr/local/bin/sambactrl locksmbpasswd');
|
||||
foreach $userentry (sort @user)
|
||||
{
|
||||
@userline = split( /\:/, $userentry );
|
||||
@@ -410,6 +570,9 @@ END
|
||||
|
||||
&Header::closebox();
|
||||
}
|
||||
|
||||
############################################################################################################################
|
||||
############################################### Verwalten von Freigaben ####################################################
|
||||
|
||||
&Header::openbox('100%', 'center', 'Shares');
|
||||
|
||||
@@ -420,14 +583,7 @@ print <<END
|
||||
<tr><td><u>Names des Shares</u></td><td colspan='2' width="5"><u>Optionen</u></td></tr>
|
||||
END
|
||||
;
|
||||
my @Zeilen;
|
||||
my @Shares;
|
||||
@shares = `grep -n '^\\[' $sharefile`;
|
||||
foreach $shareentry (@shares)
|
||||
{
|
||||
@shareline = split( /\:/, $shareentry );
|
||||
push(@Zeilen,$shareline[0]);push(@Shares,$shareline[1]);
|
||||
}
|
||||
|
||||
|
||||
foreach $shareentry (sort @Shares)
|
||||
{
|
||||
@@ -440,7 +596,7 @@ END
|
||||
</td></form>
|
||||
<td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
|
||||
<input type='hidden' name='NAME' value='$shareentry'>
|
||||
<input type='hidden' name='ACTION' value='Loeschen'>
|
||||
<input type='hidden' name='ACTION' value='smbsharedel'>
|
||||
<input type='image' alt='Loeschen' src='/images/delete.gif'>
|
||||
</td></form><tr>
|
||||
END
|
||||
@@ -475,9 +631,6 @@ END
|
||||
|
||||
if ($sambasettings{'ACTION'} eq 'shareadd' || $sambasettings{'ACTION'} eq 'optioncaption' )
|
||||
{
|
||||
|
||||
my $defaultoption= "[Share]\npath = /shares/share1\ncomment = Share - Public Access\nbrowseable = yes\nwriteable = yes\ncreate mask = 0777\ndirectory mask = 0777\nguest ok = yes\npublic = yes\nforce user = samba";
|
||||
|
||||
print <<END
|
||||
<hr>
|
||||
<table width='500px' cellspacing='0'><br>
|
||||
@@ -499,7 +652,6 @@ END
|
||||
if ($sambasettings{'ACTION'} eq 'sharechange' || $sambasettings{'ACTION'} eq 'optioncaption2' )
|
||||
{
|
||||
my $sharename = "$sambasettings{'NAME'}";
|
||||
my $shareoption = '';
|
||||
chomp $sharename;
|
||||
$sharename=~s/\s//g;
|
||||
|
||||
@@ -511,7 +663,6 @@ if ($sambasettings{'ACTION'} eq 'sharechange' || $sambasettings{'ACTION'} eq 'op
|
||||
{
|
||||
my $Zeilenbegin = $Zeilen[$i+1]-2;
|
||||
my $Zeilenende = $Zeilen[$i+1]-$Zeilen[$i];
|
||||
my $EOF = qx(cat $sharefile | wc -l);
|
||||
if ( $Zeilen[$i] eq $Zeilen[$#Shares] )
|
||||
{$Zeilenende = $EOF-$Zeilen[$#Shares]+1;$Zeilenbegin = $EOF-$Zeilen[$#Shares]; $shareoption = qx(tail -$Zeilenende $sharefile | head -$Zeilenbegin);}
|
||||
else{$shareoption = qx(head -$Zeilenbegin $sharefile | tail -$Zeilenende);}
|
||||
@@ -530,7 +681,9 @@ if ($sambasettings{'ACTION'} eq 'sharechange' || $sambasettings{'ACTION'} eq 'op
|
||||
<tr><td colspan='2' align='center'><textarea name="SHAREOPTION" cols="50" rows="15" Wrap="off">$shareoption</textarea></td></tr>
|
||||
</table>
|
||||
<table width='50px' cellspacing='0'><br>
|
||||
<tr><td align='center'><input type='submit' name='ACTION' value='smbsharechange'></td></tr></form>
|
||||
<tr><td align='center'>
|
||||
<input type='hidden' name='NAME' value='$sharename'>
|
||||
<input type='submit' name='ACTION' value='smbsharechange'></td></tr></form>
|
||||
</table>
|
||||
END
|
||||
;
|
||||
@@ -593,7 +746,7 @@ END
|
||||
&Header::closepage();
|
||||
|
||||
############################################################################################################################
|
||||
############################################################################################################################
|
||||
############################################ Subfunktion f<>r Sambadienste ##################################################
|
||||
|
||||
sub isrunning
|
||||
{
|
||||
|
||||
@@ -11,7 +11,7 @@ SUID_PROGS = setdmzholes setportfw setfilters setxtaccess restartdhcp restartsno
|
||||
restartapplejuice setdate rebuildhosts \
|
||||
restartsyslogd logwatch openvpnctrl timecheckctrl \
|
||||
restartwireless getipstat qosctrl launch-ether-wake \
|
||||
redctrl extrahdctrl
|
||||
redctrl extrahdctrl sambactrl
|
||||
|
||||
install : all
|
||||
install -m 755 $(PROGS) /usr/local/bin
|
||||
@@ -49,6 +49,9 @@ redctrl: redctrl.c setuid.o ../install+setup/libsmooth/varval.o
|
||||
extrahdctrl: extrahdctrl.c setuid.o ../install+setup/libsmooth/varval.o
|
||||
$(COMPILE) -I../install+setup/libsmooth/ extrahdctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
|
||||
|
||||
sambactrl: sambactrl.c setuid.o ../install+setup/libsmooth/varval.o
|
||||
$(COMPILE) -I../install+setup/libsmooth/ sambactrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
|
||||
|
||||
launch-ether-wake: launch-ether-wake.c setuid.o ../install+setup/libsmooth/varval.o
|
||||
$(COMPILE) -I../install+setup/libsmooth/ launch-ether-wake.c setuid.o ../install+setup/libsmooth/varval.o -o $@
|
||||
|
||||
|
||||
107
src/misc-progs/sambactrl.c
Normal file
107
src/misc-progs/sambactrl.c
Normal file
@@ -0,0 +1,107 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include "setuid.h"
|
||||
|
||||
int main(int argc, char**argv)
|
||||
{
|
||||
char commandstring[256];
|
||||
|
||||
if (!(initsetuid()))
|
||||
exit(1);
|
||||
|
||||
// Check what command is asked
|
||||
if (argc==1)
|
||||
{
|
||||
fprintf (stderr, "Missing smbctrl command!\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (argc==2 && strcmp(argv[1], "smbuserdisable")==0)
|
||||
{
|
||||
snprintf(commandstring,STRING_SIZE-1,"/usr/bin/smbpasswd -d %s",argv[2]);
|
||||
safe_system(commandstring);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (argc==2 && strcmp(argv[1], "smbuserenable")==0)
|
||||
{
|
||||
snprintf(commandstring,STRING_SIZE-1,"/usr/bin/smbpasswd -e %s",argv[2]);
|
||||
safe_system(commandstring);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (argc==2 && strcmp(argv[1], "smbuserdelete")==0)
|
||||
{
|
||||
snprintf(commandstring,STRING_SIZE-1,"/usr/bin/smbpasswd -x %s",argv[2]);
|
||||
safe_system(commandstring);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (argc==2 && strcmp(argv[1], "smbsafeconf")==0)
|
||||
{
|
||||
safe_system("/bin/cat /var/ipfire/samba/global /var/ipfire/samba/shares > /var/ipfire/samba/smb.conf");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (argc==2 && strcmp(argv[1], "smbglobalreset")==0)
|
||||
{
|
||||
safe_system("/bin/cat /var/ipfire/samba/global.default /var/ipfire/samba/shares > /var/ipfire/samba/smb.conf");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (argc==2 && strcmp(argv[1], "smbsharesreset")==0)
|
||||
{
|
||||
safe_system("/bin/cat /var/ipfire/samba/global /var/ipfire/samba/shares.default > /var/ipfire/samba/smb.conf");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (argc==2 && strcmp(argv[1], "smbrestart")==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (argc==2 && strcmp(argv[1], "smbstop")==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (argc==2 && strcmp(argv[1], "smbstart")==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (argc==2 && strcmp(argv[1], "smbuseradd")==0)
|
||||
{
|
||||
snprintf(commandstring,STRING_SIZE-1,"/usr/sbin/useradd -c 'Samba User' -d /opt/samba -g 2110 -p %s -s /bin/false %s",argv[3],argv[2]);
|
||||
safe_system(commandstring);
|
||||
snprintf(commandstring,STRING_SIZE-1,"/bin/printf '%s\n%s\n' | /usr/local/bin/smbpasswd -as %s",argv[3],argv[3],argv[2]);
|
||||
safe_system(commandstring);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (argc==2 && strcmp(argv[1], "smbchangepw")==0)
|
||||
{
|
||||
snprintf(commandstring,STRING_SIZE-1,"/bin/printf '%s\n%s\n' | /usr/local/bin/smbpasswd -as %s",argv[3],argv[3],argv[2]);
|
||||
safe_system(commandstring);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (argc==2 && strcmp(argv[1], "readsmbpasswd")==0)
|
||||
{
|
||||
safe_system("/bin/chown root:nobody /var/ipfire/samba/private");
|
||||
safe_system("/bin/chown root:nobody /var/ipfire/samba/private/smbpasswd");
|
||||
safe_system("/bin/chmod 640 /var/ipfire/samba/private/smbpasswd");
|
||||
safe_system("/bin/chmod 650 /var/ipfire/samba/private");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (argc==2 && strcmp(argv[1], "locksmbpasswd")==0)
|
||||
{
|
||||
safe_system("/bin/chown root:root /var/ipfire/samba/private");
|
||||
safe_system("/bin/chown root:root /var/ipfire/samba/private/smbpasswd");
|
||||
safe_system("/bin/chmod 600 /var/ipfire/samba/private/smbpasswd");
|
||||
safe_system("/bin/chmod 600 /var/ipfire/samba/private");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user