Ik wil de machtigingen van een map en al zijn submappen en bestanden in één stap (opdracht) in Linux wijzigen.
Ik heb het onderstaande commando al geprobeerd, maar het werkt alleen voor de genoemde map:
chmod 775 /opt/lampp/htdocs
Is er een manier om chmod 755
in te stellen voor /opt/lampp/htdocs
en al zijn inhoud, inclusief submappen en bestanden?
Als ik in de toekomst een nieuwe map of een nieuw bestand maak in htdocs
, hoe kunnen de machtigingen dan automatisch worden ingesteld op 755
?
Ik heb ook naar deze link gekeken:
Hoe stel ik de standaard CHMOD in in de LINUX-terminal?
Antwoord 1, autoriteit 100%
De andere antwoorden zijn juist, in die zin dat chmod -R 755
deze rechten voor alle bestanden en submappen in de boomstructuur zal instellen. Maar waarom zou je dat in hemelsnaam willen? Het is misschien logisch voor de mappen, maar waarom zou je de execute-bit op alle bestanden instellen?
Ik vermoed dat je de mappen echt op 755 wilt zetten en de bestanden met rust laat of ze op 644 wilt zetten. Hiervoor kun je de opdracht find
gebruiken. Bijvoorbeeld:
Alle mappen wijzigen in 755 (drwxr-xr-x
):
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
Om alle bestanden te wijzigen in 644 (-rw-r--r--
):
find /opt/lampp/htdocs -type f -exec chmod 644 {} \;
Antwoord 2, autoriteit 25%
Controleer de -R optie
chmod -R <permissionsettings> <dirname>
In de toekomst kunt u veel tijd besparen door eerst de man-pagina te controleren:
man <command name>
Dus in dit geval:
man chmod
3, Autoriteit 13%
Als u machtigingen op alle bestanden wilt instellen op a+r
, en alle directory’s op a+x
, en die recursief door de volledige Subdirectory-boom, gebruikt u :
chmod -R a+rX *
De X
(dat is hoofdstad X
, niet klein X
!) wordt genegeerd voor bestanden (tenzij ze een uitvoerbaar zijn voor iemand) maar wordt gebruikt voor mappen.
4, Autoriteit 5%
U kunt -R
gebruiken met chmod
voor recursieve traversal van alle bestanden en submappen.
Mogelijk hebt u Sudo nodig, omdat het afhangt van lamp die door de stroom wordt geïnstalleerd gebruiker of een andere:
sudo chmod -R 755 /opt/lampp/htdocs
5, Autoriteit 3%
De juiste recursieve opdracht is:
sudo chmod -R 755 /opt/lampp/htdocs
-R
: elke submap wijzigen, inclusief de huidige map
6, Autoriteit 3%
Instellen op alle submappen (recursief) gebruik -R
chmod 755 /folder -R
en gebruik Umask om de standaardinstelling in te stellen op nieuwe mappen / bestanden
CD / map
Umask 755
staking>
7
Misschien wil je dit antwoord van nikop superuser overwegen en “one chmod” gebruiken voor alle bestanden/mappen zoals dit:
chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)
Antwoord 8
Hier is een andere manier om mappen in te stellen op 775 en bestanden op 664.
find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)
Het lijkt misschien lang, maar het is best cool om drie redenen:
- Scant slechts één keer door het bestandssysteem in plaats van twee keer.
- Biedt betere controle over hoe bestandenworden behandeld versus hoe directoriesworden behandeld. Dit is handig bij het werken met speciale modizoals de sticky bit, die je waarschijnlijk wilt toepassen op mappen, maar niet op bestanden.
- Gebruikt een techniek die rechtstreeks uit de
man
-pagina’s komt (zie hieronder).
Merk op dat ik het prestatieverschil (indien aanwezig) tussen deze oplossing en het gebruik van twee zoekcommando’s (zoals in de oplossing van Peter Mortensen) niet heb bevestigd. Het is echter bemoedigend om een soortgelijk voorbeeld in de handleiding te zien.
Voorbeeld van man find
pagina:
find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)
Traverse the filesystem just once, listing setuid files and direct‐
tories into /root/suid.txt and large files into /root/big.txt.
Proost
Antwoord 9
Gebruik:
sudo chmod 755 -R /whatever/your/directory/is
Wees echter voorzichtig mee. Het kan je echt pijn doen als je de rechten van de verkeerde bestanden / mappen verandert.
10
chmod -R 755 directory_name
Works, maar hoe zou u ook nieuwe bestanden houden naar 755? De machtigingen van het bestand wordt de standaard toestemming.
11
voor mac & nbsp; os & nbsp; x 10.7 (leeuw), het is:
chmod -R 755 /directory
en ja, zoals alle andere zeggen, wees voorzichtig wanneer u dit doet.
12
U wilt ervoor zorgen dat geschikte bestanden en mappen chmod-ed / machtigingen zijn voor die geschikt zijn. Voor alle directory’s wilt u
find /opt/lampp/htdocs -type d -exec chmod 711 {} \;
En voor alle afbeeldingen, JavaScript, CSS, HTML … Nou, moet je ze niet uitvoeren. Dus gebruik
chmod 644 img/* js/* html/*
Maar voor alle logische code (bijvoorbeeld PHP-code), dient u machtigingen zodanig in te stellen dat de gebruiker die code niet kan zien:
chmod 600 file
13
Ik denk dat Adam vroeg om Umask-waarde te wijzigen voor alle processen die vastbinden om te werken op /opt/lampp/htdocs
map.
Het gebruikerbestand-creatie Modus Mask (Umask) is gebruikt om de bestandsmachtiging voor nieuw gemaakte bestanden te bepalen. Het kan worden gebruikt om de standaardbestandstoestemming voor nieuwe bestanden te regelen.
Dus als u een soort FTP-programma gebruikt om bestanden in te uploaden in /opt/lampp/htdocs
U moet uw FTP-server configureren om Umask te gebruiken die u wilt.
Als bestanden / directories worden gemaakt door PHP, moet u PHP-code
wijzigen
<?php
umask(0022);
// other code
?>
Als u nieuwe bestanden / mappen van uw bash-sessie maakt, kunt u Umask-waarde instellen in uw Shell-profiel ~ / .bashrc
Of u kunt umask instellen in het bestand /etc/bashrc
of /etc/profile
voor alle gebruikers.
voeg het volgende toe aan het bestand:
umask 022
Sample umask Values and File Creation Permissions
If umask value set to User permission Group permission Others permission
000 all all all
007 all all none
027 all read / execute none
En om machtigingen voor reeds gemaakte bestanden te wijzigen, kunt u zoeken gebruiken.
Ik hoop dat dit helpt.
Antwoord 14
Er zijn twee antwoorden: bestanden zoeken en chmod
erop toepassen. De eerste is find
het bestand en pas chmod
toe zoals het vindt (zoals voorgesteld door @WombleGoneBad).
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
Tweede oplossing is om een lijst van alle bestanden te genereren met de opdracht find
en deze lijst te leveren aan de opdracht chmod
(zoals voorgesteld door @lamgesh).
chmod 755 $(find /path/to/base/dir -type d)
Beide versies werken goed zolang het aantal bestanden dat wordt geretourneerd door de opdracht find
klein is. De tweede oplossing ziet er prachtig uit en is beter leesbaar dan de eerste. Als er een groot aantal bestanden is, retourneert de tweede oplossing de fout: Argument list too long.
Dus mijn suggestie is
- Gebruik
chmod -R 755 /opt/lampp/htdocs
als je de rechten van alle bestanden en mappen tegelijk wilt wijzigen. - Gebruik
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
als het aantal bestanden dat je gebruikt erg groot is. De optie-type x
zoekt alleen naar een specifiek type bestand, waarbij d wordt gebruikt voor het zoeken naar directory, f voor bestand en l voor link. - Gebruik
chmod 755 $(find /path/to/base/dir -type d)
anders - Het is beter om de eerste in elke situatie te gebruiken
Antwoord 15
Voor iedereen die nog steeds worstelt met toestemmingsproblemen, navigeer één mapniveau cd ..
omhoog vanuit de hoofdmap van je project, voeg jezelf (gebruiker) toe aan de map en geef toestemming om alles binnenin te bewerken (getest op Mac OS).
Om dat te doen, voert u deze opdracht uit (bij voorkeur):
sudo chown -R username: foldername .*
opmerking:voor momenteel niet-opgeslagen wijzigingen, moet u mogelijk eerst de code-editor opnieuw opstarten om te kunnen opslaan zonder dat er om een wachtwoord wordt gevraagd.
Houd er ook rekening mee dat u op tab
kunt drukken om de opties te zien terwijl u gebruikersnaam en map typt om het uzelf gemakkelijker te maken.
of gewoon:
sudo chmod -R 755 foldername
maar zoals hierboven vermeld, moet u voorzichtig zijn met de tweede methode.
Antwoord 16
Het is heel eenvoudig.
Ga in Terminal naar bestandsbeheer. voorbeeld: sudo nemo
. Ga naar /opt/
en klik vervolgens op Eigenschappen → Toestemming. en vervolgens Overig. Wijzig ten slotte om te maken en te verwijderen en bestandstoegang om te lezen en te schrijven en klik op de knop Toepassen… En werk.
Antwoord 17
Je kunt de toestemming wijzigen door de volgende commando’s te gebruiken
sudo chmod go=rwx /opt/lampp/htdocs
Antwoord 18
Voor reeds gemaaktebestanden:
find . \( -type f -exec chmod g=r,o=r {} \; \) , \( -type d -exec chmod g=rx,o=rx {} \; \)
Voor toekomstige aangemaaktebestanden:
sudo nano /etc/profile
En stel in:
umask 022
Veelgebruikte modi zijn:
- 077: u=rw,g=,o=
- 007: u=rw,g=rw,o=
- 022: u=rw,g=r,o=r
- 002: u=rw,g=rw,o=r
Antwoord 19
sudo chmod -R a=-x,u=rwX,g=,o= folder
eigenaar rw, anderen geen toegang, directory met rwx. Dit zal bestaande x op bestanden wissen
symbolische chmod calc wordt hier uitgelegd https://chmodcommand.com/chmod-744/