]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/misc-progs/sambactrl.c
Sambactrl und samba.cgi von Maniacikarus
[people/pmueller/ipfire-2.x.git] / src / misc-progs / sambactrl.c
1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include "setuid.h"
5
6 int main(int argc, char**argv)
7 {
8 char commandstring[256];
9
10 if (!(initsetuid()))
11 exit(1);
12
13 // Check what command is asked
14 if (argc==1)
15 {
16 fprintf (stderr, "Missing smbctrl command!\n");
17 return 1;
18 }
19
20 if (argc==2 && strcmp(argv[1], "smbuserdisable")==0)
21 {
22 snprintf(commandstring,STRING_SIZE-1,"/usr/bin/smbpasswd -d %s",argv[2]);
23 safe_system(commandstring);
24 return 0;
25 }
26
27 if (argc==2 && strcmp(argv[1], "smbuserenable")==0)
28 {
29 snprintf(commandstring,STRING_SIZE-1,"/usr/bin/smbpasswd -e %s",argv[2]);
30 safe_system(commandstring);
31 return 0;
32 }
33
34 if (argc==2 && strcmp(argv[1], "smbuserdelete")==0)
35 {
36 snprintf(commandstring,STRING_SIZE-1,"/usr/bin/smbpasswd -x %s",argv[2]);
37 safe_system(commandstring);
38 return 0;
39 }
40
41 if (argc==2 && strcmp(argv[1], "smbsafeconf")==0)
42 {
43 safe_system("/bin/cat /var/ipfire/samba/global /var/ipfire/samba/shares > /var/ipfire/samba/smb.conf");
44 return 0;
45 }
46
47 if (argc==2 && strcmp(argv[1], "smbglobalreset")==0)
48 {
49 safe_system("/bin/cat /var/ipfire/samba/global.default /var/ipfire/samba/shares > /var/ipfire/samba/smb.conf");
50 return 0;
51 }
52
53 if (argc==2 && strcmp(argv[1], "smbsharesreset")==0)
54 {
55 safe_system("/bin/cat /var/ipfire/samba/global /var/ipfire/samba/shares.default > /var/ipfire/samba/smb.conf");
56 return 0;
57 }
58
59 if (argc==2 && strcmp(argv[1], "smbrestart")==0)
60 {
61 return 0;
62 }
63
64 if (argc==2 && strcmp(argv[1], "smbstop")==0)
65 {
66 return 0;
67 }
68
69 if (argc==2 && strcmp(argv[1], "smbstart")==0)
70 {
71 return 0;
72 }
73
74 if (argc==2 && strcmp(argv[1], "smbuseradd")==0)
75 {
76 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]);
77 safe_system(commandstring);
78 snprintf(commandstring,STRING_SIZE-1,"/bin/printf '%s\n%s\n' | /usr/local/bin/smbpasswd -as %s",argv[3],argv[3],argv[2]);
79 safe_system(commandstring);
80 return 0;
81 }
82
83 if (argc==2 && strcmp(argv[1], "smbchangepw")==0)
84 {
85 snprintf(commandstring,STRING_SIZE-1,"/bin/printf '%s\n%s\n' | /usr/local/bin/smbpasswd -as %s",argv[3],argv[3],argv[2]);
86 safe_system(commandstring);
87 return 0;
88 }
89
90 if (argc==2 && strcmp(argv[1], "readsmbpasswd")==0)
91 {
92 safe_system("/bin/chown root:nobody /var/ipfire/samba/private");
93 safe_system("/bin/chown root:nobody /var/ipfire/samba/private/smbpasswd");
94 safe_system("/bin/chmod 640 /var/ipfire/samba/private/smbpasswd");
95 safe_system("/bin/chmod 650 /var/ipfire/samba/private");
96 return 0;
97 }
98
99 if (argc==2 && strcmp(argv[1], "locksmbpasswd")==0)
100 {
101 safe_system("/bin/chown root:root /var/ipfire/samba/private");
102 safe_system("/bin/chown root:root /var/ipfire/samba/private/smbpasswd");
103 safe_system("/bin/chmod 600 /var/ipfire/samba/private/smbpasswd");
104 safe_system("/bin/chmod 600 /var/ipfire/samba/private");
105 return 0;
106 }
107 }