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-80264

NetIceGear's questions

Martin Hope
NetIceGear
Asked: 2019-08-21 14:00:48 +0800 CST

apt full-upgrade vs redundância de atualização apt

  • 11

Isso pode ser um possível bug, mas é algo que vem me incomodando há alguns dias.

A diferença entre apt-get upgradee apt-get dist-upgradetem sido bem conhecida e bem estabelecida até agora, ou seja, a atualização instala/atualiza enquanto dist-upgradeé capaz de instalar/remover/atualizar se a remoção do pacote for necessária para uma instalação ou atualização de outro pacote. A diferença nos pacotes pode ser facilmente descoberta com algo como

(o seguinte é um método rápido e sujo e precisará que a senha sudo seja inserida já no terminal para copiar e colar. Além disso, como tenho vários pacotes e drivers, corrigi-me que preciso manter a funcionalidade, incluí o OR em o awkpara extrair apenas aqueles a serem instalados e aqueles a serem atualizados, e não aqueles listados como mantidos, mas o seguinte deve funcionar mesmo se essas linhas não estiverem presentes em suas apt upgradesaídas):

$echo -e 'n' | sudo apt-get dist-upgrade | awk '
/be installed|be upgraded/{f=1;next}; /not upgraded|kept back/{f=0}f' | awk '
BEGIN {RS=" ";} {print $0}
' | grep . > apt_get_dist_list

$echo -e 'n' | sudo apt-get upgrade | awk '
/be installed|be upgraded/{f=1;next}; /not upgraded|kept back/{f=0}f' |  awk '
BEGIN {RS=" ";} {print $0}
' | grep . > apt_get_upgrade_list

e quando comparo as duas saídas com:

$diff apt_get_dist_list apt_get_upgrade_list | grep -E '<|>'

no meu caso recebo o seguinte:

< gir1.2-nm-1.0
< libcpupower2
< linux-kbuild-5.2
< blueman
< linux-cpupower
< linux-headers-amd64
< linux-image-amd64
< pdf-parser

O que torna a diferença bastante clara, especialmente dada a presença de linux-header-*e linux-image-*emapt-get dist-upgrade

Agora, se eu repetir o mesmo processo para apt upgradeeapt full-upgrade

$echo -e 'n' | sudo apt upgrade | awk '
/be installed|be upgraded/{f=1;next}; /not upgraded|kept back/{f=0}f' | awk '
BEGIN {RS=" ";} {print $0}
' | grep . > apt_upgrade_list

$echo -e 'n' | sudo apt full-upgrade | awk '
/be installed|be upgraded/{f=1;next}; /not upgraded|kept back/{f=0}f' | awk '
BEGIN {RS=" ";} {print $0}
' | grep . > apt_fullupgrade_list

e compare:

 $diff apt_get_dist_list apt_fullupgrade_list | grep -E '<|>'

Não recebo nada, como esperado, porque apt full-upgradee apt-get dist-upgradedevem se comportar exatamente da mesma maneira, mas quando comparo:

$diff apt_get_upgrade_list apt_upgrade_list | grep -E '<|>'

Eu recebo a mesma saída que ao comparar apt-get upgrade with apt-get dist-upgrade.

> gir1.2-nm-1.0
> libcpupower2
> linux-kbuild-5.2
> blueman
> linux-cpupower
> linux-headers-amd64
> linux-image-amd64
> pdf-parser

e a única conclusão a que posso chegar é que apt upgradeé exatamente o mesmo que o apt full-upgradeque também o torna o mesmo que apt-get dist-upgrade, o que significa que não apenas é apt upgraderedundante, mas o que também é mais preocupante é que atualmente apt não permite o mesmo comportamento como apt-get upgrade.

apt package-management
  • 1 respostas
  • 12873 Views
Martin Hope
NetIceGear
Asked: 2019-08-01 18:54:01 +0800 CST

Por que o comando groupmems pede uma senha mesmo quando executado como root

  • 1

O groupmemscomando que nos permite editar a associação de grupo tem uma característica peculiar: quando executado como root, ele novamente solicita a senha de root ao tentar editar qualquer associação de grupo para qualquer usuário do sistema.

Na verdade, ele até age pela senha do root preventivamente, antes de verificar se tal grupo existe (verifica se o usuário existe antes de solicitar a senha)

Se você, por exemplo, executar groupmems -g 12345 -a nobodycomo root, ele solicitará que você digite a senha de root de qualquer maneira, antes de informar que o grupo 12345 não existe.

