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

炸鱼薯条德里克's questions

Martin Hope
炸鱼薯条德里克
Asked: 2019-06-21 21:42:42 +0800 CST

Como o Linux verifica a permissão para o descritor de arquivo?

  • 5

Quando um processo obtém um fd com sucesso usando open(flags=O_RDWR), ele poderá ler/gravar nesse arquivo desde que o fd não esteja fechado (arquivo regular no sistema de arquivos local), mesmo que algum outro processo use chmod para cancelar a leitura/gravação permissão para o usuário correspondente. O kernel do Linux verifica as permissões de arquivo no inode ou na descrição do arquivo aberto? Mas e quando o processo tentar executar esse arquivo usando execveat, o kernel lerá o disco para verificar a permissão x bit e suid bit? Que tipo de permissões são registradas na descrição do arquivo aberto, ele contém uma ACL completa ou um bit simplesmente legível/gravável para que todas as outras operações ( execveat, fchdir, fchmod, etc) verifiquem as informações no disco?

E se eu transferir este fd para outro processo de outro cujo fsuid não tenha um bit de leitura/gravação/execução nesse arquivo (de acordo com as informações do sistema de arquivos no disco), esse processo receptor será capaz de ler/gravar/executar o arquivo através do fd?

linux permissions
  • 2 respostas
  • 2444 Views
Martin Hope
炸鱼薯条德里克
Asked: 2019-05-06 18:37:17 +0800 CST

Sobre como montar e desmontar montagens herdadas dentro de um namespace de montagem recém-criado

  • 4

Experimento 1

De fora do namespace, cat /proc/self/mountinfodá

291 34 0:37 / /tmp/IMJUSTTMP rw,relatime shared:152 - tmpfs tmpfs rw,size=102400k
34 23 0:32 / /tmp rw,nosuid,nodev shared:16 - tmpfs tmpfs rw

Então eu corro unshare -mU --map-root-user --propagation private /usr/bin/zshpara obter um novo shell dentro de um namespace, mas dentro do namespace mount recém-criado, não consigo umount /tmp/IMJUSTTMP, umountapenas me diga que não está montado. Embora eu possa verificar o namespace de montagem recém-criado por cat /proc/self/mountinfo, que fornece montagem privada

290 263 0:32 / /tmp rw,nosuid,nodev - tmpfs tmpfs rw
302 290 0:37 / /tmp/IMJUSTTMP rw,relatime - tmpfs tmpfs rw,size=102400k

Então, por que recebo umount: /tmp/IMJUSTTMP: not mounted.quando tento desmontar /tmp/IMJUSTTMPdentro do namespace?

Estou usando 5.0.9-arch1-1-ARCH, com kernel.unprivileged_userns_clone = 1.

Experimento 2

Depois unshare -mU --map-root-user --propagation private /usr/bin/zshde , tentar criar um overlayfs também falha.

mkdir -p /tmp/IMJUSTTMP/work
mkdir /tmp/IMJUSTTEST
mount -t tmpfs -o size=100m tmpfs /tmp/IMJUSTTMP
mount -t tmpfs -o size=200M tmpfs /tmp/IMJUSTTEST

Todos terão sucesso conforme o esperado, enquanto todos os itens a seguir entrariam permission deniedno namespace.

mount -t overlay -o "lowerdir=/home/xtricman,upperdir=/tmp/IMJUSTTMP/,workdir=/tmp/IMJUSTTMP/work" overlay /home/xtricman
mount -t overlay -o "lowerdir=/tmp/IMJUSTTEST,upperdir=/tmp/IMJUSTTMP,workdir=/tmp/IMJUSTTMP/work" overlay /mnt

Adivinhação minha

Encontrei essas duas perguntas: Dentro de um namespace de usuário, por que não tenho permissão para remontar um sistema de arquivos que montei? e Por que não posso ligar "/" dentro de um namespace de usuário? Parece que, como eu herdo o /tmp/IMJUSTTMPand /tmpmount, não posso desmontá-los, mesmo que tenha recursos completos no namespace de usuário proprietário do namespace mount recém-criado.

