[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: mehrere shells mit einem login



Janto Trappe schrieb am Sam, Jul 07, 2001  05:23:54 +0200:

> IIRC gab es hier vor laengerer Zeit mal einen Thread in dem ein
> Script gepostet wurde, dass es ermoeglicht mit einem (1) login
> mehrere shells zu starten. Man loggt sich z.B. auf tty1 ein und
> anschliessend ist man auf tty2-8 ebenfalls eingeloggt. Kann sich
> noch jemand daran errinnern? Im Archiv habe ich leider nichts
> gefunden, ein Subject oder so waere also hilfreich.

Hi Janto,

ich glaube, Du meinst das hier?

<Zitat>

Date: Mon, 22 Jan 2001 20:44:06 +0100
From: Mathias Gygax <mg@trash.net>
To: debian-user-de@lehmanns.de
Organization: ENIAC
Subject: Re: Start-Script


> Gibt es eine Möglichkeit, ein Script zu schreiben, welches automatisch
  beim
> Starten von Linux sechs Konsolen öffnet, damit man nicht von Hand überall
> Loginname und Passwort eingeben muß? Ideal wäre noch, wenn man den
> Benuzternamen im Script jeweils angeben könnte.

ja. da es nur ein rel. kurzes c programm ist, poste ich es mal. sorry
schon mal an alle die, die sich jetzt wegen der grösse aufregen :-/

--[snippelsnappel]--

/*
 * utty.c Fri Jun 23 14:12:24 GMT 2000 Herbert Rosmanith
 *                                     herp@wildsau.idv.uni-linz.ac.at
 *
 * bringt eine login shell auf einem tty, ohne dass man sich
 * anmelden muss
 *
 * compile: cc -s -o utty utty.c
 *
 * Usage: utty <user> <tty>
 *
 * der geeignetste platz fuer dieses programm ist die inittab,
 * etwa so:
 *
 * /etc/inittab
 * [...]
 * t6:23:respawn:/sbin/utty herp /dev/tty6
 * t7:23:respawn:/sbin/utty herp /dev/tty7
 * t8:23:respawn:/sbin/utty herp /dev/tty8
 * t9:23:respawn:/sbin/utty herp /dev/tty9
 * ta:23:respawn:/sbin/utty herp /dev/tty10
 * tb:23:respawn:/sbin/utty herp /dev/tty11
 * tc:23:respawn:/sbin/utty herp /dev/tty12
 * [...]
 * # End of /etc/inittab
 */
 
#include        <stdio.h>
#include        <sys/types.h>
#include        <sys/ioctl.h>
#include        <sys/stat.h>
#include        <string.h>
#include        <pwd.h>
#include        <grp.h>
#include        <fcntl.h>
#include        <unistd.h>
#include        <errno.h>

void die(char *s) {
        if (errno) perror(s);
        else fprintf(stderr,"%s\n",s);
        exit(-1);
}

int main(int argc,char *argv[]) {
struct passwd *pwd;
struct group *gr;
char *args[2] = { "-bash", NULL };
char *envp[3]={ "TERM=vt100", NULL, NULL };
char msg[]="\nYou are now on \0\0\0\0\0\0\0\0\0\0\0\0";
char *ch;
int fd;
int i=1;
 int main(int argc,char *argv[]) {
struct passwd *pwd;
struct group *gr;
char *args[2] = { "-bash", NULL };
char *envp[3]={ "TERM=vt100", NULL, NULL };
char msg[]="\nYou are now on \0\0\0\0\0\0\0\0\0\0\0\0";
char *ch;
int fd;
int i=1;

        if (argc!=3) die("usage: utty <user> <tty>");
        if ((pwd=getpwnam(argv[1]))==NULL) die("user unknown");
        if ((gr=getgrnam("tty"))==NULL) die("group 'tty' unknown");
        close(0);
        close(1);
        close(2);
        if ((fd=open(argv[2],O_RDWR))!=0) die("open");
        if (dup2(0,1)!=1) die("dup2 1");
        if (dup2(0,2)!=2) die("dup2 2");
        if (ioctl(fd,TIOCSCTTY,&i)==-1) die("ioctl TIOCSCTTY");
        if (fchown(fd,pwd->pw_uid,gr->gr_gid)==-1) die("fchown");
        if (fchmod(fd,0620)==-1) die("fchmod");
        strcat(msg,(ch=rindex(argv[2],'/'))?ch+1:argv[2]);
        write(fd,msg,strlen(msg));
        envp[1]=(char *)malloc(5+/*HOME=*/strlen(pwd->pw_dir)+1);
        sprintf(envp[1],"HOME=%s",pwd->pw_dir);
        chdir(pwd->pw_dir);
        setgid(pwd->pw_gid);
        setuid(pwd->pw_uid);
        execve("/bin/bash",args,envp);
        die("execve");

--[snippelsnappel]--

</Zitat>

Gruß und viel Erfolg beim basteln,

-- 
Matthias Haehn   <you@pfaffenwinkel.de>.

-- 
-----------------------------------------------------------
Um sich aus der Liste auszutragen schicken Sie bitte eine
E-Mail an debian-user-de-request@lehmanns.de die im Subject
"unsubscribe <deine_email_adresse>" enthaelt.
Bei Problemen bitte eine Mail an: Jan.Otto@Lehmanns.de
-----------------------------------------------------------

850 eingetragene Mitglieder in dieser Liste.


Reply to: