C und User

Post Reply
Message
Author
tkortkamp
Posts: 143
Joined: 08. Apr 2001 22:56
Location: Bremen

C und User

#1 Post by tkortkamp »

Hi,
ich bin auf der Suche nach Funktion, mit der man das Home-Verzeichnis eines Benutzes herraus finden kann.
cu,
Tobias
dude i'm pretty damn sure you could script somebody back to life

tkortkamp
Posts: 143
Joined: 08. Apr 2001 22:56
Location: Bremen

Re: C und User

#2 Post by tkortkamp »

Hi!
Upps, habe das erste Mal nicht richtig in die Info-Seite der glibc geguckt. Wenn es interesst hier der Code:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#include <grp.h>
#include <pwd.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>


int main (int argc, char *argv[])
{
uid_t me;
struct passwd *my_passwd;

/* Hole Information über User. */
me = getuid ();
my_passwd = getpwuid (me);
if (!my_passwd)
{
printf ("Couldn't find out about user %d.
", (int) me);
exit (EXIT_FAILURE);
}

/* Ausgeben der Informationen. */
printf ("Heimatverzeichnis des Users %s.
", my_passwd->pw_dir);
return 0;
}
</font><hr></pre></blockquote>

cu,
Tobias
dude i'm pretty damn sure you could script somebody back to life

tkortkamp
Posts: 143
Joined: 08. Apr 2001 22:56
Location: Bremen

Re: C und User

#3 Post by tkortkamp »

<img src="http://www.pl-forum.de/UltraBoard/Images/Sad.gif" border="0" align="middle"> doppelte Nachricht
Last edited by tkortkamp on 08. May 2001 15:57, edited 1 time in total.

Weissi

Re: C und User

#4 Post by Weissi »

wie wärs mit getenv("$HOME");?

tkortkamp
Posts: 143
Joined: 08. Apr 2001 22:56
Location: Bremen

Re: C und User

#5 Post by tkortkamp »

Und was ist wenn $HOME nicht gesetzt ist oder falsch gesetzt ist (unwahrscheinlich ich weiß, aber dennoch möglich).

Weissi

Re: C und User

#6 Post by Weissi »

Dann gibbst du ne Fehlermeldund, dass er bitte $HOME setzen sollte (kannst ja für die (ba)sh unkundigen noch n Beispiel nachlegen) ;)

PS: Ich habs auch mal so gemacht, das funzt, und das machen andere Programme ja auch so.

PS2: Ich denke $HOME wird immer gesetzt sein, und falls es anders als normal gesetzt ist, wir das einer gemacht haben, der weiss was er tut ;)

tkortkamp
Posts: 143
Joined: 08. Apr 2001 22:56
Location: Bremen

Re: C und User

#7 Post by tkortkamp »

Damit kann übrigens auch nicht nur das Heimatverzeichnis sondern auch den Namen, die Standard-Shell, die Gruppe, die Gruppenmitglieder und die UID herrausfinden.
Einfach das hier zu obigem Code hinzufügen:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
/* Print the information. */
printf ("Ich bin %s.
", my_passwd->pw_gecos);
printf ("Benutzername: %s.
", my_passwd->pw_name);
printf ("Meine UID ist %d.
", (int) (my_passwd->pw_uid));
printf ("Meine Shell ist %s.
", my_passwd->pw_shell);
/* Infos über Gruppe*/
my_group = getgrgid (my_passwd->pw_gid);
if (!my_group)
{
printf ("Konnte nicht über die Gruppe finden %d.
",
(int) my_passwd->pw_gid);
exit (EXIT_FAILURE);
}

printf ("Meine Gruppe ist %s (%d).
", my_group->gr_name, (int) (my_passwd->pw_gid));
printf ("Die Mitglieder dieser Gruppe sind:
");
members = my_group->gr_mem;
while (*members)
{ printf (" %s
", *(members)); members++; }
</font><hr></pre></blockquote>
Diese Methode ist also besser, wenn man viel über den Benutzer finden möchte. <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

cu,
Tobias
Last edited by tkortkamp on 14. May 2001 14:03, edited 1 time in total.
dude i'm pretty damn sure you could script somebody back to life

Post Reply