Forum: PC-Programmierung Benutzerwechsel innerhalb eines Shellskripts


von t800 (Gast)


Lesenswert?

Morgen.

Ich habe ein Shellskript, dass aus zwei Teilen bestehen soll
1
#!/bin/bash
2
3
sudo .-.-.-.
4
sudo .-.-.-.
5
6
su NUTZER
7
8
.-.-.-.
9
.-.-.-.

Im ersten Teil wird als root gearbeitet, im zweiten Teil sollen nur ein 
paar Kopiervorgänge auf der Userebene erfolgen.

In der Shell kann ich über su NUTZER oder exit vom root in den 
user-Modus wechseln. Im Shellskript klappt das aber nicht. Alles nach 
dem su NAME bleibt unbearbeitet. Weiß jemand wieso?

von Peter II (Gast)


Lesenswert?

t800 schrieb:
> Weiß jemand wieso?

weil sudo eine neue Shell aufmacht. Unter Linux ist nicht vorgesehen das 
ein Prozess seine UserId wechselt.

du musst ein zweites Scipt mit sudo starten (oder das gleiche script mit 
einem andere Parameter)

von Skippy (Gast)


Lesenswert?

probier doch mal sowas

su - -c "deine befehle und deren parameter" userDenDuMoechtest

von Rolf M. (rmagnus)


Lesenswert?

Peter II schrieb:
> Unter Linux ist nicht vorgesehen das ein Prozess seine UserId wechselt.

Doch, natürlich ist das vorgesehen, aber in der Regel eher anders rum. 
Man startet den Prozess als root, und der wechselt dann nachher temporär 
oder dauerhaft zu einem anderen User.

von (prx) A. K. (prx)


Lesenswert?

1
echo Hallo 1
2
id
3
su - ak <<EOF
4
echo Hallo 2
5
id
6
EOF

: Bearbeitet durch User
von t800 (Gast)


Lesenswert?

Rolf Magnus schrieb:

>Man startet den Prozess als root, und der wechselt dann nachher temporär
>oder dauerhaft zu einem anderen User.

War ja bei mir der Fall. Im ersten Abschnitt soll Software als root 
installiert werden und dann einzelne configs in das Homeverzeichnis, wie 
etwa ~/.vimrc oder eine geänderte ~/.bashrc.

Hab das aber jetzt mit der Zweiscriptlösung gemacht.

A. K. schrieb:

>su - ak <<EOF

Hab gerade mal die Manpage für switch-user aufgerufen, aber da steht 
nichts von diesen Optionen -ak. Was bewirken die?

von (prx) A. K. (prx)


Lesenswert?

t800 schrieb:
>>su - ak <<EOF
>
> Hab gerade mal die Manpage für switch-user aufgerufen, aber da steht
> nichts von diesen Optionen -ak. Was bewirken die?

Das gleiche wie die Optionen "u", "s", "e" und "r". ;-)
Man darf bei all denen sogar das "- " davor weglassen.

: Bearbeitet durch User
von t800 (Gast)


Lesenswert?

lol

von imonbln (Gast)


Lesenswert?

t800 schrieb:
> installiert werden und dann einzelne configs in das Homeverzeichnis, wie
> etwa ~/.vimrc oder eine geänderte ~/.bashrc.

Und warum muss du dann in den user kontext switchen? Du kannst die 
Dateien doch als root Kopieren und dann mit "chown user:group" den 
"neuen" besitzer zuweisen.

von t800 (Gast)


Lesenswert?

imonbln schrieb:

>Du kannst die
>Dateien doch als root Kopieren und dann mit "chown user:group" den
>"neuen" besitzer zuweisen.

Der user-switch wäre eine Zeile. Die beiden configs waren nur ein 
Beispiel. Insgesamt sind es einige mehr. Dann für jede einmal chown ..., 
da wäre mir ein einmaliges switch lieber.

von Christopher B. (chrimbo) Benutzerseite


Lesenswert?

