AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-120614

Stilez's questions

Martin Hope
Stilez
Asked: 2019-11-09 03:01:06 +0800 CST

No FreeBSD, qual flag ou arquivo designa 'root' e 'toor' como logando imediatamente com o privilégio su sem precisar de "su" após o login?

  • 0

Obviamente, é amplamente recomendado não fazer login diretamente como uma conta de superusuário, mas estou curioso.

Qual é o sinalizador ou configuração que o FreeBSD usa para reconhecer as contas que automaticamente ganham privilégio su no login, sem que o usuário execute nenhum script de login ou comando extra de escalação de privilégios?

freebsd
  • 1 respostas
  • 178 Views
Martin Hope
Stilez
Asked: 2019-11-06 02:49:32 +0800 CST

O FreeBSD contém várias variantes de regex básico?

  • 5

grepe sedambos são descritos como usando "regex básico" ("BRE") por padrão. BRE está bem descrito aqui .

Mas considere esta saída:

# echo '    aaaaa   ' | grep '\(aaaaa\|bbbbb\)'
    aaaaa
# echo '    aaaaa   ' | sed '/\(aaaaa\|bbbbb\)/ s/ /_/g'
    aaaaa

No primeiro comando, a \( ... \| ... \)sintaxe agia claramente como (X OR Y), já que a saída passou grep.

No segundo comando, a \( ... \| ... \)sintaxe claramente não agiu como (X OR Y), porque os espaços não foram alterados para sublinhados.

(Em contraste, ambos os comandos reconhecem \+como "uma ou mais repetições")

O que aconteceu? Por que parece haver dois tipos de BRE no FreeBSD, um dos quais reconhece a sintaxe que o outro não?

A questão mais profunda é que muitos projetos procuram o BRE para fornecer portabilidade para outros sistemas do tipo unix. Mas isso sugere que mesmo os BREs provavelmente não serão os mesmos em todas as plataformas, se eles não puderem ser os mesmos em plataformas individuais. Argh?

regular-expression
  • 2 respostas
  • 513 Views
Martin Hope
Stilez
Asked: 2019-10-21 06:21:58 +0800 CST

Primeira vez instalando o TinyDNS como um serviço em uma prisão do FreeBSD - como fazer?

  • 1

Estou usando o FreeBSD 11.2 no momento (provavelmente passarei para o 12 daqui a pouco). Eu preciso de um pequeno servidor DNS autoritativo (sem necessidade de pesquisa ou armazenamento em cache, menos de 10 domínios e menos de 10 consultas/hora, quase sem alterações de registro).

É provável que eu vá com TinyDNS, parte do djbdns, que é bem conhecido pela segurança e também parece mínimo e faz o que eu preciso.

Parte do motivo da segurança é que ele será exposto à internet, embora por trás de um filtro de IP/porta e taxa muito baixa, limitador de taxa (usando pfpara isso). Mas, por esse motivo, quero ter um cuidado especial com a configuração do daemon, para evitar vulnerabilidades óbvias. Com isso, quero dizer aspectos como os usuários e grupos necessários, scripts de início/parada, jail/chroot e minimização/desativação/negação dos principais acessos/recursos não essenciais que um invasor poderia pivotar.

(Devo mencionar que posso instalar o tinydns "normalmente" em um sistema de teste e criar o .confarquivo necessário, então é puramente como executá-lo de maneira segura, o que está faltando)

Não tenho experiência em configurar software para executar chroot/jailed, ou revisar um pacote chrooted/jailed para práticas de segurança apropriadas, e esta também será a primeira vez que tento fazer algo assim, embora eu tenha escolhido o Pacote de servidor DNS especificamente por sua aparente simplicidade de configuração.

Ignorando o .confarquivo, como seria uma "receita" para configurar o TinyDNS para funcionar corretamente como um serviço e, idealmente, com acesso minimizado a "outras coisas não essenciais para o daemon, mas úteis para um invasor"?

software-installation
  • 1 respostas
  • 696 Views
Martin Hope
Stilez
Asked: 2019-02-12 06:37:58 +0800 CST

Encontrando o pacote dns-sd para FreeBSD e Linux?

  • 1

