ubuntuusers.de

Computer_nach_dem_Neustart_zurücksetzen

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels Computer_nach_dem_Neustart_zurücksetzen.

kaputtnik

Anmeldungsdatum:
31. Dezember 2007

Beiträge: 9245

I-Punkt schrieb:

Bei mir funktioniert es zumindest jetzt so. Werde es mal im Wiki ändern....

Gut,danke ☺

Gruß
kaputtnik

frustschieber Team-Icon

Ehemalige
Avatar von frustschieber

Anmeldungsdatum:
4. Januar 2007

Beiträge: 4259

Artikel sollte eigentlich (bis auf die Pfade) versionsunabhängig sein

aasche

Anmeldungsdatum:
30. Januar 2006

Beiträge: 14259

frustschieber schrieb:

Artikel sollte eigentlich (bis auf die Pfade) versionsunabhängig sein

Da die Pfade hier nur als Beispiel dienen, ist er versionsunabhaengig.

mniess

Anmeldungsdatum:
17. Oktober 2005

Beiträge: 366

Wohnort: Hamburg

Moin,

ich würde diesen Artikel gern neu schreiben. Der Nachteil in der hier vorgestellten Lösung ist, dass relativ viel Kopier- und Löscharbeit beim Start und Logout erledigt wird. Zudem muss für jede Profilanpassung extra das Löschen deaktiviert werden und das bearbeitete Profil in den default Ordner kopiert werden.

Mein Vorschlag: Ich würde ein aufs Union-Dateisystem über dem regulären Home-Ordner mounten (in der fstab festgelegt). Dieses würde ich dann (um jede Manipulation auszuschliessen) beim Rechner-Start (/etc/rc.local), beim Login und beim Logout löschen. Das verursacht in meinen Tests keine merkliche Zeitverzögerung.

Will man das Default-Profil nun anpassen, reicht ein kurzes sudo umount /home/kinder. Damit liegt das echte Home-Verzeichnis wieder manipulierbar frei. Ist man mit seinen Änderungen durch mountet man einfach wieder mit sudo mount /home/kinder (oder startet neu).

Hier als Beispiel mal ein Skript mit dem man einen Nutzer kiosk derart absichern würde:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/sh
# the username to protect
USERNAME="kiosk"
# disable hardlink restrictions
echo "kernel.yama.protected_nonaccess_hardlinks=0" | sudo tee /etc/sysctl.d/60-hardlink-restrictions-disabled.conf
# create directory to store aufs data in
sudo install -d -o $USERNAME -g $USERNAME /home/.${USERNAME}_rw
# set up the mount
echo "none /home/${USERNAME} aufs br:/home/.${USERNAME}_rw:/home/${USERNAME} 0 0" | sudo tee -a /etc/fstab

# create lightdm settings to run our cleanup script, disable guests and enable manual login (for uids < 1000)
sudo tee /etc/lightdm/lightdm.conf > /dev/null <<-EOFA
	[SeatDefaults]
	user-session=ubuntu
	greeter-session=unity-greeter
	allow-guest=false
	greeter-show-manual-login=true
	greeter-setup-script=/usr/local/bin/cleanup.sh login
	session-cleanup-script=/usr/local/bin/cleanup.sh logout
EOFA

# change rc.local to run cleanup script
sudo tee /etc/rc.local > /dev/null <<-EOFB
	#!/bin/sh -e
	/usr/local/bin/cleanup.sh \$0
	exit 0
EOFB

# cleanup script to clear aufs filesystem
sudo tee /usr/local/bin/cleanup.sh > /dev/null <<-\$EOFC
	#!/bin/sh
	# only run when aufs is mounted
	test -n `mount -l -t aufs` || exit 0;

	# delete function to clear out aufs with exceptions
	delete (){
	  # find arguments to exclude aufs objects
	  no_aufs="! -name '.wh*'"
	  # extra find arguments
	  more="$1"
	  #securely delete
	  cd /home/.kiosk_rw && find . -maxdepth 1 -mindepth 1 $no_aufs $more -print0|xargs -0 rm -rf
	}

	case "$1" in
	  login)
	    test $LOGNAME = "kiosk" && delete "! -name .pulse"
	    ;;
	  logout)
	    # delete with delay
	    test $LOGNAME = "kiosk" && (sleep 3; delete "! -name .pulse") &
	    ;;
	  /etc/rc.local)
	    delete
	    ;;
	  *)
	    ;;
	esac
	exit 0
