Wie entferne ich eine Datei in / etc, wenn rc.sysinit ausgeführt wird?

0

Ich möchte eine Datei entfernen, wenn rc.sysinit ausgeführt wird. Ich habe Folgendes geschrieben:

ja | rm / etc / anImportantFileWhichBelongsToSystem

Ich vermute, der übergeordnete Benutzer für die Ausführung von rc.sysinit ist "root", was bedeutet, dass er alles tun kann, was er will, aber in meinem Fall kann ich eine einfache Datei nicht von der Festplatte entfernen und der Fehler wird nicht angezeigt. Das Attribut der Datei lautet: 700

was soll ich machen?

austin powers
quelle
1
Warum nicht benutzen rm -f anstatt der yes Rohr?
Daniel Beck
1
oder verwenden Sie / bin / rm anstelle des Alias ​​rm?
MelBurslan
@ Mel_Burslan Wenn er ein Skript als Startup ausführt (durch rc.sysinit-Kontext angedeutet), führt er die ursprüngliche Bourne-Shell (kompatibel) aus, die keine Aliase hat.
Rich Homolka

Antworten:

1
  1. wie @Daniel Beck sagte, sollten Sie dafür wirklich rm -f verwenden. Du brauchst nicht den seltsamen (aber funktionierenden) Ja-Pipe-Hack.

  2. Das Dateisystem ist zu diesem Zeitpunkt möglicherweise nicht beschreibbar. Haben Sie getestet, ob Sie an dieser Stelle im Skript eine Datei erstellen können? touch /etc/testfile oder so, nur um sicherzustellen, dass es eingehängt und beschreibbar ist.

  3. Die Datei enthält möglicherweise erweiterte Attribute. Erweiterte Attribute sind Dinge, die Root-Rechte überschreiben. Was macht lsattr file sagen.

Rich Homolka
quelle
1

versuche es zu bewegen /dev/null oder unlink oder echo :> /etc/anImportantFileWhichBelongsToSystem

Marcel
quelle
1

Mögliches Problem ist, dass das Dateisystem zu diesem Zeitpunkt möglicherweise nicht und / oder nicht als R / W gemountet ist. Möglicherweise müssen Sie dies später tun, nachdem rc.sysinit abgeschlossen wurde.

mdpc
quelle
rc.sysinit ist normalerweise in / etc, also ist es wahrscheinlich gemountet. Vielleicht möchten Sie "nicht beschreibbar gemountet" hinzufügen.
Rich Homolka