Eu li a seção man bash
explicando o sinalizador set
interno -p
, e isso me diz alguns dos efeitos que o modo privilegiado tem no comportamento do Bash, mas não explica com profundidade suficiente (ou simplesmente não tenho contexto/experiência suficiente ) para eu entender para que serve, ou seja, em que situações você o usaria.
Parte da minha confusão vem do fato de que tudo o que li sobre o modo privilegiado faz parecer que "subprivilegiado" seria um nome mais apropriado. Isso em si é provavelmente um indicador de que estou entendendo mal algo sobre isso.
Também não tenho certeza se entendi setuid. Estou familiarizado com o id de usuário efetivo e o id de usuário real no que se refere a sudo
, mas parece que setuid é um conceito mais amplo, então talvez eu esteja perdendo alguma coisa.
O modo privilegiado existe para tentar aumentar a segurança (restringindo ações potencialmente perigosas) quando o shell está sendo executado com privilégios aumentados, como invocado por um programa setuid.
Sim, você está correto, pois parece "subprivilegiado", a
-p
opção está restringindo ações que poderiam permitir um ataque, talvez enganando o shell para executar comandos sob um usuário com mais privilégios. Por exemplo, é por isso que restringe os scripts de inicialização, já que eles podem não pertencer ou ser controlados pelo usuário privilegiado nessa situação. Além disso, herdar funções do ambiente também pode ser perigoso, pois pode-se exportar uma função comocd
ouls
que pode ser usada durante o shell privilegiado e então disparar uma ação que pode ser usada para um ataque.Você também perguntou sobre "setuid". Nesse contexto, "setuid" geralmente se refere às permissões de binários que incluem o
04000
bit, por exemplo permissão04711
(ou-rws--x--x
nals
saída). Habilitar o bit "setuid" em um binário faz com que ele sempre seja executado sob o uid efetivo do proprietário desse binário. Portanto, um binário setuid pertencente ao root será executado como root sempre que qualquer usuário o executar. O uid real será o do usuário que o invocar, por isso aeffective uid != real uid
checagem é comum nessa situação. (BTW, o mesmo existe para o bit "setgid", que está02000
nas permissões de arquivo.)Portanto, um cenário provável em que
bash -p
pode ser usado é um binário setuid que é executado como um usuário privilegiado (root ou não) e deseja gerar um shell, eles podem usarbash -p
para esse cenário, pois o bash tentará ficar mais seguro (ignorando a inicialização scripts e funções do ambiente, que podem ser perigosos) e manterá as permissões do uid efetivo durante a execução. Invocá-lo sem a-p
opção significa que o bash simplesmente ignorará o uid efetivo (redefinindo para o uid real) e se comportará como se nada tivesse acontecido...Ainda existem muitas armadilhas de segurança aqui... Portanto, usar um bash privilegiado ainda requer muita reflexão sobre como a segurança pode ser afetada. As medidas tomadas por
-p
podem ajudar, mas precisam ser consideradas em todo o contexto de possíveis cenários de ataque.