FREEBSD criando nova porta

2

Eu tenho um script aqui que eu quero criar como uma porta no freebsd e então torná-lo como pacote para que eu possa instalar em algumas máquinas. script está abaixo.

#!/usr/local/bin/bash
if [ ! -f "/suid.old" ]
then
find / -perm -4000 -o -perm -2000 -ls > /suid.old
else
find / -perm -4000 -o -perm -2000 -ls > /suid.new
diff suid.old suid.new > newchanges
fi
exit 0
if [ -s "/newchanges" ]
then
  mail -s "changes has occured" [email protected]
else
  mail -s "No changes has occured" [email protected] /newchanges
fi

Como posso conseguir isso?

    
por Stefan Lasiewski 29.03.2010 / 06:38

2 respostas

1

Se você estiver instalando apenas esse script pequeno, basta fazer isso manualmente. Você poderia usar um arquivo shar , mas isso parece um exagero.

Os maiores problemas que vejo são os primeiros: bash vai estar localizado em locais diferentes em sistemas diferentes, mas não há nada em seu script específico para Bash, então você pode alterar seu shebang para:

#!/bin/sh

ou

#!/usr/bin/env bash

para portabilidade.

Em segundo lugar, você precisará escolher um local para o seu script. Parece-me que /usr/local/bin seria tão bom quanto qualquer outro.

Em terceiro lugar, você precisará chown para definir a propriedade e chmod para definir as permissões.

Em quarto lugar, você deve escolher locais melhores para seus arquivos de saída. Se eles são apenas para uso temporário, eles devem ser criados em /tmp , em vez do diretório raiz em que você tem suid.old e suid.new , ou o diretório atual em que você tem newchanges . Caso contrário, em algum lugar em var pode estar onde você deseja colocar dados mais persistentes. Talvez /var/local/suid .

Em quinto lugar, o exit impede que o segundo if seja avaliado para que nenhum email seja enviado.

Em sexto lugar, você pode querer mv suid.new suid.old em algum momento, então na próxima vez que você fizer o seu teste, ele estará comparando os dados salvos mais recentes.

Em sétimo lugar, seu último comando de email deve ter o arquivo canalizado ou redirecionado. Não funcionará como um argumento. E os dois comandos de e-mail devem ser trocados, então você não está enviando um arquivo por e-mail quando está vazio e está enviando um e-mail quando não está.

if [ -s "/newchanges" ]
then
  mail -s "No changes have occurred" [email protected] < /path/to/newchanges
else
  mail -s "changes have occurred" [email protected]
fi
    
por 29.03.2010 / 07:14
0

Uma porta para um script de shell está além do overkill - Como Dennis disse, isso é algo que eu copiaria para máquinas individuais conforme necessário (ou crie um pacote manualmente, mas isso é uma dor).

Eu também não tenho certeza se isso tem utilidade geral suficiente para torná-lo na coleção de ports oficiais (em particular, já existe uma verificação de "binários setuid" como parte da auditoria de segurança diária).

Tudo o que foi dito, detalhes sobre como criar uma porta podem ser encontrados no Manual do Porter , e você sempre pode rolar uma porta local apenas para o seu site.

    
por 29.03.2010 / 07:25

Tags