Ich werde in Kürze eine Menge PHP-Arbeit erledigen und ich bin daran interessiert, RoR zu lernen, also habe ich Linux Mint 12 in meiner VirtualBox installiert.
Der bisher frustrierendste Aspekt des Switches war der Umgang mit Linux-Berechtigungen. Es scheint, als ob ich nichts Nützliches tun kann (z. B. den Symfony2-Tarball aus meinem Downloads-Verzeichnis in mein Dokumenten-Stammverzeichnis kopieren und extrahieren), ohne mich über sudo als Stammverzeichnis auszugeben.
Gibt es eine einfache Möglichkeit, Linux anzuweisen, mir uneingeschränkten Zugriff auf bestimmte Verzeichnisse zu gewähren, ohne einfach alle Berechtigungen zu öffnen?
linux
permissions
sudo
Hauptproduktionen
quelle
quelle
Antworten:
Mir fallen zwei Möglichkeiten ein:
Besitzen Sie das gewünschte Verzeichnis mit
chown
:(Ersetzen Sie Ihren Benutzernamen durch Ihren Benutzernamen und das Verzeichnis durch das gewünschte Verzeichnis.)
Das andere , was Sie tun können , ist die Arbeit als root, solange Sie wissen , was Sie tun . So verwenden Sie root:
und dann können Sie alles tun, ohne
sudo
vor jedem Befehl etwas eingeben zu müssen .quelle
Arbeiten Sie im Allgemeinen immer als Ihr eigener Benutzer, es sei denn, Sie tun etwas, das sich auf das gesamte System auswirkt.
Wenn sich auf Ihrem Webserver Dateien befinden, die Sie speichern möchten, arbeiten Sie als eigener Benutzer und
sudo
legen Sie die Dateien dann im Web-Serving-Bereich Ihres Dateisystems ab. In der Regel, das wäre durch ein Installationsskript ausgeführt werden, und Sie würden so etwas wie laufensudo -u webmaster install-webserver-files
, oder bessersudo -u webmaster git update
(oder das Versionskontrollsystem Ihrer Wahl).Wenn Sie auf einem Entwicklungsserver arbeiten und möchten, dass auf Ihre Dateien sofort zugegriffen werden kann, erstellen Sie ein Verzeichnis im Webserverbereich und machen Sie es zu Ihrem Eigentum oder zumindest zu einem beschreibbaren Verzeichnis. Nach dieser einmaligen Operation (
sudo chown …
odersudo -u webmaster setfacl …
) benötigen Sie keine erhöhten Berechtigungen für die täglichen Operationen.Es ist manchmal praktisch, mehreren Benutzern das Schreiben in ein Verzeichnis zu erlauben oder auf andere Weise unterschiedliche Berechtigungen für mehrere Benutzer außer dem Eigentümer oder für mehrere Gruppen zu haben. Zugriffskontrolllisten geben Ihnen diese Möglichkeit. Siehe Berechtigungsprobleme für freigegebene Verzeichnisse auf einem Server oder Berechtigungsprobleme für Sicherungsskripte .
quelle
Ja, melden Sie sich als root an, um die Zugriffssteuerung für Superuser zu gewährleisten.
Gleiches Konzept in Windows, können Sie sich mit Administrator an Ihrem Terminal anmelden.
quelle
Es war schon immer meine Ideologie, dass man als Benutzer unter Linux alles machen kann, was man will, und für alles andere gibt es immer etwas
sudo
.sudo
Ermöglicht das Ausführen weniger Dinge als einige andere Benutzer, meistensroot
für die Systemadministration.sudo
Es war eine Ressource mit einem größeren Vorteil, einige meiner Routineaufgaben und -berechtigungen als (Root-) Benutzer an andere zu delegieren und dabei zu helfen, meine und andere Zeit besser zu verwalten, ohne die Berechtigungen über das erforderliche Maß hinaus zu erhöhen. Gleichzeitig ist es mein Vertrauen, dass ihre Einträge im Internet präsent bleibensudoers
Konfigurationsdatei. Ich bin mir nicht sicher, ob es damit zusammenhängen könnte, aber ich kann sagen, dass sudo Ihnen eine bessere Sicherheitsperspektive bietet, wer alle und was sie mit ihren vertrauenswürdigen Berechtigungen tun können. Auch wenn etwas schief geht, sind sie dafür verantwortlich. (Ich kann mit den Log-Informationen der Sudoer immer ein bisschen hinterhältig sein, um auch die Schuldigen zu finden). Meine Kollegen haben mir immer ihre Sorge zum Ausdruck gebracht, dass sie sudo für alles eingeben müssen, was sie mit erhöhten Rechten in einer Linux-Umgebung tun wollten. Auch hier habe ich die gleiche Frage gefunden.Um die Lösungen und meine Suche nach Alternativen zu sehen, bin ich auf Resource Based Access Controls gestoßen,
RBAC
aber in einem anderen AbenteuerlandSolaris
mit Tools wiepfexec
usw. Dieser Ansatz ist besser, da hierdurch die Rechte der Benutzer, die bereits erhöht sind, erhalten bleiben und sie vertrauen auf das Gewissen und die Wachsamkeit dessen, was Sysadmins mit ihren Privilegien machen möchten.In Anbetracht der verfügbaren Lösungen von RBAC und seiner Implementierungen in der Linux-Welt bin ich auf gestoßen
SELinux http://www.ibm.com/developerworks/linux/library/l-rbac-selinux/
grsecurity http://de.wikipedia.org/wiki/Grsecurity
und während es einige andere Implementierungen gibt, würde ich sie in der obersten Reihenfolge der Liste betrachten. Die Implementierung von RBAC ist in einer Organisation sehr aufwändig, insbesondere wenn viele Benutzer vorhanden sind. RBAC wäre in homogenen Umgebungen eine bessere Lösung. Wenn sich jedoch heterogene Unix-Installationen im Netzwerk befinden und die Benutzerdatenbank häufig verwendet wird, schlägt dies möglicherweise fehl. Da SELinux unter Solaris nicht skalierbar / implementiert ist, sind RBAC / pfexec-Tools unter Linux nicht implementiert. Es gibt verschiedene Ansätze, um eine einzige Sache zu tun. Zum Beispiel: http://blogs.oracle.com/darren/entry/opensolaris_rbac_vs_sudo_howto
Netzwerkweit unterschiedliche Installationen unterstützen diesen Ansatz möglicherweise nicht (openrbac könnte jedoch als allgemeiner Implementierungsansatz angesehen werden), da sudoers ein Einzelhost-Ansatz ist oder keine zentralisierte Konfiguration im Netzwerk / in der Domäne ermöglicht.
/etc/sudoers
müssen bei jeder Änderung synchronisiert werden. Auch wenn für den Betrieb der sudoers-Datei eine Wissensdatenbank erforderlich ist, muss die Richtliniensprache der sudoers-Konfiguration verstanden werden, um Fehler zu vermeiden und Berechtigungen zu gewähren. Während die Sicherheitsprofile häufig verwendet werden, kann RBAC einen zentralisierten Ansatz bieten. Das Hinzufügen / Entfernen eines Benutzers aus der zugewiesenen Rolle kann an einem einzelnen Ort erfolgen (d. H. An dem die Benutzer- / Kennwort- / Gruppeninformationen gespeichert werden) die Domain wie LDAP, NIS oder AD). Dies würde auch implizit voraussetzen, dass Sie die Befehle verstehen, die für die Ausführung der RBAC-Datenbank erforderlich sind, z. B. smexec, smmultiuser, nur wenige.Sudo bietet hier möglicherweise einen plattformübergreifenderen Ansatz, der auf allen Unix- / ähnlichen Plattformen funktioniert, die die setuid-Funktionen bieten. Beides
sudo
und esRBAC
gelingt den Nicht-Root-Benutzern, einige Berechtigungen zu erteilen, die ohne die Angabe desroot
Kennworts selbst ausgeführt werden können. Sudo kann die Befehlszeilenargumente, die während der Ausführung der Befehle verwendet werden können, präziser und detaillierter behandeln und sich darauf beschränken, welche Befehle mit Argumenten mit erhöhten Rechten ausgeführt werden können. RBAC kann die Verwendung auf die installierten Befehle oder Binärdateien beschränken, hat jedoch keine Kontrolle über die Befehlszeilenargumente. Auditing ist viel besser und in die RBAC-Umgebung integriertsudo
Dies hängt von der Konfiguration und auch von den Sicherheitsbeschränkungen ab (zum Beispiel, dass die Shell nicht gewährt wird und insbesondere die Hosts sich problemlos bei den anderen Hosts anmelden dürfen). Dies sind nur einige der Unterschiede, die ich anführen könnte, und ich persönlich neige dazu, sudo als RBAC zu verwenden, obwohl ich mit den genannten Einschränkungen einige Umgehungsmöglichkeiten schaffen könnte. Solange RBAC nicht alle Probleme zum Vorteil von sudo angeht, glaube ich nicht, dass sudo verschwinden wird, denn es ist einfach.quelle
Ich würde das Dokumentenstammverzeichnis angeben, in dem Sie arbeiten, damit Sie uneingeschränkten Zugriff darauf haben.
Um zu vermeiden, dass Sie bei jeder Installation eines Gems sudo eingeben müssen, lesen Sie den folgenden Artikel: http://forums.site5.com/showthread.php?t=11954
Ich empfehle außerdem dringend, RVM zu installieren, um Versionen von Ruby und Rails zu verwalten. http://beginrescueend.com/
Dies erleichtert Ihnen das Leben erheblich, wenn Sie den Host finden, auf dem Ihre App mit anderen Versionen als den von Ihnen entwickelten bereitgestellt werden soll.
quelle
Führen Sie den Befehl aus.
Sie können nun Befehle als Root-Benutzer ausführen. Achtung! Jeder ausgeführte Befehl wird als Root-Benutzer ausgeführt. Sie können die Dinge ernsthaft durcheinander bringen, wenn Sie nicht vorsichtig sind.
Oder Sie ändern die Berechtigungen des Verzeichnisses, damit Ihr Benutzer Dateien speichern und bearbeiten kann.
quelle
sudo -s
?sudo -i
wie dies als Login-Shell simuliert. Möglicherweise liegt es näher an einem nativen lokalen Root-Login, als Bash oder eine andere Shell über sudo auszuführen.su
? Was ist diese Besessenheit mit Sudo? Du brauchst kein Sudo. Je.su
wenn das root-Passwort unbekannt ist. Durch das Hinzufügen eines Benutzers zu den Sudoern und das Ausführen von Sudoernsudo su
kann der Benutzer sein vorhandenes und bekanntes Benutzerkennwort zum Eskalieren verwendenBearbeiten Sie die Datei / etc / passwd und erteilen Sie dem Benutzer "yourUserName" Root-Berechtigungen, indem Sie die Benutzer- und Gruppen-IDs in UID 0 und GID 0 ändern:
yourUserName: 0: 0 :: / home / yourUserName: / bin / sh
quelle
Wie in anderen Antworten bereits erwähnt, besteht die sauberste Lösung darin, den Besitz der Dateien und Verzeichnisse zu ändern, auf die Sie zugreifen müssen. Sie können alternativ eine neue dedizierte Gruppe erstellen, den Gruppeneigentum der Dateien und Verzeichnisse in diese Gruppe ändern und die Gruppenschreibberechtigung für diese Dateien und Verzeichnisse festlegen. Setzen Sie abschließend das SGID-Bit in den Verzeichnissen so, dass beim Erstellen einer neuen Datei der Gruppeneigentum des enthaltenen Verzeichnisses (dh der dedizierten Gruppe) übernommen wird.
quelle
Benutzer @ Server: ~ $ sudo passwd root
[sudo] Passwort für Benutzer:
Geben Sie das neue UNIX-Passwort ein:
Geben Sie das neue UNIX-Passwort erneut ein:
passwd: Passwort erfolgreich aktualisiert
Benutzer @ Server: ~ $ su
Passwort:
root @ Server: / home / user #
Ist diese "#" Eingabeaufforderung nicht von Schönheit?
Ich benutze "sudo" nur einmal, um die Fähigkeit zu erreichen
user @ server: ~ $ su
Passwort:
root @ server: / home / user #
für das Leben des Servers.
Um es wieder sicher zu machen,
root @ server: / home / user #
exit
Benutzer @ Server beenden: ~ $
Sysadmins tun dies seit Jahren, als "sudo" nicht Teil des Mollycoddling-Trends war.
Wenn Sie dies tun, liegt es in Ihrer Verantwortung, darauf zu achten, nicht auf meine.
Ian
quelle
sudo -s
. Arbeit erledigt