Wird das Erstellen einer Textdatei in vi meinen Computer verändern?

9

Ich weiß, dass Linux ein Betriebssystem ist, das auf Textdateien basiert. Ich möchte eine Datei mit viall den verschiedenen Befehlen erstellen, die ich gelernt habe. Auf diese Weise konnte ich jeden einzelnen Befehl sehr einfach mit dem /In finden vi. Ich möchte dies jedoch nur tun, wenn sich dadurch die Funktionsweise meines Computers nicht ändert. Wäre das eine gute Idee?

BJsgoodlife
quelle
12
Ja, irgendwo wird es eine Textdatei mehr geben. ;-) (Scherz) Wirklich, eine Datei ist eine Datei. Ist wie zu fragen, ob das Hinzufügen eines Fotos zu einem Ordner oder das Erstellen eines neuen Word-Dokuments Ihren Computer verändert. Ja, es wird; Sie haben dort noch ein Foto / Dokument. Wie auch immer, die Antworten, die Sie erhalten haben, sind größtenteils richtig.
Rmano
Warum denkst du, würde es das tun?
Braiam
2
Ich bin mir nicht sicher, was Sie unter "einem auf Textdateien basierenden Betriebssystem" verstehen, aber Linux unterscheidet sich in Bezug auf Textdateien nicht wirklich von beispielsweise Windows. Windows hat zum Beispiel INI- und BAT-Dateien, wenn Sie das denken.
Hyde
Denken Sie auch, dass es etwas Besonderes gibt vi(im Vergleich zu beispielsweise gedit), oder meinten Sie nur "einen Texteditor"?
Herr Lister
1
@BJsgoodlife Einige Textdateien steuern das System. Sie befinden sich an besonderen Orten und können im Allgemeinen nicht ohne geändert werden sudo.
cpast

Antworten:

34

Das Schreiben einer Textdatei ändert nichts an der Funktionsweise Ihres Computers.

Um so etwas zu tun, müsste man insbesondere eines tun

  • Überschreiben Sie eine wichtige Datei
  • Schreiben Sie Ihre Datei an einen speziell geschützten Ort wie ein * .d-Verzeichnis in / etc; Sie haben keine Erlaubnis dazu
  • Markieren Sie die ausführbare Datei und fügen Sie sie in Ihren Pfad ein

Da Sie so etwas nicht explizit tun werden, gibt es keinen Grund zur Sorge. Insbesondere geht die andere Antwort auf unnötige Länge, indem vorgeschlagen wird, dass Ihre Textdateien mit Hashes in jeder Zeile beginnen müssen. Natürlich nicht. Nur eine Textdatei irgendwo in einem normalen Home-Verzeichnis zu speichern, bringt nichts.

thomasrutter
quelle
3
Ich schlug vor, #so zu setzen , dass nichts Unbeabsichtigtes zufällig ausgeführt wird. Ich denke, es ist immer besser, auf der sicheren Seite zu sein.
Heemayl
8
Ich denke, es ist nicht immer besser, auf der sicheren Seite zu sein. Sicherheit hat Kosten, und es gibt einen Punkt, an dem das reduzierte Risiko die Kosten nicht mehr wert ist. Zum Beispiel, wenn es den Wert des Objekts überschreitet, das Sie schützen möchten (in Kontexten, in denen dieses Argument sinnvoll ist). Über Informationssicherheit finden Sie viele Antworten, in denen diskutiert wird, wie die richtige Sicherheit ein Kompromiss ist, und das einzige vollständig sichere System ist auch völlig nutzlos. Es wäre also dumm, in allen Fällen auf perfekter Sicherheit zu bestehen.
David Z
9
Als etwas anderes Thema, ich denke , die meisten wichtigen Punkt zu bringen (was diese Antwort der Fall ist, und die andere nicht) , ist , dass eine beliebige Datei erstellt werde nicht alles tun , um das System zu ändern. Sie können das System nur beeinflussen, indem Sie eine Datei erstellen, nach der ein anderer Prozess sucht, oder indem Sie die von Ihnen erstellte Datei ausführen, wenn sie den Code enthält, der das System beeinflusst. Dies fällt jedoch unter den allgemeinen Rat, keine völlig unbekannten Shell-Befehle auszuführen , was klug ist, ob Sie mit Dateien arbeiten oder nicht.
David Z
2
mach mir ein Sandwich. You won't have permission to do this. Sudo macht mir ein Sandwich. Aye, aye, sir!
Lie Ryan
2
@heemayl warum nicht einfach die erste Zeile in der Datei machen exit?
Random832
15

