Hi,
ich bin auf der Suche nach Funktion, mit der man das Home-Verzeichnis eines Benutzes herraus finden kann.
cu,
Tobias
C und User
C und User
dude i'm pretty damn sure you could script somebody back to life
Re: C und User
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
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
Re: C und User
<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.
Re: C und User
Und was ist wenn $HOME nicht gesetzt ist oder falsch gesetzt ist (unwahrscheinlich ich weiß, aber dennoch möglich).
Re: C und User
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
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
Re: C und User
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
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