IETF RFC 6763 seção 7.1 ( p.21 ) refere-se a um programa CLI chamado "dns-sd", que pode ser usado para sondar e relatar serviços, registros e ambientes de configuração zero. Várias outras páginas da Web também se referem a usá-lo na CLI, mas nenhuma fornece um repositório de origem ou URL da Web de origem. Eu realmente não quero baixar um pacote grande que o contenha, já que eu só quero sondar os servidores dns, ou escanear a rede alcançável e obter despejos detalhados de serviços/diretórios/?atividade dns-sd acessíveis quando um servidor dns pode ou pode não estar em execução, não muito mais, e não consigo encontrar um pacote autônomo para ele, ou mesmo sua fonte upstream final. Eu não posso nem ter 100% de certeza do que ele é capaz, porque também não consigo encontrar seus documentos. Mas parece ser o certo.

Alguma idéia de como rastrear uma coisa dessas? E, se existirem, portas para FBSD 11.xe vários tipos de Linux (podem compilar se houver um Makefile+source completo). Pela primeira vez, o Google não foi meu amigo. Nem Freshports, nem qualquer outra pesquisa que eu conheça.

linux freebsd
  • 1 respostas
  • 1290 Views
Martin Hope
Stilez
Asked: 2018-08-14 03:33:49 +0800 CST

Listando variáveis ​​de shell com um prefixo fixo

  • 3

Pesquisei e não encontrei uma resposta, peço desculpas antecipadamente se já foi perguntado anteriormente.

Estou usando shell no FreeBSD ( /bin/sh) e quero despejar para stdout todas as variáveis ​​shell ( não ambiente) começando com _myvar_. O mais próximo que posso chegar é, set | grep '^_myvar_'mas isso apenas despeja a primeira linha de variáveis ​​​​de várias linhas (algumas serão de várias linhas e eu preciso delas por completo), e pode ser propenso a erros em casos de borda patológicos, como uma string contendo " myvar " que acontece com quebra de linha antes dessa parte.

se eu pudesse listar apenas nomes de variáveis ​​(não valores), então eu poderia filtrar dentro de a do...read...whilee obter os valores um de cada vez apenas para vars com nomes correspondentes, mas não consigo encontrar uma maneira de fazer isso. Também não posso filtrar a saída completa, porque não há uma maneira determinística de saber se uma linha de saída contém uma continuação ou uma nova variável, que não tem problemas de caso de borda com strings contendo _myvar_, =ou newline (\n)caracteres, ou possivelmente, à direita espaços. Não quero modificar o ambiente, pois o código está incluído em outro código e o ambiente tem que ser estável para isso.

Não é um problema para a saída/lista incluir quaisquer variáveis ​​de ambiente correspondentes, se isso ajudar (se existir alguma - é extremamente improvável que isso aconteça)

Existe uma maneira de fazer isso?

shell variable
  • 2 respostas
  • 1894 Views
Martin Hope
Stilez
Asked: 2018-08-07 23:17:07 +0800 CST

Usando shell 'printf' onde a string de formato está em uma variável e não possui um número fixo de espaços reservados de campo?

  • 0

Estou escrevendo uma função de shell que faz uma chamada de API externa via cURL (a sintaxe da API externa não está sob meu controle). Eu abordei assim (simplificado):

#!/bin/sh

template_get_entry='get_entry:%s'
template_set_entry='set_entry:%s=%s'

curlheaders='-H stuff'
curluri="https://www.domain.com:1234/api.php"

# make an API call to get entry "foo"
call_api "$template_get_entry" "foo"

# make an API call to set entry "foo" to "bar"
call_api "$template_set_entry" "foo" "bar"

call_api() {

  apicmd="$( printf "$1" "$2" "$3" )"
  result="$( eval "/usr/local/bin/curl" "$curlheaders" "-d" "$apicmd" "$curluri" )"
  retcode="$?"

  .....stuff.....

}

Existem 2 problemas com este código.

Primeiro, o número de argumentos é variável. Se a definição de linha apicmdfor chamada com menos do que o número máximo de argumentos, printf interpreta quaisquer comandos em excesso como instâncias extras de impressão da string de formato, a ser anexada. Não consigo ver a maneira correta de contornar isso.

Segundo, porque eu usei eval, isso cria um problema knockon com eval, nesse retcode certamente pegará o código de retorno de evale não de curl, e eu não sei a maneira correta de evitar/corrigir isso.

Como devo fazer algo assim, que precisa de um número variável de argumentos?

shell-script function
  • 2 respostas
  • 978 Views