t800 schrieb:
> Der user-switch wäre eine Zeile. Die beiden configs waren nur ein
> Beispiel. Insgesamt sind es einige mehr. Dann für jede einmal chown ...,
> da wäre mir ein einmaliges switch lieber.

1. Ich kann mich irren, aber nimmt chown nicht eine Liste von Dateien 
an?
2. Wenn es mehrere Dateien sind, dann sind die ja bestimmt in einem 
Ordner? Also kannst du bei chown die r Option benutzen um rekursiv alle 
Unterdateien in einem Ordner zu ändern.

: Bearbeitet durch User
von Kommandozeile vor dem Frühstück für Alle! (Gast)


Lesenswert?

Christopher B. schrieb:
> t800 schrieb:
>> Der user-switch wäre eine Zeile. Die beiden configs waren nur ein
>> Beispiel. Insgesamt sind es einige mehr. Dann für jede einmal chown ...,
>> da wäre mir ein einmaliges switch lieber.
>
> 1. Ich kann mich irren, aber nimmt chown nicht eine Liste von Dateien
> an?
> 2. Wenn es mehrere Dateien sind, dann sind die ja bestimmt in einem
> Ordner? Also kannst du bei chown die r Option benutzen um rekursiv alle
> Unterdateien in einem Ordner zu ändern.

Wildcards/Globbing hilft meistens auch, um mit 1..2 Ausdrücke genau die 
betroffenen Dateien zu nennen.

Dann gibt's noch den Befehl install um kopieren, Eigentum&Rechte 
setzen in einem zu erledigen.

von (prx) A. K. (prx)


Lesenswert?

Man kann das auch über die beliebig komplexen Suchkriterien von "find" 
eingrenzen:
  find . -user test | xargs chown user.group

von t800 (Gast)


Lesenswert?

Das ist alles richtig.

Auch wenn chown eine Liste in Form der Dateinamen annimmt, würde es in 
keinem Verhältnis stehen. Es sind etwa 25 Files und die nochmal alle 
tippen, nö danke.

Aber wie gesagt, habe es mittlerweile in zwei Scripts laufen und gut 
ist.

Kommandozeile vor dem Frühstück für Alle! schrieb:

>Dann gibt's noch den Befehl install um kopieren, Eigentum&Rechte
>setzen in einem zu erledigen.

Sehr interessant, sehe ich mir auf jeden Fall an und wenn es das kann, 
was Du schreibst, bekomme ich doch noch meine Einscriptlösung

von t800 (Gast)


Lesenswert?

Achso, da waren ja noch Hinweise auf die Mögl. reg. Ausdrücke 
einzusetzen. Mal sehen, aber hier muss ich mich erst Einlesen.

von imonbln (Gast)


Lesenswert?

t800 schrieb:
> Auch wenn chown eine Liste in Form der Dateinamen annimmt, würde es in
> keinem Verhältnis stehen. Es sind etwa 25 Files und die nochmal alle
> tippen, nö danke.

achso zwei fragil aufeinander abgestimmte Scripte sind so viel besser 
als eine liste mit 25 Eintragen zu erzeugen und die an zwei stellen 
zunutzen?

Ich bin auch gerne faul und dass sollte jeder Techniker sein, aber ich 
wuerde lieber 2 * 25 Datein tippen als mir ein Konstrukt mit mehren 
shellscripten zu schaffen, die nur um Benutzer Datein in Ihren HOME zu 
packen. Spaetestens nach ein paar Jahren wenn Datei 26 dazu kommt wirst 
Du oder dein Kollege vergessen das beide Scripte angefasst werden 
muessen und dann, holt Dich deine Zeitersparnis von jetzt wieder ein.

Der weg mit install ist wahrscheinlich noch schoener, ich kann wuerde 
dir raten den zunehmen.

von Kommandozeile vor dem Frühstück für Alle! (Gast)


Lesenswert?

