sudo удаляется [дубликат]

10

Как установить пакет sudo ?

$ apt-get install sudo
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
    
задан Kaliya Mitesh 22.01.2017 в 16:23
источник

5 ответов

19

Если вы действительно удалили команду sudo , вы можете переустановить пакет, который обеспечивает его, выполнив:

pkexec apt-get update
pkexec apt-get --reinstall install sudo

Это работает, потому что большинство систем Ubuntu имеют два разных способа, позволяющих администраторам выполнять действия как root, sudo и Polkit . Когда sudo нарушается, Polkit обычно все еще не поврежден.

Вы должны войти в систему как администратор, чтобы сделать это, конечно. Если вы используете учетную запись, которой разрешено использовать sudo (назад, когда sudo существует в системе), это должно работать нормально.

В минимальной системе или серверной системе Ubuntu Polkit может быть недоступен, и с некоторыми конфигурациями вы не сможете запустить команду pkexec в сеансе SSH.

Вы указали , что pkexec , но не удалено как sudo , также нарушено , В частности, ваша система имеет неправильное право собственности или разрешения. Предполагается, что setuid root, но это не так, и поэтому его нельзя использовать.

Полезно знать , как /usr/bin/sudo было удалено, и как /usr/bin/pkexec ' (или права собственности) были изменены. Это две, казалось бы, отдельные изменения в вашей системе. Если для -R , chown или chmod было выполнено рекурсивное ( / ) /usr или /usr/bin , это объясняет, как были изменены разрешения pkexec , и соответствующее исправление сделайте больше, чем просто замените их на один исполняемый файл.

С учетом сказанного, если в вашей системе только две ошибки: sudo отсутствует, а pkexec имеет неправильные разрешения или право собственности, , это все еще легко исправлено , хотя вам придется перезагрузиться в режиме восстановления или chroot из живой среды. Я предлагаю режим восстановления.

  1. Загрузка в режиме восстановления .
  2. Remount / readwrite при запуске: mount -o remount,rw /
  3. Убедитесь, что pkexec имеет правильное владение: chown root:root /usr/bin/pkexec
  4. Разрешения Fix pkexec : chmod 4755 /usr/bin/pkexec
  5. Загрузите свою систему ( exit и следуйте инструкциям) или перезагрузитесь с помощью reboot .
  6. Следуйте приведенным выше инструкциям по переустановке пакета sudo , запустив apt-get с pkexec .

Это имеет то преимущество, что работает ли доступное интернет-соединение в режиме восстановления без использования загрузки файлов .deb и их ручной установки. С --reinstall , apt-get заменит все файлы пакета для sudo , что может устранить дополнительные проблемы. Кроме того, это также фиксирует ваш сломанный pkexec .

Однако это не единственный подход. В частности, должен работать метод, приведенный в ответе Сан Лин Найнга . Основное отличие состоит в том, что в приведенном здесь методе в chroot не выполняются операции управления пакетами, которые используются только для восстановления pkexec , поэтому его можно использовать для управления пакетами при нормальной загрузке.

    
ответ дан Eliah Kagan 22.01.2017 в 16:33
источник
2

Вам необходимо разрешение root для установки любого программного обеспечения. Но вы удалили пакет sudo .

Если у вас есть доступ как root , вы можете снова установить sudo .

Ссылка на этот ответ .

Попробуйте начать с bash mode с root пользователя.

  1. Перезагрузите свою систему.
  2. Длительное нажатие клавиши Shift или Esc .
  3. Выберите Advanced options for Ubuntu .
  4. Выберите Ubuntu, with Linux x.x.x-xx-generic (recovery mode) .
  5. Выберите root Drop to root shell prompt
  6. Введите команду mount -o rw,remount / , чтобы получить доступ к записи на чтение.
  7. Введите apt install sudo . Следуйте инструкциям на экране.

Если установка завершена, это сделано!

Если не , это может потребовать подключения к сети.

Перезагружает вашу систему для нормальной загрузки и загрузки необходимых файлов. Если это так, Ctrl + D снова перейдет на страницу меню и выберите resume . Это будет нормально загружаться.

Вам может потребоваться установить sudo в автономном режиме. Это может быть еще одно исследование. здесь вы можете найти пакет .deb . Вы можете загрузить свою версию ОС. Загрузите файл sudo_1.8.19-3_xxxx.deb . А затем запомните загрузку file path .

Перезагрузите свою систему в bash mode (recovery mode) и выполните 1-6 шагов.

И затем dpkg -i *file_path/sudo_1.8.19-3_xxxx.deb . Это установит sudo . Законченный! Ctrl + D и выберите resume для нормальной загрузки.

Готово!

    
ответ дан San Lin Naing 22.01.2017 в 18:03
2
  

да, я случайно удалил файл sudo. вывод ls -l / usr / bin / sudo не может получить доступ к «/ usr / bin / sudo»: нет такого файла или каталога

Просто мысль:

У вас все еще есть носитель (DVD / USB-накопитель), из которого вы установили Ubuntu в свою систему?

  1. Загрузите его и установите системный раздел вашего ПК.
  2. Скопируйте /usr/bin/sudo из живой системы в смонтированный раздел.
  3. Убедитесь, что владелец файла и разрешения совпадают.
  4. Перезагрузите систему.
ответ дан Timothy Truckle 22.01.2017 в 17:26
0

Возможно, вы можете загрузить свою систему в режим восстановления через grub. Оттуда вы можете попытаться проверить системную интеграцию через dpkg, что, возможно, позволит вам решить вашу проблему. Или после этого, поскольку ваш раздел был установлен с разрешениями на чтение и запись, вы можете установить sudo без использования команды sudo с помощью записи корневого меню. Вы должны обновить с помощью apt-get и, возможно, сначала попробовать использовать apt-get install -f и dpkg --configure -a .

    
ответ дан starkus 22.01.2017 в 17:54
0

Вы можете создать sudo из источника

mkdir sudo-src
cd sudo-src
apt-get source sudo
cd sudo-x.y.z
./configure --prefix=$HOME
make
make install
    
ответ дан GAD3R 22.01.2017 в 18:40