Martin Hope
Stilez
Asked: 2018-08-02 05:10:48 +0800 CST

Combinando operadores relacionais com grep -q na instrução IF do shell?

  • 0

Não consigo encontrar uma resposta para isso - desculpe se for uma duplicata.

Estou usando /bin/shno BSD ( não no bash!) e estou tentando descobrir a sintaxe da seguinte instrução IF.

Eu tenho duas cláusulas componentes. Escrito como declarações separadas, fica assim:

if [ "$a" == "y" -o "$a" == "Y" ]; then
    if printf '%s' "$b" | grep -qE 'SOME_REGEX'; then
        # both conditions met: do stuff
    fi
fi

Então eu posso usar aninhado ifcomo uma solução alternativa.

Mas qual sintaxe eu preciso para combiná-los perfeitamente em uma única instrução "if"?

NOTA: Se este shell permitir comparações diretas de correspondência de regex ( [ "$a" =~ REGEX" ]ou similar) em vez de exigir grep -q, seria útil saber, mas ainda gostaria de saber como combinar corretamente essas cláusulas como estão, porque algum dia certamente terei uma situação em que estou combinando o conteúdo do arquivo e a segunda instrução é algo como ls -l "$b" | grep -qE 'SOME_REGEX', portanto, uma comparação de regex inline não funcionaria ... :)

shell-script shell
  • 3 respostas
  • 545 Views
Martin Hope
Stilez
Asked: 2018-05-11 07:59:58 +0800 CST

getfacl diz que minha conta não privilegiada deve ser capaz de ler o conteúdo de um diretório, mas não pode

  • 2

Provavelmente estou perdendo algo extremamente óbvio ..... mas não consigo ver.

Eu tenho um diretório comum no FreeBSD, controlado por NFSv4 ACLs. As ACLs dizem que posso listar seu conteúdo; mas não posso.

Aqui está a getfaclsaída no diretório do problema e seu pai + avô:

 # getfacl /mnt/data_dir/working_dir/
# owner: root
# group: wheel
group:data_managers:-w-pDd--------:-------:deny
everyone@:r-------------:-------:allow
group:data_managers:rwxpDda-R-c---:fd-----:allow
owner@:--------------:fd-----:allow
group@:--------------:fd-----:allow
everyone@:--x-----------:-d-----:allow

  # file: /mnt/data_dir
# owner: root
# group: wheel
owner@:rwxpDdaARWcCos:fd-----:allow
group@:rwxpDdaARWcCos:fd-----:allow
everyone@:r-x---a-R-c---:fd-----:allow

  # file: /mnt
# owner: root
# group: wheel
user::rwx
group::r-x
other::r-x

Eu su, como a conta recém-criada com o problema de ACL. Esta conta não é proprietária de nenhum diretório relevante, nem membro de wheelou data_managers, portanto, seus únicos direitos decorrem das permissões/ACLs "todos (mundo)".

 $ su -f restricted_user
 % id
uid=1100(restricted_user) gid=65533(nogroup) groups=65533(nogroup),4003(restricted_users)
 % pwd
/mnt/data_dir/working_dir
 % ls
ls: .: Permission denied

Eu não entendo. A permissão mundial nesse diretório é everyone@:r .....(herança descendente para subdiretórios para "x", mas não para "r"). rdeve dar direitos mundiais para ler o conteúdo de working_dir. Não é um membro de data_managerse se fosse, o deny ACE não está negando rou x. Eu posso atravessar para isso. Mas não consigo ler seu conteúdo.

O que eu perdi?

shell permissions
  • 1 respostas
  • 58 Views
Martin Hope
Stilez
Asked: 2018-02-27 00:03:34 +0800 CST

Significado da declaração de que 'as funções getcwd funcionam corretamente' na página de manual do FreeBSD para mount_nullfs?

  • 5

No FreeBSD, man mount_nullfsafirma que:

As principais diferenças entre uma cópia virtual do sistema de arquivos e um link simbólico são que as getcwd(3)funções funcionam corretamente na cópia virtual e que outros sistemas de arquivos podem ser montados na cópia virtual sem afetar o original. Um número de dispositivo diferente para a cópia virtual é retornado por stat(2), mas em outros aspectos é indistinguível do original.

Qual é o significado/implicação completo deste parágrafo?

mount freebsd
  • 2 respostas
  • 482 Views
Martin Hope
Stilez
Asked: 2018-01-26 02:56:35 +0800 CST

Desativar um pool ZFS com rapidez e segurança como um todo monolítico?

  • 4

Tanto quanto a pergunta diz.

Suponha que eu queira ter o equivalente a um "botão de emergência" com script para meu pool FreeNAS - algo que eu possa clicar para executar a partir de uma GUI ou executar no console/SSH, que fecha rapidamente tudo o que pode estar lendo ou gravando nele, desmonta o sistema de arquivos e - idealmente - desativa os discos ou partições que está usando.

Não me importo com erros que surjam em outro software ou conexões remotas ao fazer isso, ou abortar qualquer transferência de arquivo longa prematuramente, só quero que ele desligue o pool da maneira mais rápida que seja consistente em manter sua consistência e possivelmente dar alguns segundos para que qualquer gravação pendente seja concluída e o pool esteja em um estado consistente para fins de dados.

As opções sugeridas pelos comandos do ZFS não parecem promissoras: zpool offlinefunciona apenas em dispositivos individuais, portanto, pode haver uma condição de corrida se a gravação ocorrer enquanto os discos são removidos um por vez; zpool exportrequer a opção -f se estiver em uso e carrega um aviso que -ftambém pode perder dados. Pode-se verificar todos os abertos file descriptorsusando o pool ou seus dispositivos (milhares ou centenas de milhares deles?) E forçar manualmente o fechamento de cada um, mas isso pode atingir as condições de corrida, pois não impede que novos fds sejam criados ao mesmo tempo. Também não devo presumir que toda a atividade do ZFS é mediada por uma lista de daemons de serviço de arquivo remoto para receber sinais de saída, porque é provável que algumas atividades de arquivo sejam locais (cron/CLI/sessões desanexadas).

Então, olhando para a melhor forma de desligar um pool inteiro com segurança e rapidez, parece que umountpode ser minha melhor aposta - funciona no nível do sistema de arquivos e pode desligar todo um sistema de arquivos rapidamente e como uma unidade monolítica, após o que zpool exportparece que seria em seguida, seja capaz de realmente concluir e desativar qualquer atividade interna de maneira segura, sem a -fopção, mantendo os próprios dados em um estado consistente garantido. Se houver atividade de disco bruto em andamento (resilver ou scrub), acho que isso será retomado ou reiniciado quando o pool for colocado online novamente.

Mas ainda umountnão parece fazê-lo completamente, porque também pode haver zvolalvos iSCSI em uso. Os dados dentro deles inerentemente não podem ser mantidos consistentes, pois o servidor não conhece sua estrutura; portanto, os iniciadores remotos terão que reparar os dados da melhor maneira possível quando se reconectarem. Estou bem com isso, mas não tenho certeza se algum tipo de comando para forçar o encerramento ou off-line dos destinos é necessário ou se é uma prática recomendada. (Observação: o encerramento forçado de conexões tem os mesmos problemas que o fechamento de fds individuais.)

Estou ciente de que provavelmente haverá algum tipo de perda ou problema de dados se o pool for abruptamente expulso do estado RW quando as gravações estiverem acontecendo. Mas, desde que não perca a consistência (em um pool ZFS e no nível do sistema de arquivos), tudo bem - todos os arquivos em uso/destinos iSCSI sendo atualizados terão que se arriscar em arquivos/blocos em um ZFS consistente mas estado de dados inválidos devido a ficar off-line no meio da gravação dos dados. Isso é inevitável e não é um problema para a pergunta.

Então, quais etapas eu realmente preciso fazer para desligar um pool em uso o mais rápido possível, consistente com a garantia de segurança e consistência do pool - e fazer manualmente umountum sistema de arquivos ZFS em uso (como parte de uma solução) seria seguro ou carrega algum risco de danos aos dados?

Atualização: mencionando aqui caso alguém ache isso útil. A resposta aceita afirma que export -fpode haver problemas com zvols (iSCSI, etc.). Com base nessa dica, descobri que o manipulador iSCSI usado pelo FreeNAS pode forçar o logout/encerramento de sessões e possui outros subcomandos úteis que podem ser emitidos antecipadamente - consulte man ctladm. Seja qual for o uso de seus zvols, é provável que haja algum comando para encerrar as sessões neles.)

freebsd zfs
  • 1 respostas
  • 2425 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve