Há algum tempo, em uma conversa no IRC, um usuário de um canal em que eu estava sugeriu que alguém configurasse um diretório para herdar o ID do usuário nos arquivos para resolver um problema que alguém estava tendo. Na época, falei e disse "o linux não suporta diretórios setuid". Depois disso, a pessoa que deu o conselho me mostrou uma pastabin ( http://codepad.org/4In62f13 ) de seu sistema honrando a permissão setuid definida em um diretório.
Só para explicar, quando digo "linux não suporta diretórios setuid", o que quero dizer é que você pode acessar o "diretório chmod u + s" e ele definirá o bit no diretório. No entanto, o Linux (como eu o entendi) ignora esse bit (nos diretórios).
Por mais que eu tente, não consigo replicar completamente essa pasta. Alguém me sugeriu uma vez que seria possível emular o comportamento com o selinux - e brincando com as regras, é possível forçar um uid em um arquivo, mas não a partir de uma permissão de diretório setuid (que eu posso ver). Ler na internet tem sido bastante pouco informativo - a maioria dos lugares afirma que "não, o setuid nos diretórios não funciona com o linux" e, ocasionalmente, "isso pode ser feito em circunstâncias específicas" (como: http://arstechnica.com/ etc / linux / 2003 / linux.ars-12032003.html )
Não me lembro de quem era a pessoa original, mas o sistema original era um sistema debian 6 e o sistema de arquivos em execução era xfs montado com "default, acl". Eu tentei replicar isso, mas sem sorte até agora (tentei até agora com várias versões do debian, ubuntu, fedora e centos)
Alguém pode me informar sobre o que ou como você obtém um sistema para honrar o setuid em um diretório?
fonte
grpid|bsdgroups
ounogrpid|sysvgroups
) que significa que os arquivos nos diretórios são criados com o grupo do diretório em vez do grupo do proprietário; talvez brincar com isso?Respostas:
Setuid para diretórios não se comporta como setgid. A menos que a saída do shell fosse do FreeBSD, alguém estava entediado e se divertindo um pouco às suas custas.
http://en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories
fonte
Resposta parcial / solução alternativa:
Eu estava tentando fazer a mesma coisa, decidi não lutar e tentar outro método. O que tentei foi acessar listas de controle, para definir permissões padrão. (Nota: pode ser necessário ativá-los primeiro).
Aqui testuser é usado para executar testes, e o usuário normal pode excluir os resultados, sem resultar no uso de raiz (cada vez).
fonte
De RHEL
man chmod
Numericamente, se bem me lembro,
chmod 4711 ./dir
adiciona o bit UID definido,chmod 2711 ./dir
adiciona o bit gid definido para6711
definir a herança uid + gid conforme a demonstração em pastebin.Pela página de manual
chmod u+s
==chmod 4XXX
echmod g+s
==chmod 2XXX
fonte
=755
ou00755
utilizando os valores numéricos