Skip to content
  • Категории
  • Последние
  • Метки
  • Популярные
  • World
  • Пользователи
  • Группы
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • По умолчанию (Darkly)
  • Нет скина
Collapse

База знаний (кластер NBICS)

  1. Главная
  2. Команды BASH
  3. Bash - работа с пользователями и паролями

Bash - работа с пользователями и паролями

Запланировано Прикреплена Закрыта Перенесена Команды BASH
7 Сообщения 1 Posters 12 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • A Не в сети
    A Не в сети
    Admin
    написал в отредактировано Admin
    #1

    Содержание

    1 ответ Последний ответ
    0
    • A Не в сети
      A Не в сети
      Admin
      написал в отредактировано
      #2

      Как добавить пользователя в группу sudo (чтобы он мог использовать sudo)

      Способ 1. Самый простой и рекомендуемый (не требует root-пароля)

      Выполните от имени уже имеющего sudo-прав пользователя:

      # Проверим текущие группы пользователя (замените ivan на нужное имя)
      groups ivan
      
      # Добавим пользователя в группу sudo
      sudo usermod -aG sudo ivan
      
      # Или так (то же самое, просто другой синтаксис)
      sudo adduser ivan sudo
      

      После этого пользователь должен перелогиниться (выйти и зайти заново) или перезагрузить систему:

      sudo reboot
      

      Готово. Теперь пользователь ivan может выполнять команды с sudo.

      Способ 2. Если у вас есть только root (через su)

      # Переходим в root
      su -
      
      # Добавляем пользователя в группу sudo
      usermod -aG sudo ivan
      
      # Выходим и перезагружаемся
      exit
      sudo reboot
      

      Проверка, что всё сработало

      После перелогина от имени добавленного пользователя выполните:

      sudo -l
      

      Если видите список разрешённых команд — всё работает.

      Важные замечания 2025 года

      • В современных Ubuntu/Debian/Mint группа называется именно sudo, а не adm или wheel (как в старых версиях или других дистрибутивах).
      • Ручное редактирование /etc/sudoers через visudo почти никогда не нужно и опасно — пользуйтесь usermod -aG sudo.
      1 ответ Последний ответ
      0
      • A Не в сети
        A Не в сети
        Admin
        написал в отредактировано
        #3

        Проверка подлинности пароля sudo

        Вот актуальные, безопасные и рабочие на 2025 год способы проверить «правильный ли пароль sudo у текущего пользователя» из скриптов/терминала (Linux).

        1. Самый надёжный и рекомендуемый способ

        # Проверка без ввода пароля в командной строке (без -S!)
        timeout 5 sudo -n true 2>/dev/null && echo "sudo без пароля (nopasswd или кэш)" \
                                   || echo "Требуется пароль"
        
        # Если нужен именно ввод пароля из переменной/скрипта:
        echo "secret" | sudo -S true 2>/dev/null && echo "Пароль верный" || echo "Пароль НЕверный"
        

        2. Безопасные варианты (не оставляют пароль в истории и process list)

        # Способ через expect (самый чистый)
        sudo apt install expect -y
        expect -c '
          spawn sudo -v
          expect "Password:"
          send "secret\r"
          expect {
            "Sorry, try again." { exit 1 }
            eof                  { exit 0 }
          }
        ' && echo "Пароль верный" || echo "Пароль НЕверный"
        
        # Способ через Python (однострочник)
        python3 -c '
        import sys
        from getpass import getpass
        p = "secret"
        sys.stdout.write("Пароль: ")
        sys.stdout.flush()
        if __import__("subprocess").check_call(
            ["sudo", "-kSv"], input=p+"\n", text=True, stdout=open("/dev/null","w"),
            stderr=open("/dev/null","w")) == 0:
            print("верный")
        else:
            print("НЕверный")
        '
        
        # Через bash + read -s (пароль не виден и не логируется)
        read -s -p "Введите пароль sudo: " PASSWD; echo
        echo "$PASSWD" | sudo -S true 2>/dev/null && echo "OK" || echo "Неправильно"
        

        3. Что НЕ стоит делать (опасно!)

        # Плохо — пароль виден в ps aux и в истории bash
        echo "secret" | sudo -S ls
        
        # Очень плохо — пароль остаётся в истории
        sudo -S <<< "secret" ls
        

        4. Практичные однострочники, которые я реально использую в скриптах

        # Проверка с таймаутом 7 сек (чтобы не висело вечно)
        check_sudo() {
            timeout 7 sudo -n true > /dev/null 2>&1
        }
        if check_sudo; then
            echo "sudo работает без пароля"
        else
            echo "Нужен пароль или его нет"
        fi
        
        # Проверка с вводом пароля из переменной (безопасно через heredoc)
        PASS="secret"
        if printf '%s\n' "$PASS" | sudo -S -v > /dev/null 2>&1; then
            echo "Пароль верный"
        else
            echo "Пароль НЕверный или пользователь не в sudoers"
        fi
        

        5. Итоговая лучшая практика 2025 года

        # Самый короткий и безопасный вариант:
        if sudo -n true 2>/dev/null; then
            echo "sudo без пароля — всё ок"
        elif printf 'secret\n' | sudo -S true 2>/dev/null; then
            echo "Пароль подошёл"
        else
            echo "Пароль неверный или нет прав sudo"
        fi
        
        1 ответ Последний ответ
        0
        • A Не в сети
          A Не в сети
          Admin
          написал в отредактировано Admin
          #4

          Смена пароля учётки root


          Вот полная и актуальная на 2025 год шпаргалка по включению/смене/отключению root-пароля в Ubuntu/Debian/Mint/Pop!_OS и других дистрибутивах.

          1. Включить и установить пароль root (самый простой способ)

          sudo passwd root
          # → вводишь новый пароль два раза → готово
          

          После этого можно входить:

          su -                     # или просто su
          # или по SSH
          ssh root@IP
          

          2. Сменить уже существующий пароль root

          sudo passwd root
          

          3. Разблокировать root-аккаунт, если он заблокирован (passwd: account is locked)

          sudo passwd -u root      # разблокировать
          sudo passwd root         # задать новый пароль
          

          или одной командой:

          sudo passwd -u root && sudo passwd root
          

          4. Полностью отключить прямой вход root (рекомендуется для безопасности)

          sudo passwd -l root      # заблокировать пароль
          # или
          sudo usermod -L root
          

          После этого su и ssh root@... потребуют пароль → откажут, но sudo продолжит работать.

          5. Проверить текущий статус root

          sudo passwd -S root
          # Вывод:
          # root P 11/29/2025 0 99999 7 -1   → пароль установлен
          # root L 11/29/2025 0 99999 7 -1   → аккаунт заблокирован
          

          6. Мои готовые однострочники (2025)

          # Включить root и задать пароль "123456"
          echo "root:123456" | sudo chpasswd
          
          # Задать случайный сильный пароль и показать его
          NEW_PASS=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 20); echo "root:$NEW_PASS" | sudo chpasswd && echo "Root password: $NEW_PASS"
          
          # Заблокировать root навсегда
          sudo passwd -l root && echo "Root заблокирован. Используй только sudo!"
          

          7. Восстановление забытого root-пароля (если всё сломалось)

          1. Перезагрузись → в GRUB держи Shift (или Esc)
          2. Выбери Advanced → Recovery mode → root
          3. mount -o remount,rw /
          4. passwd root → задаёшь новый
          5. exec /sbin/init или reboot

          Итог: запомни всего три команды

          sudo passwd root          # включить/сменить пароль root
          sudo passwd -l root       # отключить прямой вход root
          sudo passwd -S root       # проверить статус
          

          В 2025 году 99 % админов используют только sudo, но иногда root-пароль всё-таки нужен (Docker, Alpine, старые серверы, восстановление).

          1 ответ Последний ответ
          0
          • A Не в сети
            A Не в сети
            Admin
            написал в отредактировано
            #5

            Как посмотреть список пользователей Linux


            Вот самая полная и актуальная на 2025 год шпаргалка «как посмотреть всех пользователей в Linux» — от самых простых до самых умных команд.

            Топ-7 команд (копируй-вставляй)

            # 1. Только имена пользователей (самая часто используемая)
            cut -d: -f1 /etc/passwd | sort
            
            # 2. Красиво и по-человечески (мой фаворит 2025)
            getent passwd | awk -F: '$3 >= 1000 && $1 != "nobody" {print $1}' | sort
            
            # 3. Только «настоящие» пользователи (UID ≥ 1000, без системных)
            awk -F: '$3 >= 1000 && $7 ~ /bash|sh|zsh|fish/ {print $1 " → " $7}' /etc/passwd | sort
            
            # 4. Все пользователи + домашняя папка + шелл
            getent passwd | awk -F: '{printf "%-20s %-20s %s\n", $1, $6, $7}'
            
            # 5. Кто сейчас залогинен в систему (реальные люди)
            w -h | awk '{print $1}' | sort -u
            
            # 6. Кто может использовать sudo (администраторы)
            getent group sudo wheel adm admin | cut -d: -f4 | tr ',' '\n' | sort -u
            
            # 7. Полная таблица: логин | UID | GID | домашняя | шелл | комментарий
            getent passwd | awk -F: '{printf "%-15s %-6s %-6s %-25s %-15s %s\n", $1,$3,$4,$6,$7,$5}'
            

            Однострочники для самых частых задач

            # Сколько всего пользователей (включая системных)
            getent passwd | wc -l
            
            # Сколько «человеческих» пользователей
            getent passwd | awk -F: '$3 >= 1000 && $1 != "nobody" {c++} END {print c+0}'
            
            # Показать только пользователей с /bin/bash или /usr/bin/zsh
            grep -E '(/bash|/zsh)' /etc/passwd | cut -d: -f1
            
            # Найти пользователей без пароля (опасно!)
            sudo getent shadow | awk -F: '($2 == "" || $2 == "!") {print $1}'
            
            # Пользователи с UID=0 (другие root-аккаунты — красный флаг!)
            awk -F: '$3 == 0 {print $1}' /etc/passwd
            

            Мои алиасы (добавь в ~/.bashrc)

            alias users="echo 'Реальные пользователи:'; cut -d: -f1 /etc/passwd | sort | tail -n +34 | head -n -1"
            alias admins="echo 'Админы (sudo):'; getent group sudo wheel admin 2>/dev/null | cut -d: -f4 | tr ',' '\n' | sort -u"
            alias whologin="w -h | awk '{print \$1}' | sort -u"
            

            Что использовать в 2025 году

            Задача Лучшая команда
            Просто список имён cut -d: -f1 /etc/passwd | sort
            Только живые пользователи awk -F: '$3 >= 1000 && $7 !~ /nologin|false/ {print $1}' /etc/passwd | sort
            Современные системы (LDAP, SSSD) getent passwd вместо cat /etc/passwd
            Кто сейчас онлайн w -h или who
            Кто имеет права sudo getent group sudo wheel admin

            Запомни всего две команды — и ты всегда будешь знать, кто живёт в твоей системе:

            cut -d: -f1 /etc/passwd | sort                     # все-все
            awk -F: '$3 >= 1000 {print $1}' /etc/passwd | sort # только люди
            

            Готово. Теперь ты видишь всех пользователей как на ладони.

            1 ответ Последний ответ
            0
            • A Не в сети
              A Не в сети
              Admin
              написал в отредактировано
              #6

              Как узнать имя пользователя по его идентификатору


              В Linux есть несколько способов узнать имя пользователя по его идентификатору (UID). Самый быстрый и удобный — использовать команду id или getent.

              1. Самый простой способ (команда id)

              Эта команда выведет только имя пользователя, привязанное к данному ID:

              id -un 1000
              
              
              • -u — искать по UID.
              • -n — вывести имя (name) вместо числа.

              2. Через базу данных паролей (getent)

              Эта команда полезна тем, что она ищет пользователя не только в локальном файле /etc/passwd, но и в сетевых службах (если они настроены, например, LDAP):

              getent passwd 1000
              
              

              Вывод будет выглядеть примерно так:
              username:x:1000:1000:,,,:/home/username:/bin/bash
              (Имя пользователя — это первое слово до двоеточия).

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

              getent passwd 1000 | cut -d: -f1
              
              

              3. Поиск в файле /etc/passwd

              Если вы хотите вручную найти строку в системном файле:

              grep ":x:1000:" /etc/passwd
              
              

              Почему именно 1000?
              В большинстве дистрибутивов Linux (включая Debian, Ubuntu, CentOS) ID 1000 назначается первому обычному пользователю, созданному при установке системы. Системные пользователи (root, службы) обычно имеют ID меньше 1000.

              1 ответ Последний ответ
              0
              • A Не в сети
                A Не в сети
                Admin
                написал в отредактировано
                #7

                Создание нового пользователя


                Для создания нового пользователя и предоставления ему прав администратора (sudo) в Debian 12, выполните следующие шаги.

                Замените newuser на желаемое имя пользователя.

                1. Создание пользователя и установка пароля

                Самый простой и интерактивный способ — использовать команду adduser. Она сразу создаст домашнюю директорию и предложит ввести пароль:

                sudo adduser newuser
                
                

                Система попросит вас:

                1. Ввести пароль (символы при вводе не отображаются).
                2. Повторить пароль.
                3. Ввести данные пользователя (ФИО, номер комнаты и т.д.) — это можно пропустить, просто нажимая Enter.

                2. Добавление пользователя в группу sudo

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

                sudo usermod -aG sudo newuser
                
                
                • -a (append) — добавить.
                • -G (groups) — в группу.

                3. Проверка прав

                Чтобы убедиться, что всё прошло успешно, переключитесь на нового пользователя:

                su - newuser
                
                

                Затем попробуйте выполнить любую команду с sudo, например, обновить список пакетов:

                sudo apt update
                
                

                Если система приняла пароль и начала обновление — пользователь успешно настроен.


                Полезные советы

                Задача Команда
                Удалить пользователя sudo deluser newuser
                Удалить пользователя вместе с файлами sudo deluser --remove-home newuser
                Сменить пароль существующему пользователю sudo passwd newuser

                Важно: Если вы только что установили Debian и команда sudo не найдена, это означает, что пакет не установлен. В таком случае сначала зайдите под root (su -), установите его (apt install sudo), добавьте пользователя в группу и перезагрузите сессию.

                1 ответ Последний ответ
                0
                Ответить
                • Ответить, создав новую тему
                Авторизуйтесь, чтобы ответить
                • Сначала старые
                • Сначала новые
                • По количеству голосов


                • Войти

                • Login or register to search.
                Powered by NodeBB Contributors
                • Первое сообщение
                  Последнее сообщение
                0
                • Категории
                • Последние
                • Метки
                • Популярные
                • World
                • Пользователи
                • Группы