Impedire agli utenti di contrassegnare i file come eseguibili?

Voglio garantire che gli utenti del mio sistema non siano in grado di eseguire chmodding files + x, e non voglio che in / home / / / var / sia eseguibile.

Non posso metterli su partizioni separate.

  • Crea certificato di livello root self-signed su Ubuntu
  • Daemon non si avvia all'avvio: come posso correggere questo problema?
  • Collegamento lento su ssh su Ubuntu
  • Comprendere l'avvelenamento della cache DNS
  • Imansible avviare MongoDB su Ubuntu 10.10
  • Non in grado di installare Gearman su Ubuntu 12.04
  • Eseguire Ubuntu 9.04 Server.

    6 Solutions collect form web for “Impedire agli utenti di contrassegnare i file come eseguibili?”

    Stavo per suggerire un wrapper a chmod o qualcosa, ma più lo penso, gli utenti troveranno a questo punto una scala (scp un eseguibile da un'altra casella, o eseguire perl -s "chmod ('FILE'); ", eccetera…

    Penso quindi che il metodo FS sia il migliore. Poiché si dice che non è ansible spostarli in un nuovo file system, che cosa significa utilizzare un –bind mount per "remount" / home e / var senza privilegi di esecuzione?

    mount -o noexec --bind /var /var mount -o noexec --bind /home /home 

    Non sono sicuro se questo funziona o no, ma sembra promettente …

    EDIT:
    Beh, mi piace la mia bella e brillante "bella risposta" da questa risposta, ma dopo aver giocato con lui non penso che functionrà. Il mio test originale era su un vecchio kernel (2.4.9) e la funzionalità "mount on top of itself" sembrava funzionare. Ho provato di nuovo con un nuovo kernel (2.6.18) e non sembra funzionare. Ho iniziato a guardare i lavori in giro (come rinominare / var e / home a qualcos'altro e poi rimontarli indietro. Non sono arrivato molto lontano però perché ho trovato questo nella pagina man per montare sulla scatola più recente:

    Si noti che le opzioni di assembly del file system restano uguali a quelle sul punto di assembly originale e non possono essere modificate passando l'opzione -o insieme a –bind / – rbind.

    Oh beh … – è ancora un'opzione divertente …

    Posso pensare a due modi di fare questo, uno sporco e un bene. Cominciamo con il sporco.

    Scrivi uno script di shell che funziona regolarmente come un cronjob, ad esempio each 5 o 10 minuti. Rimuovere in modo esplicito la bacheca exec da tutti i file di queste due directory, vale a dire

     chmod -R ugo-x /home /var 

    Il modo migliore è farlo a livello di filesystem. Creare nuove partizioni per ospitare sia la var e la casa, comunque è considerata la migliore pratica. Quindi aggiungere l'opzione 'noexec' per montare. Ciò impedirà, a livello di filesystem, l'esecuzione di file memorizzati all'interno di tali directory.

    Questo è un esempio perfetto del tipo di domanda che deve essere risolta in questo modo:

    Sembra che hai trovato una soluzione per un problema complesso e stai ora chiedendo domande specifiche su come attuare questa soluzione. Puoi invece descrivere il problema originale che stai cercando di risolvere?

    La mia esperienza è che è abbastanza importnte per un sysadmin sapere quando rispondere a una richiesta con "cosa? Perché?". Quanto importnte dipende dalla propensione degli utenti di descrivere il loro problema originario o di cercare di elaborare le proprie soluzioni e di chiedere assistenza per l'attuazione. In alcuni ambienti, è la differenza tra le costose soluzioni catastroficamente cattive e soluzioni economiche a buon mercato.

    non dimenticare di assicurarsi che / tmp / var / tmp e altri dirs scrivibili dall'utente siano anche sul mount delle partizioni con il flag noexec.

    Indovinate inoltre potete usare inotifywait con -r, -m e -e opzioni di attrib per reset -x flag se esso è impostato dagli utenti

    Sembra che tu abbia un problema politico …
    … e presumibilmente questo è stato causato da un vero problema rispetto a te paranoico.
    Non stai limitando l'efficacia della piattaforma di calcolo facendo questo?

    molti script possono essere eseguiti semplicemente richiamando direttamente l'interpnetworking:
    sh ./mybashscript.sh
    perl ./myperldaemon.pl

    Quindi, presumibilmente, stai cercando di impedire che un eseguibile nativo esegua?

    Migliore per affrontare questo problema attraverso politiche e polizia / audit …
    nel migliore dei casi, ti limiterai comunque agli utenti less esperti a bada.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.