Sie können alle Befehle, die Sie gelernt haben, in einer Datei speichern, aber einige wichtige Punkte, die Sie beachten sollten:

  • Machen Sie die Datei nicht ausführbar
  • Niemals sourcedie Datei
  • Am besten setzen Sie #am Anfang aller Befehle ein, um alle Befehle zu kommentieren, damit sie nicht versehentlich ausgeführt werden. Auf diese Weise können Sie tatsächlich nach dem Befehl suchen, den Sie benötigen, und wären auch risikofrei. Sie können #am Anfang jeder Zeile mit dem folgenden Befehl hinzufügen :

    sed -i 's/^/#/' <file_name>

EDIT: Ich habe den dritten Punkt als extreme Sicherheitsmaßnahme angegeben, da "neon_overload" und "David Z" darauf hingewiesen haben, dass das Einfügen von Hashes in alle Zeilen zu umfangreich ist und daher nicht benötigt wird. Ich würde sie in diesem Zusammenhang unterstützen. Wie auch von "random832" hervorgehoben, wäre eine weitaus bessere Alternative zu meinem dritten Punkt, die Datei mit zu starten exit, da dann keine späteren Befehle ausgeführt werden.

EDIT-2: "Rinzwind" hat zwei wichtige Punkte erwähnt:

  • Überschreiben Sie keine vorhandene Datei

  • Speichern Sie die Datei im Home-Verzeichnis des Benutzers ( /home/$USER/).

heemayl
quelle
4
put a # in the beginning of all the commands to comment out all the commands so they don't get executed accidentallyIch bin mir nicht ganz sicher, ob das ein ernsthafter Vorschlag oder ein Witz sein soll. Mein Sarkasmusdetektor hat mich heute im Stich gelassen.
Lie Ryan
Das Wort, auf das Sie Wert legen müssen, ist "versehentlich". Der Benutzer kann die Datei versehentlich an einem unsicheren Ort als ausführbar aufbewahren. Hier gehe ich einfach kein Risiko ein.
Ich
4
Könnte er nicht einfach einen "Exit" oder ähnliches am Anfang der Datei einfügen, anstatt jede einzelne Zeile zu kommentieren?
o0 '.
Vielleicht meinte er #! - Das heißt, der Interpreter wird auf null gesetzt, damit er nicht ausgeführt wird.
Joshua
1
@BJsgoodlife, nein #!- nur exit; Auf diese Weise sind Sie auch geschützt, gegen sh yourfiledie ein ungültiger Schebang nicht hilft.
Charles Duffy
7

neon_overload hat eine sehr gute Antwort.

Ich werde ein wenig auf eine bestimmte Facette Ihrer Frage eingehen - ich würde dies zu einem Kommentar machen, aber ich habe hier nicht genug Ruf.

Linux als Betriebssystem basiert NICHT auf Textdateien. Das heißt, ich kann irgendwie sehen, woher du kommst. Für einen externen Beobachter ist das Bearbeiten und Starten von "Text" -Dateien, insbesondere im Vergleich zu Windows, ziemlich weit fortgeschritten.