Pergunta

Alguém pode explicar o que exatamente está acontecendo dos dois experimentos? Existe algum documento mencionando o comportamento detalhado do kernel de montagem e desmontagem dentro de um namespace de montagem? Qual é o "proprietário do superbloco" conforme mencionado neste commit do kernel e Por que não posso ligar "/" dentro de um namespace de usuário? ?

linux-kernel mount
  • 1 respostas
  • 872 Views
Martin Hope
炸鱼薯条德里克
Asked: 2019-04-24 21:10:02 +0800 CST

O que são "informações específicas do sistema de arquivos" em `/proc/self/mountinfo`?

  • 1

A página de manual /proc/pid/mountinfo disse que tem o campo

36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue

(1)(2)(3)   (4)   (5)      (6)      (7)   (8) (9)   (10)         (11)

(10) fonte de montagem: informações específicas do sistema de arquivos ou "nenhuma".

O que esse campo (10) significa exatamente? Eu obtive um resultado estranho do meu próprio experimento

279 23 7:0 /file//deleted /home/xtricman/file_mnt_point rw,relatime shared:158 - ext4 /dev/loop0 rw
301 23 7:0 /file2//deleted /home/xtricman/file_mnt_point2 rw,relatime shared:158 - ext4 /dev/loop0 rw
268 23 7:0 / /mnt rw,relatime shared:159 - ext4 /dev/loop0 rw
313 23 7:0 / /home/xtricman/home_mnt rw,relatime shared:183 - ext4 /home/xtricman/loop1 rw

/dev/loop0é criado automaticamente pelo mountprograma quando eu o faço mount a.ext4 /mnte /home/xtricman/loop1é criado manualmente pelo mknod loop1 b 7 0.

Então, acho que posso explicar a maioria dos resultados que vejo, mas por que o caminho do nó do dispositivo aparece no campo (10)? Estou usando o kernel Linux 5.0.4 no ArchLinux, se isso importa.

linux mount
  • 1 respostas
  • 971 Views
Martin Hope
炸鱼薯条德里克
Asked: 2019-03-21 23:46:16 +0800 CST

Por que posso usar a roda do mouse para rolar a página do manual no terminal xfce4?

  • 1

manem si não deve saber nada sobre a roda do mouse, e a barra de rolagem da janela do terminal xfce4 não muda, então ...

O xfce4-terminal enviou algo para o pty master fd quando a janela captura o evento da roda do mouse do servidor X?

Se sim, o que grava no dispositivo pty para agir como se eu tivesse pressionado a Downtecla?

Ou estou completamente perdendo alguma coisa?

terminal-emulator xfce4-terminal
  • 1 respostas
  • 432 Views
Martin Hope
炸鱼薯条德里克
Asked: 2019-02-24 04:39:58 +0800 CST

Posso desmontar ou remontar um sistema de arquivos, quando algum processo tem seu diretório de trabalho ou raiz nele?

  • 2

Se algum processo tiver seu diretório de trabalho atual ou diretório raiz em um sistema de arquivos montado, posso desmontar/remontar esse sistema de arquivos?

Se algum processo tiver um descritor de arquivo de leitura/gravação ou mmap de leitura/gravação/compartilhado de um arquivo em um sistema de arquivos montado, posso remontar esse sistema de arquivos para somente leitura? Se sim, o que acontecerá com esses descritores de arquivo e mmaps quando você escrever neles?

linux mount
  • 1 respostas
  • 1138 Views
Martin Hope
炸鱼薯条德里克
Asked: 2019-02-24 04:33:18 +0800 CST

O kernel garantirá que os sistemas de arquivos estejam em um estado limpo quando reiniciar/desligar?

  • 1

O que o reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_POWER_OFF, NULL)syscall faz com os sistemas de arquivos exatamente?

Eu sei que alguns dados de cache na memória ainda serão perdidos, mas se eu nunca chamar umount()(ou umount failed) antes reboot(), é possível que eu acabe com um sistema de arquivos quebrado que não pode ser mount()tão rw novamente diretamente?

Eu sei que isso depende do tipo de sistema de arquivos, então gostaria de saber mais detalhes sobre sistemas de arquivos de diário e sistemas de arquivos mais simples como ext2.

linux filesystems
  • 2 respostas
  • 442 Views
Martin Hope
炸鱼薯条德里克
Asked: 2019-02-07 17:17:16 +0800 CST

Como devo passar argumentos de 32 bits para syscalls do Linux em x86_64?

  • 1

Se uma syscall precisa de alguns argumentos de 32 bits como uid_tou int(para descritores de arquivo) unsigned intou mesmo algum tipo de 16 bits, como posso passá-los usando registradores de 64 bits?

Preciso estender zero ou estender sinal para 64 bits antes de usar a syscallinstrução?

E se eu usar __X32_SYSCALL_BITno RAX para que o argumento do tipo ponteiro de 64 bits original se torne 32 bits, ainda preciso usar o mesmo registro de 64 bits para passar o argumento, preciso estender zero argumentos de endereço nesses casos?

linux x86
  • 1 respostas
  • 551 Views
Martin Hope
炸鱼薯条德里克
Asked: 2019-02-07 08:21:48 +0800 CST

Como o mmap funciona com x32 ABI?

  • 1

Estou olhando para o código-fonte do Linux 5.0-rc5 em arch/x86/entry/syscalls/syscall_64.tbl, descobri que não há um número syscall separado para x32 mmap.

Então, como o kernel sabe que estamos usando a ABI x32 no espaço do usuário para não nos fornecer um endereço mapeado além de 4GiB?

Ou, em geral, como syscalls que podem retornar um endereço sabem que estamos usando x32 e não devem retornar um endereço além de 4GiB?

linux-kernel x86
  • 2 respostas
  • 337 Views
Martin Hope
炸鱼薯条德里克
Asked: 2019-01-17 00:38:34 +0800 CST

Como restaurar um arquivo excluído enquanto ele ainda está sendo aberto?

  • 3

eu tentei

xtricman⚓ArchVirtual⏺️~?ls /proc/self/fd/ -l
Total 0
lrwx------ 1 xtricman users 64 1月  16 16:34 0 -> /dev/pts/0
lrwx------ 1 xtricman users 64 1月  16 16:34 1 -> /dev/pts/0
lrwx------ 1 xtricman users 64 1月  16 16:34 2 -> /dev/pts/0
lrwx------ 1 xtricman users 64 1月  16 16:34 3 -> '/home/xtricman/a (deleted)'
lr-x------ 1 xtricman users 64 1月  16 16:34 4 -> /proc/1273/fd
xtricman⚓ArchVirtual⏺️~?ln /proc/self/fd/3 b
ln: failed to create hard link 'b' => '/proc/self/fd/3': Invalid cross-device link

Como o inode ainda está no disco, como posso recriar um nome para ele? E se não houver descrição de arquivo aberto apontando para esse inode, mas esse inode estiver mapeado? Como posso restaurá-lo nesse caso?

linux-kernel
  • 2 respostas
  • 520 Views
Martin Hope
炸鱼薯条德里克
Asked: 2019-01-07 06:09:42 +0800 CST

De onde vem o `/dev/pts/ptmx`? [duplicado]

  • 4
Essa pergunta já tem resposta aqui :
Por que `/dev/ptmx` e `/dev/pts/ptmx` não são arquivos de dispositivo? (1 resposta)
Fechado há 3 anos .

No meu Archlinux, /dev/ptsé montado pelos devpts, então quem criou o /dev/pts/ptmxnó do dispositivo? Qual é o objetivo deste nó? é o mesmo nó de dispositivo (Major=5 Minor=2) igual a /dev/ptmx/, mas com modo de acesso diferente, para quê?

linux pty
  • 1 respostas
  • 2192 Views
Martin Hope
炸鱼薯条德里克
Asked: 2019-01-03 00:39:14 +0800 CST

O kernel do Linux verifica as permissões de arquivo no inode ou na descrição do arquivo aberto?

  • 3

Eu escrevi este código de teste e descobri que esse programa sempre pode ler o arquivo com sucesso, mesmo depois que eu cancelei a permissão de leitura ao executar o getchar().

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdint.h>
#include <sys/types.h> 
int main(){
    int f = open("a.txt",O_RDONLY);
    uint8_t data[200];
    printf("Got %d from read", pread(f, (void *)data, 200, 0));
    getchar();
    printf("Got %d from read", pread(f, (void *)data, 200, 0));
}

Este programa imprimiu

Tenho 9 de leitura

duas vezes, mesmo que eu use chmod a-r a.txtdurante a pausa.

Tenho certeza de que sou apenas um usuário normal e meu processo não tem CAP_DAC_OVERRIDE; por que o segundo não pread()retorna nenhum erro?

Meu palpite é que, ao fazer leitura/gravação, o kernel apenas verifica a permissão do arquivo na descrição do arquivo aberto, que é criada com open(), e não altera mesmo que eu tenha alterado a permissão do arquivo no sistema de arquivos subjacente.

Meu palpite está correto?

Pergunta extra :

  • Se eu estiver certo sobre isso, que tal as regiões mapeadas?

  • O kernel apenas verifica as permissões registradas na tabela de páginas quando eu leio/escrevo/executo essa região mmaped?

  • Esses dados verdadeiros do inode armazenados no sistema de arquivos são usados ​​apenas ao criar a descrição do arquivo aberto e a região mmap?

linux-kernel permissions
  • 1 respostas
  • 2156 Views
Martin Hope
炸鱼薯条德里克
Asked: 2018-12-29 21:51:03 +0800 CST

Como journald sabe o PID de um processo que produz dados de log?

  • 4

Quando olho para journalctl, ele me diz o PID e o nome do programa (ou nome do serviço?) de uma entrada de log.

Então eu me perguntei, os logs são criados por outros processos, como systemd-journaldsaber o PID desses processos quando os processos podem apenas gravar strings brutas no soquete do domínio unix que systemd-journaldestá ouvindo. Além disso, sytemd-journaldsempre use a mesma técnica para detectar o PID de um dado de log, mesmo quando os processos estiverem produzindo log usando funções como sd_journal_sendv()?

Existe alguma documentação que eu deveria ler sobre isso?

Eu li a resposta do JdeBP e sei systemd-journaldescutar em um Unix Domian Socket, mas mesmo sabendo o endereço do soquete do peer que envia a mensagem de log, como ele sabe o PID? E se esse soquete de envio for aberto por muitos processos não pai-filhos?

ipc systemd-journald
  • 2 respostas
  • 1916 Views
Martin Hope
炸鱼薯条德里克
Asked: 2018-12-18 22:12:54 +0800 CST

Qual é a unidade de partições de discos rígidos?

  • 0

Eu sei que a unidade na tabela de partição é o setor. Mas é o tamanho do setor físico ou o tamanho do setor lógico?

Quando o tamanho do setor lógico é diferente do tamanho do setor físico, como o kernel linux e as ferramentas de partição lidam com o tamanho da partição, uma vez que os números na tabela de partição são sempre registrados como número de setores.

linux hard-disk
  • 1 respostas
  • 60 Views
Martin Hope
炸鱼薯条德里克
Asked: 2018-12-12 21:04:33 +0800 CST

O kernel linux implementado tty sempre renderiza dados usando UTF-8?

  • 4

Parece tão. Eu li IUTF8 , mas o documento apenas disse que permite que você manipule a entrada como UTF-8 ao fazer a edição de linha.

Mas e a saída? Se você usa um Terminal GUI, ele geralmente permite que você altere a codificação para renderizar bytes no buffer de saída do pty, mas e o tty implementado pelo kernel?

O Linux sempre renderiza bytes no buffer de saída do tty usando UTF-8?

linux tty
  • 1 respostas
  • 404 Views
Martin Hope
炸鱼薯条德里克
Asked: 2018-11-20 22:42:53 +0800 CST

Por que recebo permissão negada ao usar descompartilhar?

  • 1

Estou explorando o recurso de namespace do kernel linux, usando o Archlinux. Mas recebi uma mensagem que não consigo explicar o motivo, alguém poderia me explicar?

xtricman⚓ArchVirtual⏺️~?export LANG=en_US.UTF-8
xtricman⚓ArchVirtual⏺️~?unshare --propagation private -r bash
Could not get property: Access denied
root⚓⏺️~?mount -o remount,ro /
mount: /: permission denied.

Com base no ArchWiki , eu POSSO criar um namespace de usuário usando minha conta normal, e eu faço, mas por que recebo a Could not get property: Access deniedmensagem?

Com base em manpage , o processo bash recém-criado tem capacidade total no novo namespace, então por que recebo a mensagem "permissão negada" quando tentei montar? Existe alguma coisa relacionada com a capacidade do arquivo? Como posso verificar os recursos atuais que o processo bash atual possui?

linux-kernel namespace
  • 1 respostas
  • 1284 Views
Martin Hope
炸鱼薯条德里克
Asked: 2018-10-05 06:20:57 +0800 CST

Todos os argumentos do kernel são realmente usados ​​pelo kernel?

  • 12

Por que o Linux permite 'init=/bin/bash'?

Eu li isso, as respostas estão dizendo que é o KERNEL executando este programa init.

Então comecei a me perguntar, o Linux geralmente vem com um initramfs, que eventualmente será montado e pivot_root no sistema de arquivos raiz real. Então, o que esse initargumento significa? O caminho no initramfs? Ou como eu imaginei, não é lido pelo kernel, mas pelo init do initramfs para executar o init real.

Além disso, o root=UUID=xxxxargumento é que isso é realmente lido pelo kernel ou apenas pelo init do initramfs para encontrar o sistema de arquivos raiz real?

Parece que posso passar qualquer argumento que quiser como argumentos do kernel, então todos eles são lidos pelo kernel ou pelo menos alguns deles são significativos apenas para programas de espaço do usuário?

linux-kernel
  • 2 respostas
  • 2116 Views
Martin Hope
炸鱼薯条德里克
Asked: 2018-10-04 01:10:22 +0800 CST

Os dispositivos pty têm dois buffers de entrada?

  • 3

Quando os dispositivos do terminal estão no modo cozido, os bytes de entrada no terminal são armazenados em cache e processados ​​pelo kernel, alguns bytes são usados ​​para edição de linha e "consumidos", readretornando uma linha por vez.

Mas para pty, Output to master fd pode ser lido como entrada do slave fd e vice-versa, então minha pergunta é:

Os dispositivos pty têm dois buffers de entrada independentes, ao contrário do tty, um buffer por dispositivo tty?

linux terminal
  • 1 respostas
  • 388 Views
Martin Hope
炸鱼薯条德里克
Asked: 2018-09-27 17:17:03 +0800 CST

Por que um script sem she-bang pode ser executado? [duplicado]

  • 1
Essa pergunta já tem respostas aqui :
Qual interpretador de shell executa um script sem shebang? (3 respostas)
Fechado há 4 anos .

Pelo que entendi, para tornar o kernel execveum arquivo não-ELF, o arquivo deve ser um script iniciado com um she-bang #!, mas tenho um script executado com sucesso sem ele, por que isso acontece?

xtricman⚓ArchVirtual⏺️~?ls a.sh -l
-r-xr-xr-x 1 xtricman users 23 9月  26 18:45 a.sh
xtricman⚓ArchVirtual⏺️~?cat a.sh
echo "FDHDSFHGFKJJHGO"
xtricman⚓ArchVirtual⏺️~?./a.sh
FDHDSFHGFKJJHGO

Este a.shscript não contém um she-bang, então como ele funciona?

shell-script linux-kernel
  • 1 respostas
  • 189 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