Por que (e na verdade como também) é feito dessa maneira para esse comando específico, dada a onipotência de rootquando se trata passwd /etc/sudoerse bem... todo o resto.

Além disso, esta parte tirada diretamente doman groupmems

O comando groupmems permite que um usuário administre sua própria lista de membros de grupo sem o requisito de privilégios de superusuário. O utilitário groupmems é para sistemas que configuram seus usuários para estarem em seu próprio grupo primário (ou seja, convidado / convidado).

Apenas o superusuário, como administrador, pode usar groupmems para alterar as associações de outros grupos.

me faz pensar o que aconteceria se eu removesse rootdo grupo root. O root então possivelmente perderia privilégios para se adicionar de volta ao grupo rootcom groupmems? (Eu não queria tentar isso ainda não sabendo como esse groupmemscomando se comporta

Quando tentei ler sobre isso e os grupos usando, manacabei chegando a este boato interessante:

O arquivo /etc/group é um arquivo de texto que define os grupos no sistema. Há uma entrada por linha, com o seguinte formato:

group_name:password:GID:user_list

Eu pessoalmente nunca defini uma senha para um groupno linux. O que faria/realizaria/ajudaria? Quando seria perguntado em vez da senha do usuário com privilégios particulares? A senha de cada usuário que pertence a esse grupo específico funcionaria como a senha do grupo também?

Uma última coisa da man groupe esta da qual podemos pelo menos rir:

Como a página de manual do 4.2BSD initgroups(3) diz: ninguém parece manter o /etc/group atualizado.

group root
  • 1 respostas
  • 403 Views
Martin Hope
NetIceGear
Asked: 2019-03-06 10:28:22 +0800 CST

Razões legítimas para um programa interceptar, manipular internamente e ignorar o sinal SIGINT

  • 2

Sabemos que - além de SIGKILLe SIGSTOP- um programa pode interceptar sinais IPC e executar seu manipulador interno contornando a operação do manipulador padrão.

Posso pensar em pelo menos uma razão muito boa para fazer isso com o SIGINTsinal.

  • Ou seja, implementar um manipulador de sinal que executa um último backup, salva um despejo de memória ou grava no log, antes de reverter para a operação de sinal padrão que encerra o processo.

Também consigo pensar em uma boa razão pela qual um malware pode capturar e bloquear o SIGINT:

  • Ou seja, para estender o tempo de execução do processo. Para a maioria dos usuários, Ctrl+ Cé o atalho de teclado para a maioria dos usuários de terminal e há muitos que desconhecem o Ctrl+ Z( SIGTSTPque apenas interrompe o processo, que permanece entre o terminal jobs), sem falar no Ctrl+ \, que envia o SIGQUITe cria um despejo de núcleo.

  • Se Ctrl+ Cfor pego e bloqueado, esses usuários provavelmente tentarão abrir outra janela de terminal e executarão algo como:

    ps aux | grep [process name]
    

    obtenha o PID do processo e execute o SIGKILL com

    kill -9 [$PID]
    
  • Da mesma forma, os usuários que se conectam a uma sessão de terminal em uma máquina remota tentarão fazer uma segunda conexão com uma nova sessão de terminal e passarão por um processo/pesquisa PID semelhante para encerrar o culpado. Obviamente, essa tática pode estender o tempo de execução do processo por apenas um curto período, mas mesmo 3 minutos extras de um processo de transferência de arquivos usando uma conexão de alta largura de banda de 10 MB/s transferirão quase 2 GB de dados adicionais, então certamente há algum mérito em isto.

No entanto, recentemente notei - talvez apenas porque comecei a prestar atenção nisso - que existem programas que aparentemente se enquadram em outro subconjunto.

  • Esses programas, que são de código aberto e têm pacotes mantidos e examinados de perto o suficiente para esconder um grande pedaço de código de malware parece altamente improvável.

  • Eles não assumem o controle da entrada do teclado como vime outros editores de texto

  • Eles têm manipuladores internos que capturam o SIGINT e o ignoram completamente. Não há finalização eventual do processo e, até onde sabemos, nenhuma tarefa crítica de última hora é tentada.

Minha pergunta :

  • Existe uma possível razão pela qual um processo pode optar por interceptar, mas descartar o SIGINT completamente para um propósito legítimo?

  • Em outras palavras, pode haver uma boa razão (do ponto de vista do código ou do sistema) ou situação em que capturar e ignorar SIGINT é mais vantajoso do que sua operação padrão conhecida que encerraria o processo em execução?

bash terminal
  • 1 respostas
  • 519 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