Dies hat mehrere Gründe, von denen einige sind:

  • Unter Linux gibt es kein Registrierungssystem wie unter Windows. Daher ist es üblich, dass Anwendungen ihre Einstellungen in Textdateien speichern, und Sie werden angewiesen, sie zu bearbeiten, anstatt die Registrierung wie in Windows zu bearbeiten.
  • Linux wird sehr häufig als Serversystem verwendet, und viele von denen, die es auf Desktops verwenden, arbeiten mit Serversystemen. Im Gegensatz zu Windows Server werden Linux-Server normalerweise ohne grafische Oberfläche ausgeführt. Daher wird erwartet, dass Produkte, von denen erwartet wird, dass sie auf Linux-Servern ausgeführt werden, sowie deren Benutzer und Administratoren ohne grafische Oberfläche funktionieren. Produkte (und erwähnenswerte Systemfunktionen), von denen nur erwartet wird, dass sie unter Windows ausgeführt werden, sind in der Regel stärker auf die Benutzeroberfläche ausgerichtet (z. B. MS SQL).
  • Das Linux-Skriptsystem ist etwas üblicher und transparenter als Windows. Sie würden Skripte unter Windows sehen - aber sie würden etwas.vbs oder ein anderes.bat heißen. Sie würden nicht unbedingt erkennen, dass es sich um Textdateien handelt - aber wenn man bedenkt, was in meinem zweiten Punkt steht, ist es unter Linux viel üblicher, in .sh-Dateien herumzuschnüffeln.
  • Schließlich sind viele Linux-Benutzer daran gewöhnt, ohne grafische Oberfläche zu arbeiten, und bearbeiten die Dateien in vielen Fällen lieber direkt wie ohne grafische Benutzeroberfläche, als mit grafischen Tools herumzufummeln. Ich weiß, dass ich, wenn ich etwas tiefer im System tun möchte, einfach das Terminal starte, und viele meiner Kollegen auch.
Fabo.sk
quelle
"Es gibt kein Registrierungssystem unter Linux", aber es gibt dconf ( en.wikipedia.org/wiki/Dconf ). Nicht alle Systeme, auf denen der Linux-Kernel ausgeführt wird, haben ihn, und nicht alle Dinge, die ein Windows-System in der Registrierung konfigurieren würde, werden dort konfiguriert.
Daniel Landau
1

Die kurze Antwort lautet: Nein, Sie werden Ihren Computer nicht ändern, indem Sie eine Textdatei in vi erstellen. Wenn Sie jedoch nicht aufpassen, kann das Erstellen dieser ersten Textdatei Ihr Leben verändern . Das Erlernen der Unix-Methode kann eine zutiefst lohnende Übung sein.

hackerb9
quelle
0

viein Text - Editor , also wenn alles , was Sie wollen , ist nur ein paar Textausschnitte in einer Textdatei speichern, und durch sie suchen, dann können Sie es direkt mit der integrierten Befehle aus dem Terminal tun.

  1. Schreiben Sie eine Notiz in eine Textdatei (erstellt die Datei, wenn sie nicht vorhanden ist):

    Echo-Hinweis mit wichtigen Daten >> info.txt

WICHTIG: Achten Sie auf einfache und doppelte Anführungszeichen und stellen Sie ihnen Schrägstriche voran, wenn Sie möchten, dass sie eingeschlossen werden.

  1. Durchsuchen Sie die Datei nach Text (z. B. important):

    grep --color -i wichtige info.txt

Um eine Eingabe zu vermeiden --color -i, sollte dies in Ihrem Alias ​​erfolgen ~/.bashrc.

Sie können vorhandenen oder nicht vorhandenen Textdateien auch mehrzeiligen Text hinzufügen:

cat >> info2.txt

Geben Sie dann den Text ein oder fügen Sie ihn ein. Wenn Sie fertig sind, drücken Sie CTR+Z

Was das Ändern des Systems betrifft, nein, es ändert nichts an der Funktionsweise Ihres Systems, solange Sie Dateien in Ihrem eigenen Basisordner erstellen und nicht ausführen (Sie können eine Datei ausführen, auch wenn sie nicht ausführbar ist, z. B. mit bash myFile). . Stellen Sie außerdem sicher, dass Sie die Root-Berechtigungen nur dann strikt verwenden, wenn Sie sie benötigen.

Und schließlich hat Sie Ihre Interpretation des dateibasierten Systems etwas in die Irre geführt: Die meisten Betriebssysteme verfügen über Dateien, in denen wichtige Einstellungen gespeichert sind, die die Funktionsweise des Systems stark beeinflussen. Sie befinden sich jedoch an vordefinierten Speicherorten und sind normalerweise vor Änderungen durch normale Benutzer geschützt.

Es ist jedoch möglich, sich leicht in den Fuß zu schießen, wenn Sie beispielsweise als normaler Benutzer einen lokalen 'ausführbaren' Ordner haben, den Sie hinzugefügt haben PATH, und wenn Sie in diesem Ordner zufällig ausführbare Dateien haben, die dieselben Namen wie erstellt haben -in gemeinsame Dienstprogramme oder bash Schlüsselwörter, wie test, echo, cat, for, cut, usw.

ccpizza
quelle