Existe uma maneira de parar de escrever 'sudo' para cada pequena coisa no Linux?

59

Em breve, estarei realizando bastante trabalho em PHP e estou interessado em aprender o RoR; por isso, instalei o Linux Mint 12 no meu VirtualBox.

O aspecto mais frustrante do switch, até agora, foi lidar com as permissões do Linux. Parece que não posso fazer nada de útil (por exemplo, copiar o tarball do Symfony2 do meu diretório Downloads para a raiz do meu documento e extraí-lo) sem me apresentar como raiz via sudo.

Existe uma maneira fácil de dizer ao linux para me dar acesso irrestrito a determinados diretórios sem simplesmente abrir todas as suas permissões?

Principais Produções
fonte
11
Muitas distorções terão um grupo habilitado para editar a configuração de vários utilitários do sistema. Coloque-se nesse grupo e abra um novo shell.
dmckee
Seria melhor apontar a raiz do documento para algo no meu diretório Home?
3
O 'sudo' é um daqueles comandos ridículos que estão sendo usados ​​e abusados ​​com muita frequência pelos novos usuários do Linux. Muitas vezes, vejo tutoriais na web em que 15 comandos seguidos usarão o sudo? Em situações normais, você não precisa de permissões especiais enquanto estiver conectado como um usuário comum (recomendado). Eu estava em uma empresa onde tudo o que eles faziam usava sudo. Quando tentei bani-lo (por razões de segurança), eles reclamaram. Depois de examinar o arquivo de configuração sudo enigmático, vi uma falha (como sempre) que me permitiu 'root' o sistema a partir desse usuário comum. Sudo é extremamente perigoso !!
Jeach

Respostas:

77

Duas opções me vêm à mente:

  1. Possui o diretório que você deseja usando chown:

    sudo chown your_username directory 
    

    (substitua seu_username pelo seu nome de usuário e diretório pelo diretório que você deseja.)

  2. A outra coisa que você pode fazer é trabalhar como root desde que SAIBA O QUE ESTÁ FAZENDO . Para usar o root, faça:

    sudo -s
    

    e então você pode fazer qualquer coisa sem precisar digitar sudoantes de cada comando.

mtahmed
fonte
"A outra coisa que você pode fazer é trabalhar como root desde que SAIBA O QUE ESTÁ FAZENDO. Para usar o root faz ..." - Bem, isso desfaz a melhor prática que as distros e a comunidade de segurança tentam ensinar aos usuários. Relacionado: "qual é o princípio do menor privilégio" .
16

De um modo geral, sempre trabalhe como seu próprio usuário, a menos que você esteja fazendo algo com impacto em todo o sistema.

Se houver arquivos que você deseja colocar em seu servidor da web, trabalhe como seu próprio usuário e use-o sudopara soltar os arquivos na área de serviço da web do seu sistema de arquivos. Normalmente, isso seria executado por um script de instalação e você executaria algo como sudo -u webmaster install-webserver-files, ou melhor sudo -u webmaster git update(ou o sistema de controle de versão de sua escolha).

Se você estiver trabalhando em um servidor de desenvolvimento e desejar que seus arquivos sejam acessíveis instantaneamente, crie um diretório na área de servidores da Web e torne-o de propriedade ou pelo menos gravável por você. Após essa operação única ( sudo chown …ou sudo -u webmaster setfacl …), você não precisará de privilégios elevados para as operações diárias.

Às vezes, é conveniente permitir que vários usuários gravem em um diretório ou tenham permissões diferentes para vários usuários que não sejam o proprietário ou para vários grupos. As listas de controle de acesso oferecem essa capacidade. Consulte Problemas de permissões para o diretório compartilhado em um servidor ou um problema de permissão de script de backup .

Gilles 'SO- parar de ser mau'
fonte
3

Sim, faça o login como root, que fornece controle de acesso de superusuário.
Mesmo conceito no Windows, você pode fazer login no seu terminal usando o administrador.

ajreal
fonte
Sei que você está respondendo diretamente à pergunta do pôster original. Mas este é um mau conselho, o que explica a baixa votação.
Bignose
Assim você o relacionou ao Windows.
LeWoody
3

