Come impostare umask per una cartella specifica

18

Per alcuni ovvi motivi ho bisogno di impostare umask valore per una cartella specifica. Come si può farlo?

Grazie in anticipo!

UPDATE 1

La ragione per cui ho bisogno di usare umask per una cartella specifica è la seguente. Ho un'applicazione web e quando crea qualche file il permesso predefinito è 700. Ma ho bisogno di almeno 755 permessi per quel file. Penso che potrei spiegare il problema più chiaramente ora.

    
posta Bakhtiyor 22.05.2011 - 22:02

4 risposte

25

potresti utilizzare setfacl

setfacl -d -m group:name:rwx /path/to/your/dir

Dove name è il nome del gruppo

Per individuare i gruppi che appartengono a un utente specifico, vedi In unix / linux come fai a sapere in quale gruppo è inserito un determinato utente tramite la riga di comando?

    
risposta data yogi70 14.11.2012 - 17:31
10

Non puoi impostare umask per directory, è un valore a livello di processo. Se devi impedire ad altri di leggere i file in una directory, revoca i bit delle autorizzazioni corrispondenti.

Ad esempio, se hai una directory /home/user/directory con alcuni file e directory che possono ottenere permessi come 777 da un processo, imposta i bit di autorizzazione di /home/user/directory su qualcosa come 700. Ciò renderà impossibile ad altri utenti (escluso il superuser root) per scendere in /home/user/directory .

Sono paranoico e setto i permessi su /home/user su 750, quindi solo io posso leggere, scrivere e discendere nella mia home directory. Questo ha come conseguenza che ad altre cartelle come /home/user/Public non è possibile accedere da altri, ma posso conviverci.

Per aggiornamento della tua domanda: ancora, non puoi controllarlo nel filesystem (a parte usare un tipo di filesystem diverso come FAT che è fortemente sconnesso), devi farlo nella tua webapp. Se la tua webapp è codificata in PHP, puoi cambiare la umask al volo usando la funzione umask :

<?php
umask(0022);
// other code
?>

Potresti inserire questo in un file di configurazione, come il file contenente la password di connessione al database (pensando in app come Wordpress).

Ricorda che si tratta di un valore di processo, alcuni server Web ti permettono di impostarlo nei loro file di configurazione, altrimenti potresti modificare gli script di avvio per impostare la umask desiderata. Ricorda che le autorizzazioni come 755 e 644 sono piuttosto pericolose per le webapps, se il codice è sensibile, chiunque può leggerlo.

    
risposta data Lekensteyn 22.05.2011 - 22:18
0

Per cambiare i permessi per una cartella usa chmod. umask è per i file.

Imposta umask su ciò di cui hai bisogno

umask xxx

e cambia quando hai finito

umask 022
    
risposta data wojox 22.05.2011 - 22:09
0

Un'altra soluzione potrebbe essere quella di impostare semplicemente l'id di gruppo sui file creati nella directory, il che rende i nuovi file di proprietà dell'id del gruppo di directory, anziché l'id di gruppo dell'utente che ha creato i file. Quindi penso che potresti solo fare:

chown www-data:www-data /my/folder

chmod 4755 /my/folder

Imposta il permesso del file speciale setgid, il che causerebbe la proprietà di tutti i file creati in /my/folder dal gruppo www-data , che ha quindi l'autorizzazione rx (5) a causa della directory padre.

    
risposta data Bastiaan 11.07.2017 - 10:49

Leggi altre domande sui tag