Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Permessi ei file unix [c]

    Ciao, Devo preparare un esame sui sistemi operativi, in particolare su unix e Freebsd!!

    Nel mio libro c'è una cosa che non sono riuscito a capire : come fa il programma passwd a modificare le password del utente che lo chiama, senza chiedere i diritti di root, in quanto il programma modifica il file shadow che è di proprietà di root e soprattutto solo root hai i diritti di lettura e scrittura su questo file, se si prova ad aprirlo normalmente ovviamente si ha un errore di permessi non sufficienti...
    Quello che ha me non è chiaro è come una funzione con diritti di utente possa superare la barriera dei permessi e modificare il file???

    Forse si prendono i diritti di root, tramite la setuid , ma anche questa funzione per settare l'uid a zero a bisogno dei diritti di root!!! Cosi si formerebbe un circolo vizioso... Di cui io non riesco a vedere al fine... Ma ci deve essere un modo sensato e sicuro per fare quello che fa passwd!! Ho provato a scaricare i sorgenti ma non sono riuscito a capirli...

    Mi sapete aiutare??? L'eame mi piace molto è per questo che cerco di scendere nei dettagli....

    Si spera di prendere un buon voto....


    Grazie in anticipo per il vostro interesse..

  2. #2
    Rispondo al ragazzo che mi ha risposto nel post sbagliato :

    Ma io posso settare a un mio programma il bit setuid e in questo modo anche questo viene eseguito sempre con i diritti di root ??

    Perché ho provato ma anche con il bit setuid questo non riesce ad aprire i file di root...

  3. #3
    Il bit setuid fa sì che il programma venga sempre eseguito con i permessi dell'utente proprietario. Tuttavia solo utenti privilegiati possono cambiare il proprietario di un file, e se non sono superuser i bit setuid e setgid vengono automaticamente disattivati.
    Estratto da man 2 chown
    Only a privileged process (Linux: one with the CAP_CHOWN capability)
    may change the owner of a file. The owner of a file may change the
    group of the file to any group of which that owner is a member. A
    privileged process (Linux: with CAP_CHOWN) may change the group arbi‐
    trarily.

    If the owner or group is specified as -1, then that ID is not changed.

    When the owner or group of an executable file are changed by a non-
    superuser, the S_ISUID and S_ISGID mode bits are cleared. POSIX does
    not specify whether this also should happen when root does the chown();
    the Linux behavior depends on the kernel version. In case of a non-
    group-executable file (i.e., one for which the S_IXGRP bit is not set)
    the S_ISGID bit indicates mandatory locking, and is not cleared by a
    chown().
    Ovviamente un utente non privilegiato non può attivare i bit setuid e setgid di un file che ha come proprietario root, poiché i permessi possono essere cambiati solo dal proprietario del file.
    Estratto da man 2 chmod
    The effective UID of the calling process must match the owner of the
    file, or the process must be privileged (Linux: it must have the
    CAP_FOWNER capability).
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.