1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-24 21:34:56 +03:00

a few more things compile.

I'll do the rest tomorrow.
This commit is contained in:
Andrew Tridgell 0001-01-01 00:00:00 +00:00
parent 3ecfd271de
commit b92ce41c54
4 changed files with 199 additions and 51 deletions

View File

@ -117,10 +117,10 @@ LOCKING_OBJ = locking/locking.o locking/locking_shm.o locking/locking_slow.o \
locking/shmem.o locking/shmem_sysv.o
PASSDB_OBJ = passdb/passdb.o passdb/smbpassfile.o passdb/username.o \
passdb/smbpass.o passdb/password.o
passdb/smbpass.o
SMBD_OBJ1 = smbd/server.o smbd/access.o smbd/chgpasswd.o smbd/connection.o \
smbd/dfree.o smbd/dir.o \
smbd/dfree.o smbd/dir.o smbd/password.o \
smbd/groupname.o smbd/ipc.o smbd/ldap.o smbd/mangle.o \
smbd/message.o smbd/nispass.o smbd/nttrans.o \
smbd/pipes.o smbd/predict.o \
@ -149,13 +149,24 @@ NMBD_OBJ = $(NMBD_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) \
$(PASSDB_OBJ) $(LIB_OBJ)
SWAT_OBJ = web/cgi.o web/diagnose.o web/startstop.o web/statuspage.o \
web/swat.o $(PASSDB_OBJ) $(LIBSMB_OBJ) $(LOCKING_OBJ) \
web/swat.o \
smbd/password.o \
$(PASSDB_OBJ) $(LIBSMB_OBJ) $(LOCKING_OBJ) \
$(PARAM_OBJ) $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ) \
$(UBIQX_OBJ) $(LIB_OBJ)
PROTO_OBJ = $(SMBD_OBJ1) $(NMBD_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) \
$(RPC_SERVER_OBJ) $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ) \
$(LOCKING_OBJ) $(PASSDB_OBJ) $(SWAT_OBJ) $(LIB_OBJ)
SMBRUN_OBJ = utils/smbrun.o
TESTPARM_OBJ = utils/testparm.o smbd/access.o $(PARAM_OBJ) $(PASSDB_OBJ) \
$(UBIQX_OBJ) $(LIB_OBJ)
TESTPRNS_OBJ = utils/testprns.o $(PARAM_OBJ) $(UBIQX_OBJ) $(PASSDB_OBJ) \
$(LIB_OBJ)
CLIENT_OBJ = client/client.o client/clientutil.o client/clitar.o \
$(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) $(PASSDB_OBJ) $(LIB_OBJ)
PROTO_OBJ = $(SMBD_OBJ) $(NMBD_OBJ) $(SWAT_OBJ) $(CLIENT_OBJ)
######################################################################
# now the rules...
@ -182,18 +193,27 @@ bin/swat: $(SWAT_OBJ)
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(SWAT_OBJ) $(LIBS)
bin/smbrun: utils/smbrun.o
bin/smbrun: $(SMBRUN_OBJ)
@echo Linking $@
@$(CC) $(FLAGS) -o $@ utils/smbrun.o $(LIBS)
@$(CC) $(FLAGS) -o $@ $(SMBRUN_OBJ) $(LIBS)
bin/smbclient: $(CLIENT_OBJ)
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(CLIENT_OBJ) $(LIBS)
bin/testparm: $(TESTPARM_OBJ)
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(TESTPARM_OBJ) $(LIBS)
bin/testprns: $(TESTPRNS_OBJ)
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(TESTPRNS_OBJ) $(LIBS)
nmblookup: $(LOOKUP_OBJ)
@echo Linking nmblookup
@$(CC) $(FLAGS) -o nmblookup $(LOOKUP_OBJ) $(LIBS)
smbclient: $(CLIENT_OBJ)
@echo Linking smbclient
@$(CC) $(FLAGS) -o smbclient $(CLIENT_OBJ) $(LIBS)
smbmount: $(MOUNT_OBJ)
@echo Linking smbmount
@$(CC) $(FLAGS) -o smbmount $(MOUNT_OBJ) $(LIBS)
@ -214,14 +234,6 @@ smbstatus: $(STATUS_OBJ)
@echo Linking smbstatus
@$(CC) $(FLAGS) -o smbstatus $(STATUS_OBJ) $(LIBS)
testparm: testparm.o access.o $(UTILOBJ)
@echo Linking testparm
@$(CC) $(FLAGS) -o testparm testparm.o access.o $(UTILOBJ) $(LIBS)
testprns: testprns.o $(UTILOBJ)
@echo Linking testprns
@$(CC) $(FLAGS) -o testprns testprns.o $(UTILOBJ) $(LIBS)
smbpasswd: smbpasswd.o getsmbpass.o $(PASSDB_OBJ) $(UTILOBJ) $(CLIENTUTIL) $(RPC_CLIENT_SERVER_SUBSET_OBJ) $(RPC_OBJ)
@echo Linking smbpasswd
@$(CC) $(FLAGS) -o smbpasswd smbpasswd.o getsmbpass.o $(PASSDB_OBJ) $(UTILOBJ) $(CLIENTUTIL) \

