Existe um BSD equivalente a “!!”?

1

Muitas vezes me vejo emitindo um comando para o qual não tenho privilégios elevados adequados.

No Ubuntu eu poderia usar

sudo !!

Isso emitiria o mesmo comando com privilégios sudo. Existe um equivalente no OpenBSD?

Edit: 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. Eu já criei um usuário além do root e editei meu arquivo sudoers para permitir que esse usuário usasse o sudo.

Minha pergunta é: já existe um atalho interno para o "!!" para usar o comando anterior.

    
por CT. 07.03.2011 / 14:57

7 respostas

4

sudo é um pacote de software independente que começou o desenvolvimento pelo menos uma década antes do Ubuntu ou do OpenBSD.

Eu sugiro que você use o pkg_add do OpenBSD para colocar isso no seu sistema, mas o FAQ do OpenBSD para instalar um novo pacote tem um exemplo que usa sudo , então ele já deve estar instalado.

O !! funciona sozinho (ou seja, sem sudo )? Se não, você pode estar configurado para usar um shell diferente do que você usa no Ubuntu.

    
por 07.03.2011 / 15:38
3

Para ficar claro com todas as outras respostas, !! faz parte do mecanismo de histórico do shell. Eu acho que o problema não é com o sudo, mas com o shell, ou mais especificamente com o shell quando você é root.

Já faz muito tempo desde que eu toquei com qualquer um dos BSDs, mas eles tendem a ser mais UNIXes 'tradicionais', significando que eles ainda usam um shell Bourne real (leia-se: não como caracterizado como bash) como shell do root. 'Real' Bourne shell, neste caso, não significa nenhum mecanismo de histórico. Isso é por razões de recuperação do sistema. (*)

Ao efetuar login no root, você pode executar um shell com histórico, faça exec /bin/bash ou exec /bin/tcsh como desejar.

O truque antigo 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 o uid 0. Você não poderia usar o sudo para root.sudo toor e, em seguida, estar em bash. Eu não tenho certeza do que é a nova gostosura, talvez

(*) O motivo, o shell do root é / sbin / sh e estaticamente vinculado. Significa que tem o número mínimo de dependências. Se o seu shell é / bin / bash e tem dependências de biblioteca em / usr, e agora / usr é gorked, você não tem shell. Se o seu shell é / sbin / sh, então se pelo menos o / sbin for montável, você pode fazer algum trabalho.

    
por 07.03.2011 / 23:22
2

Este site deve ajudá-lo: link

Além disso, as tarefas administrativas do BSD geralmente são atendidas diretamente a partir da conta de usuário root. No Ubuntu, a conta de administrador root é desabilitada e todas as tarefas administrativas são feitas através da conta do usuário e verificadas ok pelo programa sudo.

Quando você instalou o BSD, ele deve ter perguntado o que você quer que sua senha root seja, você deve ser capaz de logar no root usando a senha que você especificou. Se o login da raiz local estiver desabilitado no Gnome (ou o que você estiver usando como sua área de trabalho), então você pode logar como root com o comando "su -" em um terminal e ele deve pedir sua senha root. Uma vez que você está logado como root, você pode fazer o que quiser, porque essa conta tem todos os privilégios.

Em geral, é desencorajado fazer login como root e executar tudo dessa maneira devido a razões de segurança. Qualquer programa que você execute como root tem privilégios de root. Isso significa que, se você executar um programa que foi projetado para excluir tudo em seu disco rígido, ele terá permissão para 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 para estar seguro.

    
por 07.03.2011 / 15:09
2

Como outros apontaram, o problema não é Linux vs. BSD, mas sim qual shell você está usando. Mas, como uma nota lateral ao comentário de Rich Homolka, existe uma maneira segura de ter um shell diferente como root quando você entra em um sistema BSD. Basta adicionar isso ao final do seu perfil.

bash && exit 0

Se o bash falhar por algum motivo você simplesmente entra no sh (não o mude no arquivo de senhas mestres, é claro) e, se for bem-sucedido, você será desconectado quando sair (logout) do bash.

    
por 19.06.2012 / 20:46
0

O OpenBSD tem sua própria implementação embutida no sistema base, portanto, se seu usuário estiver no arquivo /etc/sudoers , o problema pode ser que seu shell é provavelmente o padrão Bourne sh , que não fornece a mesma funcionalidade você pode estar acostumado a partir do Ubuntu.

Eu acredito que você pode instalar o bash usando o comando pkg_add -r bash , e então configurá-lo com chsh -s /usr/local/bin/bash (acredito que seja o caminho correto, estou mais familiarizado com o FreeBSD, mas acho que o sistema ports / package é semelhante em ambos).

    
por 07.03.2011 / 16:12
0

O OpenBSD, por padrão, usa uma variante do shell Korn (pdksh para ser preciso). Ele suporta o mecanismo do !! , mas precisa ser avisado para ativá-lo (como encontrado na ksh(1) manpage):

set -o csh-history

Basta colocar isso no seu .klogin se você quiser.

    
por 02.10.2013 / 21:55
-1

Basta instalar o sudo:

# pkg_add -r sudo

-ou -

# cd /usr/ports/security/sudo
# make install
    
por 07.03.2011 / 15:57