Sempre foi minha ideologia que, como usuário, você possa fazer o que quiser no Linux e para todo o resto, sempre existe sudo. sudopermite executar poucas coisas como outros usuários, na maioria dos casos como rootpara administração do sistema. sudotem sido um recurso de maior vantagem delegar algumas das minhas tarefas e privilégios de rotina como usuário (raiz) a outros e ajudar a gerenciar melhor meu tempo e outros sem elevar os privilégios para além do necessário. Ao mesmo tempo, é minha confiança neles que mantém suas entradas presentes nosudoersarquivo de configuração. Não tenho certeza se isso pode estar relacionado, mas o que posso dizer é que, o sudo oferece uma melhor perspectiva de segurança de quem tudo e o que eles podem fazer com seus privilégios confiáveis. Mesmo que algo dê errado, eles permanecem responsáveis. (Eu sempre posso fazer algumas coisas furtivas com informações de log de sudoers para encontrar os culpados também). Meus funcionários sempre expressaram sua preocupação comigo por terem que digitar sudo para tudo o que queriam fazer com privilégios elevados no ambiente Linux. Aqui também encontrei a mesma pergunta.

Para ver as soluções e minha busca para encontrar as alternativas, me deparei com Controles de Acesso Baseado em Recursos,RBAC mas em uma outra aventura Solariscom ferramentas como pfexecetc. Essa abordagem é mais melhor porque isso manteria os privilégios dos usuários já elevados e confiaria na consciência e atenção do que os administradores de sistemas gostariam de fazer com seus privilégios.

Considerando as soluções disponíveis do RBAC e suas implementações no mundo Linux, me deparei com

SELinux http://www.ibm.com/developerworks/linux/library/l-rbac-selinux/

grsecurity http://en.wikipedia.org/wiki/Grsecurity

e, embora existam outras implementações, eu as consideraria na ordem superior da lista. A implementação do RBAC é muito trabalhosa em uma organização, especialmente quando há muitos usuários. O RBAC soaria uma solução maior em ambientes homogêneos. No entanto, quando existem instalações heterogêneas do Unix na rede e o banco de dados do usuário é comum, isso talvez falhe. Como o SELinux não é escalável / implementado no Solaris, as ferramentas RBAC / pfexec não são implementadas no Linux. Existem abordagens diferentes para fazer uma única coisa. Por exemplo: http://blogs.oracle.com/darren/entry/opensolaris_rbac_vs_sudo_howto

Instalações diferentes em toda a rede podem não suportar essa abordagem (no entanto, o openrbac pode ser considerado uma abordagem de implementação comum), pois o sudoers é uma abordagem de host único ou não é capaz de configuração centralizada na rede / domínio./etc/sudoersprecisa ser sincronizado sempre que houver uma alteração. No entanto, há um requisito de base de conhecimento ao operar o arquivo sudoers, é necessário entender o idioma da política da configuração do sudoers para não cometer erros e permitir concessões. O RBAC pode oferecer uma abordagem centralizada até certo ponto, enquanto os perfis de segurança podem ser comuns, adicionar / remover um usuário da função concedida pode ser feito em um único local (que é o local onde as informações do usuário / senha / grupo são armazenadas para o domínio como LDAP, NIS ou AD). Isso também implicitamente exigiria a compreensão dos comandos necessários para operar no banco de dados RBAC, como smexec, smmultiuser, sendo poucos.

O Sudo pode oferecer uma abordagem mais multiplataforma aqui, ainda que funcione em todas as plataformas similares ao Unix, que oferecem os recursos setuid. Ambos são bem sudo- RBACsucedidos em conceder aos usuários não-root alguns privilégios que podem ser feitos sem fornecer a rootsenha em si. O Sudo pode oferecer uma abordagem mais refinada / granular nos argumentos da linha de comando que podem ser usados ​​durante a execução dos comandos e restringir-se exclusivamente a qual comando com argumentos pode ser executado com privilégios elevados. Embora o RBAC possa restringir o uso até os comandos ou binários instalados, mas não tem controle sobre os argumentos da linha de comando. A auditoria é muito melhor e integrada ao ambiente RBAC, enquantosudo, depende da configuração e também das restrições de segurança adotadas (como não conceder o shell e, em particular, os hosts podem fazer login nos outros hosts sem problemas). Essas são apenas algumas das diferenças que eu poderia citar e, pessoalmente, tenho uma tendência a usar o sudo que o RBAC, embora com as limitações mencionadas eu possa vir a implementar algumas soluções alternativas. Até que todos os problemas sejam resolvidos pelo RBAC para melhor vantagem do sudo, não acho que o sudo vá embora, pois é simples.