View File

@ -1,3 +1,7 @@
nmbd
smbclient
smbd
smbrun
swat
testparm
testprns

View File

@ -3,6 +3,46 @@
/* This file is automatically generated with "make proto". DO NOT EDIT */
/*The following definitions come from client/client.c */
void cli_smb_close(char *inbuf, char *outbuf, int clnt_fd, int c_num, int f_num);
void do_dir(char *inbuf,char *outbuf,char *Mask,int attribute,void (*fn)(file_info *),BOOL recurse_dir, BOOL dirstoo);
void cmd_help(char *dum_in, char *dum_out);
/*The following definitions come from client/clientutil.c */
void cli_setup_pkt(char *outbuf);
BOOL cli_call_api(char *pipe_name, int pipe_name_len,
int prcnt,int drcnt, int srcnt,
int mprcnt,int mdrcnt,
int *rprcnt,int *rdrcnt,
char *param,char *data, uint16 *setup,
char **rparam,char **rdata);
BOOL cli_receive_trans_response(char *inbuf,int trans,
int *data_len,int *param_len,
char **data,char **param);
BOOL cli_send_trans_request(char *outbuf,int trans,
char *name,int namelen, int fid,int flags,
char *data,char *param,uint16 *setup,
int ldata,int lparam,int lsetup,
int mdata,int mparam,int msetup);
BOOL cli_send_session_request(char *inbuf,char *outbuf);
BOOL cli_send_login(char *inbuf,char *outbuf,BOOL start_session,BOOL use_setup, struct connection_options *options);
void cli_send_logout(char *dum_in, char *dum_out);
BOOL cli_open_sockets(int port );
BOOL cli_reopen_connection(char *inbuf,char *outbuf);
/*The following definitions come from client/clitar.c */
int padit(char *buf, int bufsize, int padsize);
void cmd_block(char *dum_in, char *dum_out);
void cmd_tarmode(char *dum_in, char *dum_out);
void cmd_setmode(char *dum_in, char *dum_out);
void cmd_tar(char *inbuf, char *outbuf);
int process_tar(char *inbuf, char *outbuf);
int clipfind(char **aret, int ret, char *tok);
int tar_parseargs(int argc, char *argv[], char *Optarg, int Optind);
/*The following definitions come from lib/charcnv.c */
char *unix2dos_format(char *str,BOOL overwrite);
@ -1079,37 +1119,6 @@ uint32 pdb_gid_to_group_rid(gid_t gid);
BOOL pdb_rid_is_well_known(uint32 rid);
BOOL pdb_rid_is_user(uint32 rid);
/*The following definitions come from passdb/password.c */
void generate_next_challenge(char *challenge);
BOOL set_challenge(char *challenge);
BOOL last_challenge(unsigned char *challenge);
user_struct *get_valid_user_struct(uint16 vuid);
void invalidate_vuid(uint16 vuid);
char *validated_username(uint16 vuid);
int setup_groups(char *user, int uid, int gid, int *p_ngroups, GID_T **p_groups);
uint16 register_vuid(int uid,int gid, char *unix_name, char *requested_name, BOOL guest);
void add_session_user(char *user);
BOOL update_smbpassword_file( char *user, fstring password);
void dfs_unlogin(void);
BOOL password_check(char *password);
BOOL smb_password_check(char *password, unsigned char *part_passwd, unsigned char *c8);
BOOL smb_password_ok(struct smb_passwd *smb_pass,
uchar lm_pass[24], uchar nt_pass[24]);
BOOL password_ok(char *user,char *password, int pwlen, struct passwd *pwd);
BOOL user_ok(char *user,int snum);
BOOL authorise_login(int snum,char *user,char *password, int pwlen,
BOOL *guest,BOOL *force,uint16 vuid);
BOOL check_hosts_equiv(char *user);
struct cli_state *server_client(void);
struct cli_state *server_cryptkey(void);
BOOL server_validate(char *user, char *domain,
char *pass, int passlen,
char *ntpass, int ntpasslen);
BOOL domain_client_validate( char *user, char *domain,
char *smb_apasswd, int smb_apasslen,
char *smb_ntpasswd, int smb_ntpasslen);
/*The following definitions come from passdb/smbpass.c */
struct passdb_ops *file_initialize_password_db(void);
@ -1927,6 +1936,37 @@ void remove_pending_change_notify_requests_by_mid(int mid);
void process_pending_change_notify_queue(time_t t);
int reply_nttrans(char *inbuf,char *outbuf,int length,int bufsize);
/*The following definitions come from smbd/password.c */
void generate_next_challenge(char *challenge);
BOOL set_challenge(char *challenge);
BOOL last_challenge(unsigned char *challenge);
user_struct *get_valid_user_struct(uint16 vuid);
void invalidate_vuid(uint16 vuid);
char *validated_username(uint16 vuid);
int setup_groups(char *user, int uid, int gid, int *p_ngroups, GID_T **p_groups);
uint16 register_vuid(int uid,int gid, char *unix_name, char *requested_name, BOOL guest);
void add_session_user(char *user);
BOOL update_smbpassword_file( char *user, fstring password);
void dfs_unlogin(void);
BOOL password_check(char *password);
BOOL smb_password_check(char *password, unsigned char *part_passwd, unsigned char *c8);
BOOL smb_password_ok(struct smb_passwd *smb_pass,
uchar lm_pass[24], uchar nt_pass[24]);
BOOL password_ok(char *user,char *password, int pwlen, struct passwd *pwd);
BOOL user_ok(char *user,int snum);
BOOL authorise_login(int snum,char *user,char *password, int pwlen,
BOOL *guest,BOOL *force,uint16 vuid);
BOOL check_hosts_equiv(char *user);
struct cli_state *server_client(void);
struct cli_state *server_cryptkey(void);
BOOL server_validate(char *user, char *domain,
char *pass, int passlen,
char *ntpass, int ntpasslen);
BOOL domain_client_validate( char *user, char *domain,
char *smb_apasswd, int smb_apasslen,
char *smb_ntpasswd, int smb_ntpasslen);
/*The following definitions come from smbd/pipes.c */
int reply_open_pipe_and_X(char *inbuf,char *outbuf,int length,int bufsize);

