17. su и visudo (RHCSA)

Поделиться
HTML-код
  • Опубликовано: 18 июн 2020
  • Плейлист: • Основы GNU/Linux и под...
    Телеграм: t.me/gnuslashlinux
    Текстовой вариант: basis.gnulinux.pro

Комментарии • 31

  • @tim1730
    @tim1730 9 месяцев назад +1

    хаха "безопасность строится на полном недоверии друг к другу"

  • @babichfx
    @babichfx 3 года назад +3

    ответ на вопрос на 5:30 - sudo без тире не инициализирует окружение для user2 и соответственно file ищется в хоум директории текущего пользователя а не user2

  • @WhiteBear141981
    @WhiteBear141981 2 года назад +1

    Здравствуйте!
    Спасибо большое! Подскажите, чем отличается эмулятор терминала от обычного терминала и в чем Вы работаете на уроке? Я немного запутался)

    • @GNULinuxPro
      @GNULinuxPro  2 года назад +2

      Привет!
      Программа в графическом интерфейсе, с которой я работаю, называется эмулятор терминала
      Терминал это физическое оборудование, которое уже не используется. Но в целом для упрощения эмулятор терминала называют просто терминалом, да и любое место, где вводят команды, называют терминалом.
      Посмотри 5 урок (там говорится про эмулятор терминала и виртуальную консоль)
      Ну и на хабре есть интересная статья. Боюсь ссылку могут заблочить, поэтому просто погугли "Hello, World! Глубокое погружение в Терминалы"

    • @WhiteBear141981
      @WhiteBear141981 2 года назад +1

      @@GNULinuxPro, спасибо большое!

  • @alexeyd4599
    @alexeyd4599 3 года назад +1

    Огромное спасибо! Прекрасно разложили! А можно пояснить про режимы или ссыль грамотную для почитать (интерактивный логин, неинтерактивный логин) и (интерактивный нонлогин, неинтерактивный нонлогин)

    • @GNULinuxPro
      @GNULinuxPro  3 года назад +9

      Условно, оболочку можно поделить на 2 "состояния" - оболочка со входом (login shell), оболочка без входа (non-login shell).
      При этом еще делятся на interactive и non-interactive.
      Когда осуществляется "логин" пользователя - там где вы вводите свой логин и пароль - будь то удалённо ( с помощью ssh ) или локально, зайдя, допустим, в виртуальный терминал или залогинившись в графическую оболочку, запускается .bash_profile. Это оболочка со входом (login shell). И раз уж вы логинитесь и запускаете команды - это interactive login shell.
      Когда же вы запускаете программу эмулятор терминала, то там нет логина, вы без логина и пароля можете вводить команды - оболочка без входа (non-login shell). При этом, в эмуляторе терминала работаете вы - этот interactive non-login shell.
      Когда работают скрипты, они обычно запускаются без всякого логина - тут уже non-interactive non-login shell.
      Да, когда вы запускаете эмулятор терминала, в этом эмуляторе запускается bash. И при этом, при запуске, он запускает .bashrc. Сами по себе .bashrc и .bash_profile - это просто набор команд в одном файле. То есть это скрипты.
      Когда же вы логинитесь (не важно каким образом), тоже запускается bash, при этом он запускает .bash_profile

    • @alexeyd4599
      @alexeyd4599 3 года назад +2

      @@GNULinuxPro, спасибо за Ваш труд!

  • @Snoop_dozhek
    @Snoop_dozhek Год назад +1

    не обязательно делать закрыть-открыть терминал, можно перечитать rc-файл командой source (source ~/.zshrc for zch)

  • @abych9696
    @abych9696 4 года назад +1

    Первой командой
    su user2 -c "touch file" - мы пытаемся от имени пользователя "user2" создать файл в каталоге пользователя "user1", но т.к. небыла произведена авторизация и небыл прочитан файл .bash_profile пользователя "user2" а был прочитан лишь ".bashrc" и мы фактически остались в каталоге пользователя "user1" что не дает нам право создавать файлы в данном каталоге, за исключением, если вы не "root" тогда можно будет.
    А во втором случае командой su - user2 -c "touch file", мы сначало считываем содержимое ".bash_profile" пользователя "user2" в котором указан путь до домашнего каталога "user2" и автоматически логинится в домашний каталог "user2" и уже в нем создает файл "file" .
    P/S: это был мой поток мыслей...
    Просьба поправлять меня если я не прав, т.к. я только учусь и если ничего не понятно тоже пишите попробую переформулировать более кратко.
    Спасибо автору за материал!

    • @GNULinuxPro
      @GNULinuxPro  4 года назад +1

      В целом идея правильная - в первом случае мы остались в каталоге первого пользователя, где у нас нет прав создавать от имени второго пользователя. Во втором случае файл создаётся в домашней директории второго пользователя. Но есть пара замечаний - во первых, при touch file мы нигде не указали путь до домашней директории (то есть переменная HOME тут не участвует) - мы используем текущую директорию, т.е. попробуйте вместо touch file ввести команду pwd. Во вторых, некоторые переменные, например HOME, не задаются в каких-то файлах, а генерируются какими-то программами. Допустим, когда вы логинитесь в систему, срабатывает программа login, которая берёт значение для переменной HOME в файле /etc/passwd.

    • @escobarbI4
      @escobarbI4 4 года назад

      Спасибо! )

  • @abych9696
    @abych9696 4 года назад +1

    так же на ~7:40 я так понимаю что sudo запускает команду не от имени суперпользователя а с правами суперпользователя, т.к. что бы запустить каманду от имени нужно написать $
    su "имя пользователя"" -с "команда"
    P.S. тысячу извенений автору, я просто пытаюсь освоить материал...)

    • @GNULinuxPro
      @GNULinuxPro  4 года назад +1

      Не совсем, sudo тоже запускает от процессы от имени - "sudo, sudoedit - execute a command as another user". Просто "запускать от имени суперпользователя" или "запускать с правами суперпользователя" - одно и тоже. Можете проверить, запустив команду sleep 30 как с помощью su (su - user -c "sleep 30"), так и с помощью sudo (sudo -u user sleep 20"), а потом сделать ps -ef | grep sleep и посмотреть, кто владелец процесса (в обоих случаях это будет user)

  • @babichfx
    @babichfx 3 года назад

    На моей системе home директория по умолчанию не создалась. Но если запустить adduser с ключом -m то должна создать. Или для уже созданного пользователя получилось добавить директорию через mkhomedir_helper.

    • @GNULinuxPro
      @GNULinuxPro  3 года назад

      Это будет в 19 части. Хотя про mkhomedir_helper впервые слышу =)

  • @babichfx
    @babichfx 3 года назад

    У меня закрылось подозрение, что .d - это некий формат перезаиси фала настроект. Если есть файл с именем file, то в директории file.d система будет искать файл изменяющий его частично или полностью. Это как-то так устроено, подпись .d? Возможно в следующих видео разбирается этот вопрос?

    • @GNULinuxPro
      @GNULinuxPro  3 года назад +2

      Не, суть в другом
      Предположим, есть какой-то сервис - daemon и у него есть конфиг - /etc/daemon.conf
      Так вот, иногда конфиг файл должен содержать много чего разного. Ну прям тонну информации. И эти настройки можно разделить на кусочки - тут у нас настройки юзеров, тут настройки ещё чего-то, тут ещё чего-то. Ну например, в профилях пользователя могут быть настройки как баша, так и всякие языковые настройки, настройки цветов, алиасов и т.д. и т.п. И вместо того, чтобы держать всё вместе в одном большом файле, логичнее разделить конфиг на множество файлов. А где размещать все эти куски конфига? Правильно, в /etc/daemon.d/. Т.е. директория, где лежат настройки. А в основном файле (/etc/daemon.cond) обычно есть ссылка, указывающая, что нужно искать продолжение конфига здесь, обычно это что-то вроде "include /etc/daemon.d/*.conf".
      Ну и ещё так бывает удобно добавлять и удалять какие-то настройки. Вместо того, чтобы заходить в файл и редактировать какие-то строчки, которые фиг пойми на какой строчке и как выглядят, легче просто заменить готовый файл. Скажем хочешь заменить цветовую схему - просто берёшь готовый файл настроек и заменяешь им старый.

    • @babichfx
      @babichfx 3 года назад +1

      Господи, как же круто!
      Конечно мало ещё знаю, но все кажется так классно продумано!

  • @babichfx
    @babichfx 3 года назад

    провел небольшой тест с очередностью загрузки login-shell
    В файлы загрузки записал строку echo "путь к текущему фалу ->" >> /home/user/filelog
    Вот что вышло:
    /etc/profile.d/freetype - >
    /etc/profile.d/gawk - >
    /etc/profile.d/home-local.sh - >
    /etc/profile.d/locale - >
    /etc/profile - >
    ~/.bashrc - >
    bash_profile не получается запустить, даже если строку ставлю в самое начало - она по видимому не срабатывает.
    /etc/bashrc тоже не засветился

    • @babichfx
      @babichfx 3 года назад

      /etc/profile - > идет после profile.d потому что я вставил строку в коце фйала после всего скрипта
      а вот вместо /etc/bashrc видимо используется /etc/bash.bashrs

    • @GNULinuxPro
      @GNULinuxPro  3 года назад +1

      @@babichfx название файлов может отличаться на дистрибутивах. Где-то это bashrc, где-то bash.bashrc. Где-то это .profile, где-то .bash_profile
      Там логика в следующем - в середине /etc/profile указано считывать настройки из profile.d, он сразу заходит туда и начинает по алфавиту запускать файлы. А потом и сам заканчивается

    • @babichfx
      @babichfx 3 года назад +1

      @@GNULinuxPro да, bash.bashrc я кстати оттуда взял)

  • @MRRIBO
    @MRRIBO 3 года назад

    Почему при создании нового пользователя у него нет домашних директорий? (Documents, Music и т д)

    • @GNULinuxPro
      @GNULinuxPro  3 года назад +1

      Это относится к графическому интерфейсу, к утилите XDG user directories. Когда пользователь логинится через графический интерфейс, запускается утилита xdg-user-dirs-update и создаёт директории согласно файлу /etc/xdg/user-dirs.defaults или $HOME/.config/user-dirs.dirs.
      Чуть больше об этом:
      wiki.archlinux.org/index.php/XDG_user_directories_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)

    • @MRRIBO
      @MRRIBO 3 года назад

      А почему при запуске рута и при попытке открыть sudoerc там отображается пустой файл, а когда открываешь через sudo то он заполнен?

    • @GNULinuxPro
      @GNULinuxPro  3 года назад +1

      Может вы не тот файл открываете? файл /etc/sudoers
      От рута тоже можно запустить visudo

    • @MRRIBO
      @MRRIBO 3 года назад

      @@GNULinuxPro АААА сорри, я тупой, миллион извинений за такой вопрос.

    • @GNULinuxPro
      @GNULinuxPro  3 года назад

      Да ладно, всё нормально, с кем не бывает?)

  • @user-tv4kh4pc7s
    @user-tv4kh4pc7s 2 года назад

    А какая операционная система однопользовательская, школол?