Após uma pesquisa exaustiva, não consegui encontrar uma maneira de resolver isso e tive que recriar o servidor.
Eu acidentalmente mudei a propriedade de /usr/bin/sudo
para o meu usuário atual (eu também fiz isso para algumas outras coisas no meu diretório /usr
). Eu não posso mudar nenhum deles de volta porque eu preciso da propriedade de /usr/bin/sudo
para ser o root para fazer isso. Eu não tenho acesso root porque estou em uma instância do Amazon EC2 executando linux.
Aqui está o que eu fiz (tolamente eu sei):
sudo chown -R ec2-user.ec2-user /usr/
Eu também já inalei muitas outras coisas no processo, mas acho que tudo pode ser resolvido se eu puder redefinir a propriedade de /usr/bin/sudo
Por favor ajude. Eu sou novo no Linux e estou fazendo tudo da linha de comando.
Eu tenho meus dados importantes em um EBS separado, montado, mas sou péssimo com o administrador do servidor e provavelmente levarei um dia inteiro para configurar uma nova instância, mas temo que essa seja minha única opção.
(repetindo minha resposta SE)
Você está executando em um volume do EBS? Você pode cancelar a instância por alguns minutos?
Se fizer isso, você poderá parar temporariamente a instância atual, iniciar outra instância, montar o volume EBS da primeira instância e corrigir suas permissões, desmontá-lo e reiniciar a primeira instância.
Se você possui scripts que são executados via cron como root e você ainda pode editá-los, adicione o seguinte.
# chown root.root /usr/bin/sudo
# chmod u+s /usr/bin/sudo
Caso contrário, quando você descobrir como obter root na caixa, você precisa fazer esses comandos.
(reescrevendo isso já que aparentemente não foi entendido por algumas pessoas)
Os kernels do Linux anunciam _POSIX_CHOWN_RESTRICTED
como true, o que significa que apenas root
pode usar chown()
. Se fosse definido como falso, isso significaria que existe uma maneira de os usuários comuns alterarem a propriedade de seus arquivos.
chown(3)
tem texto que sugere que é possível alterar _POSIX_CHOWN_RESTRICTED
no nível do kernel; No entanto, o Linux não permite que ele seja alterado, portanto, simplesmente não há maneira de não root
to chown
de seus próprios arquivos.
Reinicialize seu computador e mantenha pressionada a tecla F8 após o splash do BIOS para abrir o menu de inicialização do GRUB. Se você usa uma das distribuições populares do Linux (algo como o Ubuntu), deve haver uma opção para iniciar o Linux no modo de recuperação (a opção pode ser encontrada em um submenu 'Opções avançadas' se você usar o GRUB 2). Inicie o linux no modo de recuperação, e (se você usar uma distro popular) você deve eventualmente receber um pequeno menu de opções de recuperação. Primeiro, selecione a opção de recuperação do fsck para remontar / no modo de leitura e gravação e monte todos os outros sistemas de arquivos no fstab. Em seguida, selecione a opção que lhe dará um prompt root. Como o shell está logado como root, todos os comandos serão executados como root sem precisar do comando sudo. Você pode usar isso para reparar as permissões em / usr / bin / sudo:
chown root:root /usr/bin/sudo
chmod u+s /usr/bin/sudo
exit
Depois de fazer isso, você pode selecionar a opção 'retomar a inicialização normal' (ou apenas reiniciar o computador se não tiver um) e efetuar login normalmente e usar o comando sudo para reparar o restante de suas permissões . Para fazer isso, você geralmente precisa copiar as permissões de outro computador que tenha permissões "próximas o suficiente". Eu corri para este problema com meu desktop quando eu manualmente instalei um compilador cruzado que acabei de criar usando o rsync com o sinalizador -a. Depois que eu percebi que eu queria que os arquivos do cross-compiler fossem chown'ed para root e não para mim, eu estupidamente executei chown -R root: root / usr e nuked minhas permissões por acidente. Felizmente, eu tinha um laptop da mesma distro e tinha quase o mesmo conjunto de pacotes instalados. Copiei as permissões dele e resolvi meus problemas de permissão em menos de uma hora.
Tags sudo permissions linux