Nikhil Mulley
fonte
1

Eu mostraria a raiz do documento em que você está trabalhando, para que você tenha acesso total a ela.

Para evitar ter que digitar sudo toda vez que você instala uma Gem, siga este artigo aqui: http://forums.site5.com/showthread.php?t=11954

Também recomendo instalar o RVM para gerenciar versões do Ruby e Rails. http://beginrescueend.com/

Isso tornará sua vida muito mais fácil quando você encontrar o host em que deseja implantar seu aplicativo usando versões diferentes das que você desenvolveu.

Catharz
fonte
Sabia sobre o rvm, mas obrigado pelo link do fórum.
Major Productions
0

Execute o comando

sudo su root

Agora você poderá executar comandos como usuário root. Seja cuidadoso! Qualquer comando executado será como usuário root. Você pode atrapalhar seriamente as coisas se não for cuidadoso.

Ou você altera as permissões do diretório para permitir que seu usuário salve e edite arquivos.


fonte
4
Por que não apenas sudo -s?
sarnold
11
Ou sudo -icomo isso simula como shell de login. Pode estar um pouco mais próximo de um login raiz local nativo do que executar o bash ou outro shell via sudo.
Bastian Ebeling
11
por que não apenas su? Qual é essa obsessão pelo sudo? Você não precisa do sudo. Sempre.
orion
2
depois, não é possível usar apenas suse a senha root for desconhecida. adicionar um usuário aos sudoers e execução sudo supermite ao usuário fazer uso de sua senha de usuário existente e conhecido para escalar
Lucas
0

Edite o arquivo / etc / passwd e conceda permissões de root ao usuário "yourUserName" alterando os IDs de Usuário e Grupo para UID 0 e GID 0:

yourUserName: 0: 0 :: / home / yourUserName: / bin / sh

Ufuk özkanlı
fonte
2
Não recomende pesadelos de segurança! Essa é a prática do pior tipo.
countermode
Eu estou usando esta solução para o meu Raspberry Pi em que eu não tenho outras contas de usuário e sua conectado a minha rede doméstica
Ufuk özkanlı
0

Conforme indicado por outras respostas, a solução mais limpa é alterar a propriedade dos arquivos e diretórios aos quais você precisa acessar. Como alternativa, você pode criar um novo grupo dedicado, alterar a propriedade do grupo dos arquivos e diretórios para esse grupo e definir a permissão de gravação de grupo para esses arquivos e diretórios. Por fim, defina o bit SGID nos diretórios para que, se você criar um novo arquivo, ele herdará a propriedade do grupo no diretório que contém (ou seja, o grupo dedicado).

contra-modo
fonte
-1

usuário @ servidor: ~ $
senha sudo passwd root [sudo] para o usuário:
Digite a nova senha UNIX:
Digite novamente a nova senha UNIX:
passwd: senha atualizada com sucesso
usuário @ servidor: ~ $ su
Senha:
root @ servidor: / home / user #

Esse "#" prompt não é uma coisa bonita?

Eu uso o "sudo" apenas uma vez para obter a capacidade de

usuário @ servidor: ~ $ su
Senha:
root @ servidor: / home / user #

pela vida do servidor.

Para torná-lo seguro novamente,

root @ servidor: / home / usuário # exit
sair
usuário @ servidor: ~ $

Os administradores de sistemas vêm fazendo isso há anos quando o "sudo" não fazia parte da tendência de mollycoddling.

Quando você faz isso, é sua responsabilidade tomar cuidado, não minha.

Ian

Ian
fonte
Que violino. Tente sudo -s. Trabalho feito
roaima 8/11