$EOFC
# set correct username in cleanup.sh
sed -i "s/kiosk/$USERNAME/g" /usr/local/bin/cleanup.sh
sudo chmod 754 /usr/local/bin/cleanup.sh

Dieses Skript setzt jetzt voll auf Ubuntu 12.04 und lightdm. Im Artikel würde ich es auch für GDM erläutern, so dass der Artikel auch für ältere Versionen von Ubuntu gültig bleibt. Der grosse Unterschied dieser Lösung ist das aufs, welches bei allen noch supporteten Ubuntu-Versionen dabei ist und soweit ich weiss seit der ersten Ubuntu-Live-CD eingesetzt wird. Der versionsspezifische Part ist der Login-Manager. Zu GDM und LightDM kann ich da was schreiben (auch mehr als im jetzigen Artikel). Zu KDM würde ich dann andere bitten, was zu schreiben.

Einwände?

frustschieber Team-Icon

Ehemalige
Avatar von frustschieber

Anmeldungsdatum:
4. Januar 2007

Beiträge: 4259

Baustelle eingerichtet, ggf Datum geplanter Fertigstellung anpassen bitte.

mniess

Anmeldungsdatum:
17. Oktober 2005

Beiträge: 366

Wohnort: Hamburg

Danke! Dann mach ich mich mal ran 😉

aasche

Anmeldungsdatum:
30. Januar 2006

Beiträge: 14259

mniess schrieb:

ich würde diesen Artikel gern neu schreiben.

Dann richte Dir eine neue Baustelle ein - ausser dem zugrundeliegenden Thema kann ich zwischen dem vorhandenen Artikel und Deinem Vorschlag wenig Gemeinsamkeiten ausmachen, die eine Ueberarbeitung rechtfertigen.

Ueber den bisherigen Artikelnamen "Computer nach dem Neustart zurücksetzen" muss dann nochmal nachgedacht werden. Es handelt sich ja eher um ein Oberthema, dass auf verschiedenen Wegen erreicht werden kann.

frustschieber schrieb:

Baustelle eingerichtet, ggf Datum geplanter Fertigstellung anpassen bitte.

Baustelle wieder aufgeloest.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

aasche +1 - ein neuer Artikel macht mehr Sinn. Technisch ist die Lösung von mniess ja ganz anders. Und einen eigenen Artikel wert. ☺

Gruß, noisefloor

nimra98

Anmeldungsdatum:
31. Mai 2013

Beiträge: Zähle...

Ich würde hier dieses selbst geschrieben Script beisteuern können:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/bin/sh
### BEGIN INIT INFO
# Provides: Home-Dir-Resetter
# Required-Start: $syslog $remote_fs
# Required-Stop: $syslog $remote_fs
# Default-Start: 2
# Default-Stop:
# Description: Reset home direction after boot ©-2013 by Armin Jacob & Anton Bracke
### END INIT INFO
 
### BEGIN INIT TODO ADJUST
USER=student
TMPDIR=/home/.saves
### END INIT TODO ADJUST
 
