Por que o bit de permissão setuid não está definido para o mkdir em sistemas Unix modernos?

3

Bach afirma o seguinte:

mkdir is a typical setuid program. Only a process with Effective UID root can create a folder. (Section 7.6, Page 229)

Eu verifiquei as permissões nele no Ubuntu 12.04, o bit setuid não está definido.

-rwxr-xr-x 1 root root 42624 Oct  2 08:55 mkdir
   ^??

Em seguida, verifiquei outros programas que deveriam ter esse conjunto, como ping e su , e eles estão configurados.

-rwsr-xr-x 1 root root 34740 Nov  8  2011 ping
   ^---there it is 

Então, como funciona mkdir ? As coisas mudaram desde que Bach escreveu isso?

    
por Anirudh Ramanathan 16.12.2012 / 18:00

3 respostas

5

A chamada mkdir () existe desde o BSD 4.2. Mais tarde foi adicionado ao SYSV 3.0. Vejo: link

O BSD 4.2 foi lançado em 1984: link

Se o acesso a um ponto de entrada no modo kernel no UNIX através de um syscall for permitido a partir do modo de usuário sem restrição, o que indica duskwuff, então o setuid não é necessário.

    
por 16.12.2012 / 18:44
3

Não é mais necessário ter privilégios de root para criar uma pasta. Agora há uma chamada de sistema mkdir() que qualquer processo pode usar para criar um diretório.

    
por 16.12.2012 / 18:22
1

Have things changed since Bach wrote that?

Exatamente. A permissão para criar um diretório é atualmente baseada na permissão de gravação para o diretório pai ou no t bit (para diretórios / tmp-like onde todos podem criar um diretório, mas você pode excluir apenas arquivos de sua propriedade).

    
por 16.12.2012 / 18:28