Отказано в доступе к Linux
Обновлено: 21.11.2024
Вы следуете какому-то учебнику в Интернете, в котором вам предлагается установить определенную программу или выполнить какую-либо команду. Вероятно, это как-то связано с сервером.
Но когда вы запускаете команду, вы сталкиваетесь с этой ошибкой:
E: Не удалось открыть файл блокировки /var/lib/dpkg/lock-frontend — открыть (13: Отказано в доступе)
E: Не удалось получить блокировку внешнего интерфейса dpkg (/var/lib/dpkg/lock -frontend), вы root?
Похожая ошибка:
dpkg: ошибка: требуется доступ для чтения/записи к каталогу базы данных dpkg /var/lib/dpkg
E: Подпроцесс dpkg –set-selections возвратил код ошибки (2)
E: Не удалось выполнить dpkg. Вы root?
Оба сообщения об ошибках задают один и тот же вопрос: вы являетесь пользователем root? И это ответ на эту проблему. Станьте пользователем root.
Чтобы избежать этой ошибки, войдите в систему с правами root
Как стать пользователем root в Ubuntu или Debian? Вы используете команду sudo.
Да, это так. Какую бы команду вы ни запускали, просто добавьте sudo перед ней.
Он попросит вас ввести пароль учетной записи пользователя. Имейте в виду, что при вводе пароля на экране ничего не отображается, и это нормально.
В вашей системе все в порядке. В большинстве систем Linux при вводе пароля не отображаются обычные звездочки или что-то в этом роде в качестве «функции безопасности».
Просто введите свой пароль и нажмите Enter после него. Если пароль был введен правильно, вы сможете запустить команду сейчас.
Вы даже можете использовать этот удобный трюк с командной строкой Linux, чтобы запустить предыдущую команду с помощью sudo:
Это было просто и работает сразу же, если у вас нет доступа к sudo. Затем вы увидите другую ошибку.
Видите ошибку «Пользователь не находится в файле sudoer»?
При установке Ubuntu необходимо создать учетную запись пользователя. Этому пользователю автоматически предоставляются полномочия sudo для запуска команд от имени root, когда это необходимо.
Это происходит на рабочем столе Ubuntu, а не на серверах. Большинство дистрибутивов серверов будут иметь отдельную учетную запись root. Если вы создадите обычную учетную запись отдельно, вам придется добавить пользователя в sudoer, чтобы этот обычный пользователь мог использовать sudo.
На снимке экрана выше я создал этого дополнительного пользователя, но не добавил его в группу sudo. Это означает, что пользователь «prakash» здесь не имеет прав на использование команды sudo, и поэтому система жалуется, что «prakash отсутствует в файле sudoers».
Куда сообщается об инциденте?
В системные журналы добавлена неправильная попытка sudo. Он регистрирует имя пользователя, номер виртуального терминала, место, откуда была запущена команда, и какая команда была запущена.
Расположение этих журналов отличается от дистрибутива к дистрибутиву.
Обычно вы можете найти его в журналах journalctl или в файле /var/log/auth.log в Ubuntu, в файле /var/log/audit/audit.log в Fedora.
Что делать, если пользователя нет в списке sudoer?
Что делать, если вы не можете использовать sudo с текущей учетной записью пользователя? Сначала проверьте, есть ли у пользователя права sudo или нет. Если нет, вот несколько вариантов для вас:
- Войдите как root или переключитесь на root (если у вас есть пароль root). (если у вас есть права администратора/sudo от какой-либо другой учетной записи пользователя).
- Если вы работаете в многопользовательской системе Linux и у вас нет доступа root или sudo, попросите системного администратора либо предоставить вашему пользователю доступ sudo, либо установить приложение, которое вы хотели установить.
Это помогло?
Sudo — это очень комплексный механизм безопасности, и он не просто позволяет обычному пользователю стать пользователем root. Это помогает при аудите системы узнать, какой пользователь выполнил какую команду с помощью sudo. Его также можно настроить так, чтобы определенный пользователь мог запускать только определенные команды с помощью sudo.
Вы не увидите такой детализированной конфигурации sudo в Linux для настольных ПК, где она предварительно настроена, чтобы позволить любому пользователю в группе sudo выполнять любую команду с правами root с помощью sudo. Подробнее о sudo в другой статье.
Я надеюсь, что при решении этой классической задачи для начинающих вы получите некоторое представление о команде sudo. Дайте мне знать, если у вас есть дополнительные вопросы по этой теме в разделе комментариев.
Эта ошибка возникает, когда вы пытаетесь вывести файлы или запустить файл в каталоге, для которого у вас нет достаточных прав. Поскольку операционная система Linux очень требовательна к аспектам безопасности.
Пример ошибки Linux с отказом в доступе
Допустим, вы обычный пользователь, который пытается получить список или изменить каталог внутри файловой системы /root. Поскольку у вас недостаточно разрешений, система ответит сообщением об ошибке отказа в разрешении, как показано ниже:
Один из способов избежать такой ошибки — переключиться на пользователя root с помощью команды su. Однако это решение не рекомендуется, так как оно получит ненужный доступ ко всей корневой файловой системе.
Как устранить ошибку «Отказано в доступе»
Устранение ошибки «Отказано в доступе», связанной с выполнением скрипта:
Допустим, вы создали сценарий оболочки для выполнения какой-либо задачи. но когда вы пытаетесь выполнить скрипт, вы можете закончить с ошибкой ниже из-за отсутствия ошибки отказа в разрешении.
Теперь, чтобы избежать такого случая, вам нужно добавить разрешение на выполнение «x» в файл myshell.sh с помощью команды chmod, как показано ниже:
В последнем выводе видно, что после команды chmod добавлено разрешение «x» (выполнение). Поэтому в следующий раз, когда вы попытаетесь выполнить сценарий оболочки, он будет выполнен без ошибок.
Устранение ошибки Linux «отказано в доступе» при выводе списка или записи в файл
При этом типе ошибки отказа в разрешении вы пытаетесь перечислить или записать файл, в котором у вас нет достаточных прав для этого, как показано ниже:
Если вы посмотрите на права доступа к каталогу «myfolder» с помощью команды ls -l, вы узнаете о разрешениях.
В соответствии с разрешением, указанным в приведенном выше выводе, только владелец каталога с правами root может иметь все права на чтение, запись и выполнение. Поэтому в таком случае вам нужно изменить разрешение на чтение каталога с помощью следующей команды chmod:
Теперь, когда обычный пользователь manmohan попытается получить список каталогов, он не получит сообщение об ошибке отказа в доступе.
Если вы хотите иметь разрешение на запись в этот каталог, вам необходимо также указать флаг w в команде chmod, как показано ниже:
То же самое относится и к разрешениям на уровне файлов.
Еще один способ — сменить владельца каталога с помощью команды chown. Поскольку в нашем примере мы получаем ошибку для пользователя manmohan, мы изменим владельца каталога «myfolder», используя команду ниже.
Поскольку пользователь manmohan теперь является владельцем каталога, он может выполнять любые операции с каталогом. Если вы хотите рекурсивное разрешение, не забудьте добавить -r во время команды chown, как показано ниже:
Устранение ошибки Linux с отказом в доступе для определенного пользователя
По моему мнению, приведенный выше метод изменения разрешения с помощью chmod не подходит. Потому что, когда вы даете разрешение другим, оно будет открыто для всех пользователей в системе. Что неправильно с точки зрения безопасности. Чтобы устранить эту ошибку, специфичную для пользователя, вы можете реализовать ее с помощью списка управления доступом или ACL. Следуйте моей статье о списках управления доступом ACL для того же.
Всем известно, что системы Linux поставляются с доступом пользователя root, а по умолчанию доступ root включен для внешнего мира.
Из соображений безопасности не рекомендуется включать root-доступ по ssh для неавторизованных пользователей. Потому что любой хакер может попытаться взломать ваш пароль и получить доступ к вашей системе.
Поэтому лучше иметь другую учетную запись, которую вы регулярно используете, а затем переключаться на пользователя root с помощью команды «su –», когда это необходимо. Прежде чем мы начнем, убедитесь, что у вас есть обычная учетная запись пользователя, и с ней вы можете использовать su или sudo, чтобы получить root-доступ.
В Linux очень легко создать отдельную учетную запись, войти в систему как пользователь root и просто запустить команду adduser, чтобы создать отдельного пользователя. После создания пользователя просто выполните следующие действия, чтобы отключить вход в систему root через SSH.
Мы используем основной файл конфигурации sshd, чтобы отключить вход в систему root, и это может уменьшить и помешать хакеру получить root-доступ к вашему компьютеру Linux. Мы также увидим, как снова включить root-доступ, а также как ограничить доступ ssh на основе списка пользователей.
Отключить корневой вход SSH
Чтобы отключить вход в систему root, откройте основной файл конфигурации ssh /etc/ssh/sshd_config в любом редакторе по вашему выбору.
Найдите следующую строку в файле.
Далее нам нужно перезапустить службу демона SSH.
Теперь попробуйте войти в систему с правами root, вы получите сообщение об ошибке «Отказано в доступе».
Итак, с этого момента войдите в систему как обычный пользователь, а затем используйте команду «su», чтобы переключиться на пользователя root.
Включить корневой вход SSH
Чтобы включить ведение журнала ssh root, откройте файл /etc/ssh/sshd_config.
Перезапустите службу sshd.
Теперь попробуйте войти в систему с правами root.
Ограничение входа пользователей через SSH
Если у вас в системе большое количество учетных записей пользователей, имеет смысл ограничить удаленный доступ по SSH только теми пользователями, которым он действительно нужен. Откройте файл /etc/ssh/sshd_config.
Добавьте строку AllowUsers внизу файла с пробелом, разделенным списком имен пользователей. Например, пользователи tecmint и sheena имеют доступ к удаленному протоколу ssh.
Теперь перезапустите службу ssh.
Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.
Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:
TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.
Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.
Мы благодарны за вашу бесконечную поддержку.
Похожие сообщения
20 мыслей на тему “Отключить или включить корневой вход по SSH и ограничить доступ по SSH в Linux”
Лучше и безопаснее использовать «экран» в учетной записи пользователя.
и вернуть сеанс
также возможна сессия с другими именами mylogin1, mylogin2, mylogin3 для мультисессии с 4/10 сессиями по «экрану»
попробуйте и удачного взлома
Он комментирует эту конкретную строку/команду.
Я предпочитаю создать группу ssh, добавить ее в эту группу и разрешить эту группу в sshd_config, но в любом случае цель будет достигнута!
Есть что сказать? Присоединяйтесь к обсуждению. Отменить ответ
Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.
Файлы в операционной системе обычно имеют разрешения, что делает файл доступным для ограниченного круга людей. Например, некоторые файлы на компьютере доступны только администраторам; другие файлы доступны только определенному пользователю.
Если вы попытаетесь запустить файл, к которому у вас нет доступа, на компьютере с Linux, вы увидите сообщение об отказе в доступе. В этом руководстве мы поговорим о причине этой ошибки и о том, как ее устранить. Начнем.
Отказано в доступе к Bash
Ошибка отказа в доступе Bash возникает, когда вы пытаетесь запустить файл, на запуск которого у вас нет разрешения. Это может произойти, если файл может быть запущен только определенным пользователем или группой, членом которой вы не являетесь.
- Care Karma подберет для вас лучшие учебные курсы по технологиям
- Получайте эксклюзивные стипендии и подготовительные курсы
Хотите узнать больше о том, как учебный курс по программированию может помочь вам научиться программировать? Начните с поиска подходящего учебного курса, а также разблокируйте дополнительную информацию о стоимости курса и отзывах.
В операционной системе Linux существует три типа разрешений:
У вас может быть разрешение на чтение и запись файла без прав на выполнение. Таким образом, если вы столкнулись с отказом в разрешении Bash, обязательно проверьте, разрешено ли вам запускать файл. Вы можете проверить, есть ли у вас права доступа к файлу, с помощью следующей команды:
Эта команда предоставит вам информацию о правах доступа к файлам. Мы обсудим вывод этой команды в разделе «Решение» далее в статье. Давайте рассмотрим пример сценария с ошибкой отказа в доступе и соответствующее решение.
Пример сценария
У нас есть файл с именем example.sh. Мы можем увидеть этот файл, запустив команду ls. Команда ls возвращает следующее:
81 % участников заявили, что стали более уверенными в своих перспективах работы в сфере технологий после посещения учебного курса. Примите участие в тренировочном лагере сегодня.
Найдите подходящий вариант для буткемпа
В среднем выпускник буткемпа тратит менее шести месяцев на смену карьеры, начиная с буткемпа и заканчивая поиском своей первой работы.
Начните сменить профессию сегодня
Мы хотим запустить наш файл example.sh. Для этого мы можем использовать обозначение ./:
Эта команда позволяет нам запустить файл example.sh, который находится в нашем каталоге ./ (каталог, который мы сейчас просматриваем). Давайте посмотрим, что произойдет, когда мы попытаемся запустить файл:
Наша команда возвращает ошибку.
Решение
Наша оболочка Bash сообщает нам, что у нас нет прав для запуска нашего файла. Мы можем проверить, какие разрешения у нас есть, выполнив команду ls -la:
У нас нет прав на выполнение любого из наших файлов. Если бы в первой записи выходных данных выше был x после rw, мы бы знали, что можем выполнить наш файл. Три символа после первого представляют права пользователя на чтение, запись и выполнение. У нашей группы также нет прав на запись или выполнение.
Чтобы решить эту проблему, нам нужно предоставить себе права на выполнение:
Эта команда дает нашему пользователю права на выполнение («x») над файлом example.sh.
Мы можем запустить эту команду только в том случае, если нам разрешено изменять права доступа к файлу. Если бы этот файл был защищен (например, владельцем root), то мы не смогли бы изменить этот файл.
Файл принадлежит системному пользователю james, поэтому я могу изменить права доступа к файлу в своей учетной записи james. Я также могу использовать sudo для изменения прав доступа к файлам, хотя в этом нет необходимости, поскольку у моей учетной записи пользователя есть необходимый доступ.
Заключение
Ошибка отказа в разрешении Bash означает, что вы пытаетесь запустить файл, на запуск которого у вас нет прав. Чтобы решить эту проблему, используйте команду chmod u+x, чтобы предоставить себе разрешения. Если вы не можете использовать эту команду, возможно, вам придется обратиться к системному администратору, чтобы получить доступ к файлу.
Хотите узнать больше о Bash? Ознакомьтесь с нашим руководством по изучению командной строки. Это руководство содержит лучшие советы по изучению Bash. Вы также найдете список ресурсов, которые помогут вам ускорить процесс обучения.
Читайте также: