![Existe um BSD equivalente a "!!"?](https://rvso.com/image/1267757/Existe%20um%20BSD%20equivalente%20a%20%22!!%22%3F.png)
Muitas vezes me pego emitindo um comando para o qual não tenho os privilégios elevados adequados.
No Ubuntu eu poderia usar
sudo !!
Isso emitiria o mesmo comando com privilégios sudo. Existe um equivalente no OpenBSD?
Editar: eu deveria ter sido mais específico sobre qual versão do OpenBSD. Estou usando o OpenBSD 4.8, onde o sudo parece estar instalado por padrão. Já criei um usuário além do root e editei meu arquivo sudoers para permitir que esse usuário use o sudo.
Minha pergunta é: já existe um atalho integrado para o "!!" para usar o comando anterior.
Responder1
sudo
é um pacote de software independente que iniciou o desenvolvimento pelo menos uma década antes do Ubuntu ou OpenBSD.
Eu sugiro que você use o pkg_add do OpenBSD para colocar isso em seu sistema, mas o próprio FAQ do OpenBSD parainstalando um novo pacotetem um exemplo que usa sudo
, então já deve estar instalado.
Funciona !!
sozinho (ou seja, sem sudo
)? Caso contrário, você pode estar configurado para usar um shell diferente daquele usado no Ubuntu.
Responder2
Só para deixar claro todas as outras respostas, !!
faz parte do mecanismo de histórico do shell. Acho que o problema não é com o sudo, mas com o seu shell, ou mais especificamente com o seu shell quando você é root.
Já faz muito tempo que não joguei com nenhum dos BSDs, mas eles tendem a ser UNIXes mais 'tradicionais', o que significa que ainda usam um shell Bourne real (leia-se: não tão apresentado quanto o bash) como shell do root. Shell Bourne 'real', neste caso, significa nenhum mecanismo de histórico. Isto ocorre por motivos de recuperação do sistema.(*)
Ao fazer login no root, você pode executar um shell com histórico, faça exec /bin/bash
ou exec /bin/tcsh
como desejar.
O velho truque costumava ser ter uma conta root equiv, geralmente chamada de 'toor', que tinha um shell de login tcsh ou bash, o mesmo diretório inicial e uid 0. Você não faria sudo para root, você faria sudo toor
, e então seria na festa. Não tenho certeza de qual é a nova gostosura, talvez
(*) O motivo, o shell do root é /sbin/sh e está vinculado estaticamente. Significa que tem o número mínimo de dependências. Se o seu shell for /bin/bash e tiver dependências de biblioteca em /usr, e agora /usr estiver esgotado, você não terá shell. Se o seu shell for /sbin/sh, então se pelo menos /sbin for montável, você poderá fazer algum trabalho.
Responder3
Este site deve ser de alguma ajuda para você:http://linux-bsd-sharing.blogspot.com/2009/03/howto-using-sudo-on-freebsd.html
Além disso, no BSD, as tarefas administrativas geralmente são realizadas diretamente na conta do usuário root. No Ubuntu, a conta de administrador root está desabilitada e todas as tarefas administrativas são realizadas através da conta do usuário e verificadas pelo programa sudo.
Quando você instalou o BSD, ele deveria ter perguntado qual você deseja que fosse sua senha de root, você deveria ser capaz de fazer login no root usando a senha que você especificou. Se o login de root local estiver desabilitado no Gnome (ou o que quer que você esteja usando como área de trabalho), você poderá fazer login como root com o comando "su -" em um terminal e ele deverá solicitar sua senha de root. Depois de fazer login como root, você pode fazer o que quiser porque essa conta tem todos os privilégios.
Geralmente é desencorajado fazer login como root e executar tudo dessa maneira por motivos de segurança. Qualquer programa executado como root possui privilégios de root. Isso significa que se você executar um programa projetado para excluir tudo do seu disco rígido, ele terá permissão para fazer isso. É por isso que você deve sempre ter cuidado ao fazer login no root, basta fazer o login e fazer o que for necessário. Quando terminar, volte para sua conta de usuário apenas por segurança.
Responder4
O OpenBSD tem sua própria implementação embutida no sistema base, então se o seu usuário estiver no /etc/sudoers
arquivo, então o problema pode ser que seu shell é provavelmente o Bourne padrão sh
, que não fornece a mesma funcionalidade com a qual você está acostumado no Ubuntu.
Acredito que você pode instalar o bash usando o comando pkg_add -r bash
e depois configurá-lo chsh -s /usr/local/bin/bash
(acredito que seja o caminho correto, estou mais familiarizado com o FreeBSD, mas acho que o sistema de portas/pacotes é semelhante em ambos).