92
source/utils/smbrun.c Normal file
View File

@ -0,0 +1,92 @@
/*
Unix SMB/Netbios implementation.
Version 1.9.
external program running routine
Copyright (C) Andrew Tridgell 1992-1998
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include "includes.h"
/*******************************************************************
close the low 3 fd's and open dev/null in their place
********************************************************************/
static void close_fds(void)
{
int fd;
int i;
close(0); close(1); close(2);
/* try and use up these file descriptors, so silly
library routines writing to stdout etc won't cause havoc */
for (i=0;i<3;i++) {
fd = open("/dev/null",O_RDWR,0);
if (fd < 0) fd = open("/dev/null",O_WRONLY,0);
if (fd != i) return;
}
}
/*
This is a wrapper around the system() call to allow commands to run correctly
as non root from a program which is switching between root and non-root
It takes 3 arguments as uid,gid,command and runs command after
becoming a non-root user */
int main(int argc,char *argv[])
{
int uid,gid;
close_fds();
if (argc != 4) exit(2);
uid = atoi(argv[1]);
gid = atoi(argv[2]);
/* first become root - we may need to do this in order to lose
our privilages! */
#ifdef HAVE_SETRESUID
setresgid(0,0,0);
setresuid(0,0,0);
#else
setuid(0);
seteuid(0);
#endif
#ifdef HAVE_SETRESUID
setresgid(gid,gid,gid);
setresuid(uid,uid,uid);
#else
setgid(gid);
setegid(gid);
setuid(uid);
seteuid(uid);
#endif
/* paranoia :-) */
if (getuid() != uid)
return(3);
if (geteuid() != getuid())
return(4);
/* this is to make sure that the system() call doesn't run forever */
alarm(30);
return(system(argv[3]));
}