Hoe kan ik de machtigingen voor een map en zijn submappen/bestanden in één stap wijzigen?

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 755in te stellen voor /opt/lampp/htdocsen 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 755deze 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 findgebruiken. 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 -Rgebruiken met chmodvoor 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


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:

  1. Scant slechts één keer door het bestandssysteem in plaats van twee keer.
  2. 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.
  3. 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 findpagina:

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_nameWorks, 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/htdocsmap.

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/htdocsU 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/bashrcof /etc/profilevoor 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 chmoderop toepassen. De eerste is findhet bestand en pas chmodtoe 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 finden 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 findklein 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

  1. Gebruik chmod -R 755 /opt/lampp/htdocsals je de rechten van alle bestanden en mappen tegelijk wilt wijzigen.
  2. Gebruik find /opt/lampp/htdocs -type d -exec chmod 755 {} \;als het aantal bestanden dat je gebruikt erg groot is. De optie -type xzoekt alleen naar een specifiek type bestand, waarbij d wordt gebruikt voor het zoeken naar directory, f voor bestand en l voor link.
  3. Gebruik chmod 755 $(find /path/to/base/dir -type d)anders
  4. 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 tabkunt 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/

Other episodes