Использование sudo без ввода пароля в Ubuntu

Тогда я думал: «Глупый линукс, кому нужны все эти права! Только лишние телодвижения». Сейчас мой взгляд на эту ОС изменился. Я поддался очарованию движения Open Source и возможности настроить в системе вообще все!

Зачем использовать sudo без ввода пароля?

Объясню, зачем это нужно и почему удобно лично для меня. У меня есть локальный сервер Apach2, на котором я частенько провожу всякие эксперименты, тренирую php, учу Zend Framework и многое другое. В общем, издеваюсь над ним. Как порядочный пользователь, я включаю его, когда он мне нужен и выключаю, когда наиграюсь. Это делается с помощью двух команд.

sudo /opt/lampp/lampp start sudo /opt/lampp/lampp stop

Ламп-сервер лежит в директории /opt, которая защищена от вторжения рядовых пользователей, поэтому без применения sudo не обойтись. Проблема в том, что мне надоедает каждый раз вводить пароль для такой элементарной операции. Кроме того,  я не буду против, если кто-нибудь подойдет и включит apach без моего разрешения, пожалуйста. Можете даже выключить. Поэтому ставить пароль на эти команды вовсе необязательно. Решение нашлось мгновенно и в нем нет ничего сложного, главное сделать все внимательно и сосредоточено. В прочем, все, что касается настройки Linux нужно делать медленно и вдумчиво, утверждаю основываясь на собственном горьком опыте. Поэтому ловим максимальную концентрацию и приступаем к настройке.

Подводные камни

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

Читайте также:  kubectl apply vs create. Какую команду использовать для создания ресурсов в кластерной среде Kubernetes?

Запуск команды, которая создаёт файлы и директории из-под sudo, приводит к тому, что владельцем этих файлов становится пользователь root. Фактически все последующие обращения к этому файлу без sudo начнут выдавать ошибку об отсутствии прав доступа. Причём даже необязательно работать с этими файлами напрямую: множество программ так или иначе обращаются к файловой системе для чтения конфигурационных и других файлов.

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

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

~$ ls -la # Всё содержимое домашней директории принадлежит одному пользователю. # Сама директория пользователя принадлежит ему же, # а родительская директория принадлежит суперпользователю drwxr-xr-x+ 117 mokevnin staff 3744 Feb 19 15:55 . drwxr-xr-x 5 root admin 160 Oct 12 19:15 .. -r——— 1 mokevnin staff 7 Nov 21 2017 .CFUserTextEncoding -rw-r—r—@ 1 mokevnin staff 22532 Feb 8 00:04 .DS_Store

Дополнительные материалы

  1. sudo vs su

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Ошибки, сложный материал, вопросы > Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Читайте также:  Steam Linux- культовая платформа для игр

Об обучении на Хекслете

  • Статья «Как учиться и справляться с негативными мыслями»
  • Статья «Ловушки обучения»
  • Статья «Сложные простые задачи по программированию»
  • Урок «Как эффективно учиться на Хекслете»
  • Вебинар «Как самостоятельно учиться»

Работа с процессами

Для начала создайте список процессов по имени, идентификационного номеру процесса и т. д. (обычно используемый признак состояния aux).

Учитывайте особенности реализации программных потоков: POSIX, GNU и BSD, а также то, что они отличаются в работе и применении. Вышеуказанные реализации отличаются различными опциями: POSIX (-), GNU (–), BSD (без тире).

Индикаторы процесса в данной системе: top, htop, atop.

Понижайте приоритет процесса, используя nice. Например, следующим образом:

nice -n 19 tar cvzf large_dir

Чтобы аннулировать процесс, введите kill <pid>. Данная команда используется для завершения процессов-зомби или прекращения зависших сеансов.

Далее идут команды терминала Linux, которые спасут положение в затруднительных ситуациях:

  • man nano — данная команда обеспечивает доступ к организованным по разделам справочным страницам. Итого на каждый раздел — одна страница. Например: 5 passwd #5й раздел;
  • wget —help — весьма удобная команда, которая позволит быстро получить справку по синтаксису;
  • info curl — позволяет получить информацию о команде (в данном случае о curl);
  • /usr/share/doc — используйте в браузере. В случае проблемы, не забывайте, что обычно файлы README содержат информацию и примеры команд. Просмотр осуществляется с помощью браузера.

Изменение настроек учетной записи пользователя

С помощью команды chfn можно внести или изменить информацию учетной записи пользователя (ФИО, рабочий телефон, рабочие координаты и т.д, username — имя пользователя):

Читайте также:  Использование команды mkfs в Linux для форматирования файловой системы на диске или разделе

chfn -f полное_имя -о office -p рабочий_телефон -h домашний_телефон -u -v username

Для задания пароля используется команда passwd:

passwd username

В результате выполнения команды нам будет предложено ввести новый пароль и повторить его.

Если мы хотим дать пользователю возможность сменить пароль при первом входе в систему, следует ввести команду:

change -d 0 username

Шаг — Тестирование доступа к sudo

Чтобы проверить, что новые разрешения sudo доступны, сначала нужно воспользоваться командой su для переключения на новую учетную запись пользователя:

  • su — sammy

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

  • sudo command_to_run

Например, вы можете вывести список содержимого директории /root, которое обычно доступно только для пользователя root user:

  • sudo ls -la /root

При первом использовании sudo в сеансе вам будет предложено ввести пароль учетной записи данного пользователя. Введите пароль, чтобы продолжить:

Output:[sudo] password for sammy:

Примечание: это не запрос пароля root! Введите пароль пользователя с привилегиями sudo, а не пароль root.

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