case "$1" in
     start)
         if[ -d $TMPDIR$USER]
         then
         sudo rm -r -f /home/$USER
         sudo cp -a -r -f $TMPDIR/$USER /home/
         sudo chown -R $USER:users /home/$USER
         sudo rm -r -f /tmp/*
         echo "The user-home-dir from $USER is now resetted!"
         else
         echo "$TMPDIR$USER does not exist! For safety reasons, the script has not been executed!"
         fi
         ;;
     save)
         if[ -d $TMPDIR$USER]
         then
         sudo rm -r $TMPDIR/$USER
         fi
         sudo mkdir -p $TMPDIR/$USER
         sudo cp -r -f /home/$USER /home/.saves
         if[ -d $TMPDIR$USER]
         then
         echo "The user-home-dir from $USER was saved!"
         else
         echo "Unfortunately, the backup operation was unsuccessful. Please repeat the command!"
         fi
         ;;
      *)
         echo "Usage: $0 {start|save}"
         exit 1
         ;;
esac
exit 0

aasche

Anmeldungsdatum:
30. Januar 2006

Beiträge: 14259

nimra98 schrieb:

Ich würde hier dieses selbst geschrieben Script beisteuern können

Schoene Idee ☺ Aber die Lizenz passt nicht: bitte entweder GPL oder CC. Dann kann es gerne in den Artikel aufgenommen werden.

nimra98

Anmeldungsdatum:
31. Mai 2013

Beiträge: 3

Wäre dass dann so in Ordnung? Email würden wir ungern eintragen, da dass Ganze recht selbsterklärend ist.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/bin/sh
### BEGIN INIT INFO
# Provides: Home-Dir-Resetter
# Required-Start: $syslog $remote_fs
# Required-Stop: $syslog $remote_fs
# Default-Start: 2
# Default-Stop:
# Description: Reset home direction of a user after boot written by Armin Jacob & Anton Bracke
# License: This script is licensed under GNU GPL.
### END INIT INFO
 
### BEGIN INIT TODO ADJUST
USER=student
TMPDIR=/home/.saves
### END INIT TODO ADJUST
 
case "$1" in
     start)
         if[ -d $TMPDIR$USER]
         then
         sudo rm -r -f /home/$USER
         sudo cp -a -r -f $TMPDIR/$USER /home/
         sudo chown -R $USER:users /home/$USER
         sudo rm -r -f /tmp/*
         echo "The user-home-dir from $USER is now resetted!"
         else
         echo "$TMPDIR$USER does not exist! For safety reasons, the script has not been executed!"
         fi
         ;;
     save)
         if[ -d $TMPDIR$USER]
         then
         sudo rm -r $TMPDIR/$USER
         fi
         sudo mkdir -p $TMPDIR/$USER
         sudo cp -r -f /home/$USER /home/.saves
         if[ -d $TMPDIR$USER]
         then
         echo "The user-home-dir from $USER was saved!"
         else
         echo "Unfortunately, the backup operation was unsuccessful. Please repeat the command!"
         fi
         ;;
      *)
         echo "Usage: $0 {start|save}"
         exit 1
         ;;
esac
exit 0

aasche

Anmeldungsdatum:
30. Januar 2006

Beiträge: 14259

nimra98 schrieb:

Wäre dass dann so in Ordnung?

Ja. Nuetzlich waere neben dem Skript selbst eine kleine Anleitung, wie man es praktisch nutzen kann.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

habe das getestet-Tag entfernt. Der Artikel müsste mal (dringend?) überprüft werden für ein aktuelles *ubuntu. Das ist IMHO teilweise veraltet. Spätestens ab da, wo von etc/rc.local die Rede ist wird klar, dass das alles ziemlich alt ist. Und die Unity und GNOME 2 Screenshots versprühen auch nicht gerade Aktualität...

@Wikiteam: diesen Artikel dann NICHT Ende Januar archivieren.

Gruß, noisefloor

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6494

warum dann nicht ungetestet? Gruß BillMaier

wer lesen kann ist klar im Vorteil. Hab die Box übersehen, das neue Design ...

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11325

Wohnort: Bremen

Hi!

noisefloor schrieb:

@Wikiteam: diesen Artikel dann NICHT Ende Januar archivieren.

Was ist der Grund? Habe ich etwas übersehen/-lesen? Wen es niemand testet, dann wüsste ich nicht, warum er nicht archiviert werden sollte.

so long
hank