t800 schrieb:
> Achso, da waren ja noch Hinweise auf die Mögl. reg. Ausdrücke
> einzusetzen. Mal sehen, aber hier muss ich mich erst Einlesen.

Nein, keine REs. Nur Wildcards/Globbing.

Deinem Ton nach kommen REs erst in 15 Lektionen.

von Kommandozeile vor dem Frühstück für Alle! (Gast)


Lesenswert?

t800 schrieb:
> Das ist alles richtig.
>
> Auch wenn chown eine Liste in Form der Dateinamen annimmt, würde es in
> keinem Verhältnis stehen. Es sind etwa 25 Files und die nochmal alle
> tippen, nö danke.
>
> Aber wie gesagt, habe es mittlerweile in zwei Scripts laufen und gut
> ist.

Doppelt selber schuld.

1. Im Editor deiner Wahl ist es sicher kein Umstand eine bescheidene 
Liste von 25 Namen/Zeilen/Dinger zu duplizieren (kein Aufwand aber SEHR 
schlechte Herangehensweise)
PS: auch auf der Befehlszeile ist's dank Historie, notfalls 
tab-completion KEIN Aufwand.

2. Zwei Scripts schreiben können wollen, aber deren 
Kopplung/Gemeinsamkeiten unüberlegt vom Himmel gefallen liegen lassen?

-  -  -

Dass (Dateinamen-)Listen ganz einfach einer Variable zugewiesen und 
damit in Schleifenkonstrukte abgearbeitet werden können, käme Dir nicht 
in den Sinn?

Dass ein einziger Script, z.b. per Parameter, mal einen (ersten) Teil an 
Arbeit, mal einen anderen (zweiten) Teil an Arbeit mit derselben 
(Dateien-)Liste erledigen könnte, ist f. Dich wohl bestand von 
EndeDerVernunft, nicht von ElektronischerDatenVerarbeitun, gell?


Tipp: mach mal Upgrade t800 --> Toshiba T1100, der hat immerhin 4.77MHz 
Systemtakt...

von t800 (Gast)


Lesenswert?

@ Kommandozeile vor dem Frühstück für Alle!

Du schreibst viel, Du gehst von falschen Prämissen aus und ziehst zudem 
in  mehrfacher Hinsicht schlichtweg falsche Schlüsse. Rechtschreibfehler 
und grammatikalische Absonderlichkeiten runden den Gesamteindruck dann 
vollends ab.

Off topic noch soviel zu Deinem Post... Du denkst bei dem Kürzel t800 an 
einen Taschenrechner?!

https://www.google.de/?hl=de&q=t800

von Kommandozeile vor dem Frühstück für Alle! (Gast)


Lesenswert?

> gehst von falschen Prämissen aus
Von nicht dargelegten Prämissen aus.

> Rechtschreibfehler
> und grammatikalische Absonderlichkeiten runden den Gesamteindruck dann
> vollends ab.
Ist das Forum nun nur noch für D-Muttersprachler, wie?
Bring nochmal den Satz mit den Prämissen.

> Du denkst bei dem Kürzel t800 an
> einen Taschenrechner?!
Nein, an ein Nudelsieb wo flüssiges Metall durchrinnt.
Prämissen sag ich da nur...

> https://www.google.de/?hl=de&q=t800
Dieser Verweis öffnet mir zwar die Google Startseite, jedoch ohne Suche 
und ohne Ergebnisse.
Bleibe du also bei Deutsch und grammar nati , denn Prämissen f. EDV 
bringst erwiesenermassen ja ungenügende mit.

von t800 (Gast)


Lesenswert?

Cholerisch hatte ich noch vergessen, Danke das Du mich darauf aufmerksam 
gemacht hast.

Einen schönen Tag zusammen mit Deinen Mitmenschen, mein Freund und KUAZ

von Kommandozeile vor dem Frühstück für Alle! (Gast)


Lesenswert?

t800 schrieb:

q.e.d.

von t800 (Gast)


Lesenswert?

et vice versa

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.