cp: kan geen gewoon bestand maken: Permission denied
Geplaatst op februari 15, 2021 door admin Ik draai een PHP-script op mijn Apache-server en vanuit het script moet ik een aantal bestanden kopiëren (om een Bash-script dat bestanden kopieert). Ik kan zonder problemen naar een map /tmp
kopiëren, maar als ik wil kopiëren naar /tmp/foo
, krijg ik deze foutmelding:
cp: cannot create regular file "/tmp/foo/file.txt": Permission denied
ook al zijn de rechten voor de directory /tmp
en /tmp/foo
ingesteld met dezelfde waarde.
Weet u wat het probleem is?
Reacties
Antwoord
/tmp
Directory heeft alle rechten (lezen / schrijven) voor alle gebruikers. maar als je /tmp/foo
gemaakt hebt met je eigen account, dan heeft het zijn permissies alleen voor jou! als je het schrijfbaar wilt maken voor andere gebruikers (of programmas), verander dan de toestemming met dit commando:
chmod 777 /tmp/foo
Als je alle andere bestanden in deze map van eerder, voeg -R
vlag toe aan het bovenstaande commando.
Update: Gebruik deze opdracht om de /tmp/foo
eigenaar te wijzigen van uw eigen naar de standaard apache-gebruiker:
sudo chown www-data:www-data /tmp/foo -R
controleer ook uw apache2-configuratie om te zien welke gebruiker deze heeft voor het uitvoeren van de php-scripts.
Reacties
- Bedankt voor het antwoord, maar het werkt niet. Ik heb de permissies voor / tmp / foo ingesteld op 777 en nog steeds krijg ik dezelfde foutmelding. Als ik het script als een normale gebruiker uitvoer, is het oké. Maar het probleem is wanneer ik het draai vanuit een php-script
- Mag ik je scripts zien, alstublieft !? en gebruik je php of php-fpm? uw probleem is dat php standaard een door apache geconfigureerde gebruiker gebruikt voor het uitvoeren van scripts, terwijl u
/tmp/foo
hebt gemaakt met uw eigen account! Ik zal mijn antwoord bijwerken, het nogmaals controleren. - php-script: <? Php shell_exec (" bash /path/to/script.sh)? > en script.sh is #! / bin / bash cp /my/folder/file.txt / tmp / foo
- Hoe kan ik vinden welke gebruiker apache gebruikt voor het uitvoeren van php-scripts? Wanneer ik mijn php-script bash-commando whoami installeer, krijg ik " apache "
- kun je me de uitvoer van dit commando:
ls -alh /tmp | grep foo
als de map eenfoo
naam heeft.
whoami
enll /tmp
/tmp
is standaard altijd voor root! de resultaten van de twee commandos zijn in dit geval niet gerelateerd, omdat/tmp
alle rechten voor alle gebruikers heefttmp
is voor root, maar niet voor/tmp/foo
OP voert het script mogelijk uit als een andere gebruiker met/tmp/foo
.