Ich möchte die Berechtigungen eines Ordners und aller seiner Unterordner und Dateien in einem Schritt (Befehl) unter Linux ändern.
Ich habe den folgenden Befehl bereits ausprobiert, aber er funktioniert nur für den genannten Ordner:
chmod 775 /opt/lampp/htdocs
Gibt es eine Möglichkeit zu setzen chmod 755
für /opt/lampp/htdocs
und alle ihre Inhalte , einschließlich Unterordner und Dateien?
htdocs
Wie können die Berechtigungen in Zukunft automatisch festgelegt werden, wenn ich in Zukunft einen neuen Ordner oder eine neue Datei darin erstelle 755
?
Ich habe mir auch diesen Link angesehen:
http://stackoverflow.com/questions/3740187/how-to-set-default-chmod-in-linux-terminal
linux
permissions
directory
chmod
Adam
quelle
quelle
chmod 75 /opt/lampp/htdocs
oder sollte das wirklich so seinchmod 755 /opt/lampp/htdocs
?Antworten:
Die anderen Antworten sind korrekt, da
chmod -R 755
diese Berechtigungen für alle Dateien und Unterordner in der Baumstruktur festgelegt werden. Aber warum um alles in der Welt willst du das ? Es mag für die Verzeichnisse sinnvoll sein, aber warum sollte das Ausführungsbit für alle Dateien gesetzt werden?Ich vermute, was Sie wirklich tun möchten, ist, die Verzeichnisse auf 755 zu setzen und entweder die Dateien in Ruhe zu lassen oder sie auf 644 zu setzen. Hierfür können Sie den
find
Befehl verwenden. Zum Beispiel:So ändern Sie alle Verzeichnisse in 755 (
drwxr-xr-x
):So ändern Sie alle Dateien in 644 (
-rw-r--r--
):quelle
{} \;
die Zeile am Ende bedeutet?chmod 644 {} \;
gibt den Befehl an, der vonfind
für jede Datei ausgeführt wird .{}
wird durch den Dateipfad ersetzt, und das Semikolon kennzeichnet das Ende des Befehls (maskiert, andernfalls würde es von der Shell anstelle von interpretiertfind
).Aktivieren Sie die Option -R
chmod -R <permissionsettings> <dirname>
In Zukunft können Sie viel Zeit sparen, indem Sie zuerst die Manpage überprüfen:
Also in diesem Fall:
quelle
man
?man
. Insbesondere für Fälle, ingrep
denen Sie nochman
keine Erfahrung haben, kann es sehr zeitaufwändig sein, Beispiele im Dokument zu finden. Google oder SO stellen jedoch Beispiele innerhalb von Sekunden zur Verfügung.Wenn Sie Berechtigungen für alle Dateien
a+r
und alle Verzeichnisse festlegena+x
und dies rekursiv über den gesamten Unterverzeichnisbaum tun möchten , verwenden Sie:Das
X
(das ist KapitalX
, nicht kleinx
!) Wird für Dateien ignoriert (es sei denn, sie sind bereits für jemanden ausführbar), wird jedoch für Verzeichnisse verwendet.quelle
chmod
Dokumenten, wo ich herausfand, dass ich sie verwenden könntechmod -R g+wX .
. Bravo!x
bei Dateien nicht entfernt , wenn sie bereits vorhanden sind.Sie können
-R
mitchmod
für die rekursive Durchquerung aller Dateien und Unterordner verwenden.Möglicherweise benötigen Sie sudo, da dies davon abhängt, ob LAMP vom aktuellen oder einem anderen Benutzer installiert wird:
quelle
sudo chmod 755 -R /directory
es nicht funktioniert, aber es hatsudo chmod -R 755 /directory
funktioniert. Seltsam. Ich benutze übrigens Mac OS X.sudo chmod 755 -R
arbeiteteDer richtige rekursive Befehl lautet:
-R
: Ändern Sie jeden Unterordner einschließlich des aktuellen Ordnersquelle
Verwenden Sie -R, um alle Unterordner (rekursiv) festzulegen
Verwenden Sie umask, um die Standardeinstellung für neue Ordner / Dateien cd / folder umask 755 festzulegenquelle
umask
auf 755 ein! Sie können keine von Ihnen erstellten Dateien oder Verzeichnisse auflisten, lesen oder verwenden!λ ~ → umask 022 λ ~ → umask -S u=rwx,g=rx,o=rx λ ~ → umask 755 λ ~ → umask -S u=,g=w,o=w
chmod 755 -R /opt/lampp/htdocs
wird die Berechtigungen rekursiv festlegen. Es gibt keine Möglichkeit, die Berechtigungen für Dateien automatisch nur in diesem Verzeichnis festzulegen, die nach dem Festlegen der Berechtigungen erstellt wurden. Sie können jedoch Ihre systemweiten Standarddateiberechtigungen durch Festlegen ändernumask 022
.quelle
inherit
in vielen Fällen keine Lösung sein, oder funktioniert es ausschließlich mit NTFS-3G?myforlder
von anderen Orten (z. B. einem PC) in dieses Zielverzeichnis (auf einem Server), da versucht wird, einen neuen Ordner zu erstellen das Zielverzeichnis mit dem Namen, zumyfolder
dem Sie keine Berechtigung haben. Wie ich haberoot
, benutze ich einfachchown -R username:usergroup /directory
.Vielleicht möchten Sie diese Antwort von nik auf superuser berücksichtigen und "one chmod" für alle Dateien / Ordner wie diese verwenden:
quelle
-exec
Option vonfind
zu verwenden, um denArgument list too long
Fehler zu überwinden .Verwenden:
Seien Sie jedoch vorsichtig damit. Es kann Ihnen wirklich weh tun, wenn Sie die Berechtigungen der falschen Dateien / Ordner ändern.
quelle
Hier ist eine andere Möglichkeit, Verzeichnisse auf 775 und Dateien auf 664 zu setzen.
Es mag lang aussehen, ist aber aus drei Gründen ziemlich cool:
man
Seiten (siehe unten).Beachten Sie, dass ich den Leistungsunterschied (falls vorhanden) zwischen dieser Lösung und der einfachen Verwendung von zwei Suchbefehlen (wie in der Lösung von Peter Mortensen) nicht bestätigt habe. Es ist jedoch ermutigend, ein ähnliches Beispiel im Handbuch zu sehen.
Beispiel von
man find
Seite:Prost
quelle
chmod -R 755 directory_name
funktioniert, aber wie würden Sie neue Dateien auch auf 755 halten? Die Berechtigungen der Datei werden zur Standardberechtigung.quelle
Für Mac OS X 10.7 (Lion) gilt Folgendes:
Und ja, wie alle anderen sagen, seien Sie dabei vorsichtig.
quelle
Sie möchten sicherstellen, dass die entsprechenden Dateien und Verzeichnisse geändert wurden / die entsprechenden Berechtigungen vorhanden sind. Für alle gewünschten Verzeichnisse
Und für alle Bilder, JavaScript, CSS, HTML ... sollten Sie sie nicht ausführen. Also benutze
Für den gesamten Logikcode (z. B. PHP-Code) sollten Sie die Berechtigungen so festlegen, dass der Benutzer diesen Code nicht sehen kann:
quelle
Ich glaube, Adam hat gefragt, wie der umask-Wert für alle Prozesse geändert werden soll, die für die Ausführung im
/opt/lampp/htdocs
Verzeichnis verwendet werden.Die Maske für den Benutzerdateierstellungsmodus (umask) wird verwendet, um die Dateiberechtigung für neu erstellte Dateien zu ermitteln. Es kann verwendet werden, um die Standarddateiberechtigung für neue Dateien zu steuern.
Wenn Sie also eine Art FTP-Programm zum Hochladen von Dateien verwenden
/opt/lampp/htdocs
, müssen Sie Ihren FTP-Server so konfigurieren, dass er die gewünschte Umask verwendet.Wenn Dateien / Verzeichnisse beispielsweise von PHP erstellt werden, müssen Sie den PHP-Code ändern
Wenn Sie neue Dateien / Ordner aus Ihrer Bash-Sitzung erstellen, können Sie den umask-Wert in Ihrem Shell-Profil ~ / .bashrc festlegen. Oder Sie können umask in
/etc/bashrc
oder/etc/profile
file für alle Benutzer einrichten . Fügen Sie der Datei Folgendes hinzu: umask 022Und um die Berechtigungen für bereits erstellte Dateien zu ändern, können Sie find verwenden. Hoffe das hilft.
quelle
Es gibt zwei Antworten, um Dateien zu finden und
chmod
auf sie anzuwenden . Das erste istfind
die Datei undchmod
wird so angewendet , wie sie gefunden wird (wie von @WombleGoneBad vorgeschlagen).Die zweite Lösung besteht darin, eine Liste aller Dateien mit dem
find
Befehl zu generieren und diese Liste demchmod
Befehl zu übergeben (wie von @lamgesh vorgeschlagen).Beide Versionen funktionieren gut, solange die Anzahl der vom
find
Befehl zurückgegebenen Dateien gering ist. Die zweite Lösung sieht gut aus und ist besser lesbar als die erste. Wenn eine große Anzahl von Dateien vorhanden ist, gibt die zweite Lösung den folgenden Fehler zurück:Argument list too long.
Mein Vorschlag ist also
chmod -R 755 /opt/lampp/htdocs
Sie diese Option, wenn Sie die Berechtigungen aller Dateien und Verzeichnisse gleichzeitig ändern möchten.find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
Sie diese Option, wenn die Anzahl der von Ihnen verwendeten Dateien sehr groß ist. Die-type x
Option sucht nur nach einem bestimmten Dateityp, wobei d zum Suchen des Verzeichnisses, f für die Datei und l zum Verknüpfen verwendet wird.chmod 755 $(find /path/to/base/dir -type d)
andernfallsquelle
Es ist sehr einfach.
Gehen Sie im Terminal zum Dateimanager. Beispiel :
sudo nemo
./opt/
Klicken Sie dann auf Eigenschaften → Berechtigung . und dann Andere . Zum Schluss ändern Sie, um Zugriff zu erstellen und zu löschen und zu archivieren, um zu lesen und zu schreiben, und klicken Sie auf die Schaltfläche Anwenden ... und arbeiten.quelle