Re: mount
On Tue, 19 Mar 2002 17:09:16 -0300
Armando <armando@hadrion.com.br> wrote:
> strcpy(exec,PATH);
> strcat(exec," -t smbfs ");
> strcat(exec,argv[1]);
> strcat(exec," ");
> strcat(exec,argv[2]);
> strcat(exec," -o username=");
> strcat(exec,argv[3]);
> if (strlen(exec) > sizeof(exec)){
heh, se essa condição for verdadeira o programa já segfaultou =D
alocação dinâmica seria melhor...
com a minha versão você pode usar o mount como quiser...
(claro que isso é ruim no caso de você querer que apenas
filesystems smbfs sejam montados pelo usuário, mas é muito
fácil alterar....)
a vantagem é que você pode passar quantos argumentos quiser
que o mount aceite e de qualquer tamanho... de qualquer forma,
usando o meu programa é melhor dar setuid pro mount duma vez =D:
#include <stdio.h>
#include <string.h>
#define PATH "/bin/mount"
int main(int argc, char *argv[]){
int uid, gid;
int i;
char **exec;
exec = (char**) malloc (sizeof (char*) * 2);
exec[0] = strdup (PATH);
exec[1] = NULL;
for (i = 1 ; i < argc ; i++)
{
exec = (char**) realloc (exec, sizeof (exec) + sizeof (char*));
exec[i] = strdup (argv[i]);
exec[i+1] = NULL;
}
uid=getuid();
gid=getgid();
setuid(0);
setgid(0);
execv (exec[0], exec);
setuid(uid);
setgid(gid);
return(0);
}
exemplo:
[~/prg]
[kov]@[couve] $ ls /hda6
[~/prg]
[kov]@[couve] $ ./mymnt /dev/hda6 /hda6
[~/prg]
[kov]@[couve] $ ls /hda6
media/ www/
[~/prg]
[kov]@[couve] $
[~/prg]
[kov]@[couve] $ ls -l mymnt
-rwsrwsr-x 1 root root 5676 Mar 19 20:08 mymnt*
note que o programa tem memory leaks que não são importantes e que,
devido a não ser totalmente testado pode segfaultar =D
se quiser uma versão que só monte smbfs avise
e viva o software livre =D
[]s!
--
kov@debian.org: Gustavo Noronha <http://www.metainfo.org/kov>
Debian: <http://www.debian.org> * <http://debian-br.cipsga.org.br>
Reply to:
- References:
- RE: mount
- From: Armando <armando@hadrion.com.br>