LPIC 104.5 часть четвертая: suid, sgid и sticky биты

Поділитися
Вставка
  • Опубліковано 7 лис 2024

КОМЕНТАРІ • 55

  • @KirillSemaev
    @KirillSemaev  7 років тому +3

    Свежий мануал: github.com/ksemaev

  • @Kreoni
    @Kreoni 9 років тому +18

    Кирилл, большое тебе спасибо за твои занятия. Устроился работать к хостинг провайдеру на 1-ую линию поддержки (всё на юниксах, естественно), очень хочу на вторую линию, чтобы подтянуться как админ в линуксе, до этого работал виндовым админом 3 года. Твои аналогии с виндой очень помогают понять че к чему.
    Заметил, что в линуксе проблема со структурированной литературой, по той же винде достаточно почитать книжек для подготовки к сертификации (enterprise admina получил), там шаг за шагом всё объясняется, после чего закрепляется лабораторными.
    Так же по сертификату Cisco - качаешь CCNA exploration и поехали, страница за страницей, всю модель OSI и принцип работы TCP/IP раскрывается шаг за шагом.
    Посмотрел за неделю уже половину твоих занятий, это единственное, что походит на структурированное обучение, шаг за шагом, за что я тебе бесконечно благодарен, за твой труд. Собственно, и возникает вопрос к тебе, есть ли вообще подобная структурированная литература хоть какая то? Centos Bible более менее, читал, Немета советуют, в общем то и всё. Но то ли это? Как ты сам учился? (именно про юниксы).
    С уважением.

    • @KirillSemaev
      @KirillSemaev  9 років тому +6

      +Valeriy Afonin Спасибо за то что доверил свое обучение моим видео, приятно) Я не верю в литературу в области айти, слишком быстро развивается и меняется сфера, устаревают руководства за год-три полностью, так что посоветовать читать не могу ничего. Только практика)

  • @sashashad
    @sashashad 3 роки тому +1

    Спасибо за урок!
    Всё понятно и оговорки можно докомпелировать уже у себя в голове - достаточно подумоть.

  • @Zvezd83
    @Zvezd83 11 місяців тому +1

    Какой же крутой преподаватель

  • @АндрейИвшин-ф4г
    @АндрейИвшин-ф4г 4 роки тому +1

    Спасибо за видео. Кстати очень доходчиво объяснили тему. Всё понятно.

  • @СергейАрхангельский-н2л

    Спасибо за видео.
    Не совсем понял смысл sticky бит на папку.
    Допустим коварный andrey не сможет сделать rm -f file.txt. Ну, а что ему помешает сделать, например, echo 0 > file.txt?

    • @KirillSemaev
      @KirillSemaev  9 років тому +3

      +Сергей Архангельский Это правильный вопрос. Sticky бит он не для защиты файлов, а для защиты структуры ветки папок, подпапок и файлов. То есть если вам надо создать определенную структуру, из которой пользователи не могут выходить (набор файлов и папок с заданными именами), но при этом наплевать что именно в ней хранят пользователи - это ваш вариант.
      У меня так в проектной организации сделано - мне безразлично что там у них внутри в сетевой папке, но мне надо чтоб они не плодили там лишних подпапок на верхних уровнях, и не могли переименовать существующие.

    • @СергейАрхангельский-н2л
      @СергейАрхангельский-н2л 9 років тому +2

      Кстати действительно классное видео. Пожалуй первое толковое видео о Linux на русском. Спасибо за труды.

  • @DmitriNesterov
    @DmitriNesterov Рік тому

    Здравствуйте! Спасибо за Ваши лекции! Есть вопрос. Есть группа readers. Есть скрипт letsread есть файл /usr/local/files/toread Нужно, чтобы пользователи группы readers могли прочитать файл, запустив скрипт letsread, но не командой cat /usr/local/files/letsread Что-то никак не соберу полученные знания для решения. Гуру, подскажите!

  • @rsvrsv1680
    @rsvrsv1680 7 років тому +7

    Про Sticky Bit. Т.е. создаем, например общий каталог , чтобы все могли туда писать. Но тогда любой может и удалять чужие файлы, что не есть хорошо. А вот если установить Sticky Bit, то каждый сможет удалять только свои файлы. linoxide.com/how-tos/stickbit-suid-guid/

    • @sashashad
      @sashashad 3 роки тому

      вот бы в Windows такую фичу!

  • @KirillSemaev
    @KirillSemaev  9 років тому +1

    +Kirill Scherbenok правильно запутались, я там бред сказал) Правлю.

  • @EugeneNuke
    @EugeneNuke 8 років тому +25

    Очень косячный урок.
    Про sticky для папок наврал. С установленным stiky bit из папки файлы удалять может суперпользователь(root) или владелец этих ФАЙЛОВ или владелец папки. Т.е., если в папку, доступную на запись для всех пользователей (/tmp) разные пользователи накидают своих файлов, то удалять они смогут только свои файлы.
    Если поставить SUID/SGID на bash скрипт (как в уроке), то все команды из скрипта всё равно будут выполняться из под залогиненного пользователя, так как при вызове из скрипта другой команды выполняются системные вызовы fork/exec, которые не наследуют SUID/SGID, поэтому пользователь/группа изменятся только для встроенных команд оболочки (типа cd, echo, kill...). И потом, проще было объяснить урок введя понятия *реальные* и *эффективные* UID/GID.
    Можно было скопировать программу */usr/bin/id* к себе в папку, поставить ей SUID/SGID и показать как всё работает.

    • @KirillSemaev
      @KirillSemaev  8 років тому +10

      Да, я много тут информации опустил чтоб не запугать, и в результате накосячил( Текстом буду объяснять, спасибо что заметили!

    • @kimiside
      @kimiside 7 років тому +1

      Если Вам не очень сложно, перезапишите пожалуйста. Мало того, что оговариваетесь, так ещё и вопросы остаются. Например, совершенно не очевидно для новичков, нужны ли «x» права для остальных, чтобы выполнить скрипт с SUID, или его уже достаточно. Про sticky bit на папке и овнера файлов тут уже писали. Про то, что дебиан и многие другие оси игнорируют suid на шелл-скриптах и выполняют их от имени запустившего - тоже не сказали.

    • @EugeneNuke
      @EugeneNuke 7 років тому +13

      Если лично у вас или вашей группы нет права на исполнение (x), то установка SUID не даст вам права выполнить файл.
      SUID/SGID на разного рода скриптах (bash, perl, etc) тупо игнорируются ядром linux.

    • @sashashad
      @sashashad 3 роки тому

      @@EugeneNuke Тогда зачем нужен SUID например для команды /bin/ping если на неё итак для остальных есть (x) - её итак все могут запускать.

    • @EugeneNuke
      @EugeneNuke 3 роки тому +1

      @@sashashad ping использует протокол ICMP, а не стандартные TCP/UDP, поэтому должен использовать RAW socket, который доступен только привилегированным пользователям/процессам (через RAW socket можно собрать сетевой пакет с любым содержимым)

  • @ВалераЯковенко-э9у
    @ВалераЯковенко-э9у 5 років тому +1

    Спасибо, за все видео, очень познавательно и главное доходчиво) Вопрос по уроку. Создал баш скриптик, от пользователя root. Внутри обычная команда echo. Добавил файлу Suid/Sgid биты.
    -rwSrwS--x 1 root root 33 янв 9 20:24 aaa.sh* , так выглядят права на файл. Но при этом при попытке запуска от обычного (моего) пользователя, пишет что отказано в доступе.
    valera@ValerasPC:~$ ./aaa.sh
    /bin/bash: ./aaa.sh: Permission denied
    Вот собственно и вопрос, почему отказано в доступе на выполнение, если есть специальные биты, так помимо этого есть права на выполнение у others?

    • @lexjust
      @lexjust 4 роки тому

      у меня возник аналогичный вопрос

    • @sashashad
      @sashashad 3 роки тому

      Цитирую
      Evgenii Ianiuk
      5 лет назад
      "Если поставить SUID/SGID на bash скрипт (как в уроке), то все команды из скрипта всё равно будут выполняться из под залогиненного пользователя, так как при вызове из скрипта другой команды выполняются системные вызовы fork/exec, которые не наследуют SUID/SGID, поэтому пользователь/группа изменятся только для встроенных команд оболочки (типа cd, echo, kill...). И потом, проще было объяснить урок введя понятия реальные и эффективные UID/GID.
      Можно было скопировать программу /usr/bin/id к себе в папку, поставить ей SUID/SGID и показать как всё работает."

    • @dmitryturmanov5441
      @dmitryturmanov5441 2 роки тому

      Надо перед тем как сделать суид гутд чтоб был +х

  • @markpoll2469
    @markpoll2469 9 років тому +1

    Урок получился очень интересный. Спасибо. Желательно побольше практических примеров примеров, а не выдуманных (то есть где, когда и зачем это применяется).
    Вопрос: как создать безопасную общую папку для пользователей локального компьютера? guid подойдет ? Как для конкретной папки сделать umask ? Еще раз спасибо.

    • @KirillSemaev
      @KirillSemaev  9 років тому

      Mark Poll Я именно теоретическую часть тут емко стараюсь давать без практических примеров особенных, по ним отдельный плейлист. Что значит безопасная общая папка не совсем понимаю, уточните пожалуйста. umask, ниже Кирилл пишет, действительно не лучшей вариант для отдельной папки, тут лучше acl настраивать, но мы до этого еще не дошли: askubuntu.com/questions/44534/how-to-set-umask-for-a-specific-folder

    • @markpoll2469
      @markpoll2469 9 років тому

      Kirill Semaev я уже все сделал. Создал папку в home, создал группу и добавил кого надо :) и права 770. Вот это наверное безопасно. Когда будет новые уроки ?

    • @KirillSemaev
      @KirillSemaev  9 років тому +1

      Mark Poll ну разобрались и ок) сегодня начинаю записывать и выкладывать следующую серию уроков практических

  • @evil1toad
    @evil1toad 3 роки тому +4

    Как то странно этот LPIC построен. Напмомню что до сих пор, а это конец курса почти, ни про создание пользоветелей ни групп, речь не шла, зато мы меняем им права

    • @sashashad
      @sashashad 3 роки тому

      Да, это какой-то трешхолд

  • @ДмитрийЕремеев-о4п
    @ДмитрийЕремеев-о4п 9 років тому +1

    На 5:58 оговорка? "и по умолчанию права на пинг есть только у рута, но если мы хотим, чтоб все пользователи могли пользоваться рутом" -по смыслу "пингом" подходит -", то мы должны разрешить им от имени рута запускать программу пинг". А за урок спасибо!

    • @KirillSemaev
      @KirillSemaev  9 років тому +1

      Дмитрий Еремеев я тут вообще как-то криво сказал)) Права сразу есть у всех потому как стоит suid-бит) Спасибо за отметку, сейчас поправлю.

  • @alexpyatka2583
    @alexpyatka2583 3 роки тому +1

    🙋👍

  • @sashashad
    @sashashad 3 роки тому

    А почему нельзя поставить SUID на папку? Типа подменить владельцев файлов внутри папки

  • @OPELLlEK
    @OPELLlEK 9 років тому +1

    Как-то на этом уроке я поплыл. Не могу сообразить, в чём практическая разница - устанавливать SUID, или просто выдавать права на выполнение (x) другим пользователям? Кроме того, что в одном случае что-либо будет запускаться непосредственно пользователем, либо в случае с SUID пользователем, но от имени владельца. Это нужно только для файлов, которые root требуют, чтобы sudo не писать?
    Также непонятная разница между SUID и SGID. И то и другое нужно для того, чтобы другие пользователи (others), то бишь не-владельцы файла и не входящие в группу владельцев, могли этот файл запускать. Какая разница, делают они это от имени группы или от имени владельца файла? И тем более, когда два этих бита одновременно стоят. Т.е. если всё же какая-то разница есть, то, по идее, запуск от имени владельца по правам должен как бы перекрывать запуск от имени группы.
    Немного каша в голове, извиняюсь. Если вопрос непонятен, попробую переформулировать.

    • @KirillSemaev
      @KirillSemaev  9 років тому +1

      Невероятно хороший вопрос, пробую объяснить:
      1) Вы можете написать скрипт и дать на него права права исполнения всем, но если этот скрипт выполняет что-то, на что права есть только у root (доступ к железу, конфигу системы и т.д.), то отрабатывать он будет только в том случае если владелец root и установлен SUID. То есть даже полные права у группы others этот скрипт выполнить не дадут без SUID

    • @KirillSemaev
      @KirillSemaev  9 років тому +5

      +3y6pe
      2) SGID редко ставится на файл (тем более вместе с SUID), чаще на папку (а-ля включение наследование). Тем не менее можно установить SUID и SGID на скрипт, тогда скрипт будет запускаться с правами владельца, но файлы, создаваемые скриптом будут иметь в качестве GID группу владельцев скрипта. То есть тонкое такое извращение, не уверен что оно пригодиться когда-то, но суть в нем))

    • @OPELLlEK
      @OPELLlEK 9 років тому +2

      +Kirill Semaev Оказывается, забыл поблагодарить. Собственно, спасибо за разъяснение)

  • @oleksandrlytvyn532
    @oleksandrlytvyn532 3 роки тому

    Спасибо

  • @АйдарХабиров-т3к
    @АйдарХабиров-т3к 6 років тому

    я как раз голову ломал почему на сломаном WSL ping не запускается обычным пользователем
    а в винде что-нибудь подобное есть?
    есть конечно runas но не то, засвечивает пароль или с savecred надо заморачиваться.

    • @KirillSemaev
      @KirillSemaev  5 років тому

      не в курсе по винде, все забыл уже по ней счастливо

  • @Patifonii
    @Patifonii 4 роки тому +1

    сейчас на ping нет этого бита. Но он все равно работает )

  • @fivaproldge
    @fivaproldge 6 років тому

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

    • @KirillSemaev
      @KirillSemaev  5 років тому +2

      да, я его переписать быть должен) Может и переписал, не помню уже)

  • @yataganenko
    @yataganenko 9 років тому +2

    ЗАЧЕМ suid НУЖЕН???
    файл -rwx------ 1 yat yat 24 Ноя 7 16:06 1.sh
    захожу с другого пользователя zsh: Отказано в доступе: ./1.sh
    только поставлю chmod o+x 1.sh работает но в ps показывает другого пользователя(того от которого запустил) а не yat
    ТАК ЗАЧЕМ ЖЕ ОН НУЖЕН ТОГДА????

    • @KirillSemaev
      @KirillSemaev  9 років тому

      Сейчас попробую смоделирую, а то запутался в вопросе, я в нем нигде не вижу ничего про suid)

    • @KirillSemaev
      @KirillSemaev  9 років тому +4

      +Eugene Solodovnyk
      так вроде понял. У вас стояли права 700 и владелец yat. Соответственно ни у кого ни на что прав нет кроме него.
      вы поставлили 711 и у вас заработало, но от другого пользователя.
      Во-первых, вы кажется неправильно пишете, если бы вы поставили suid, то я бы понял вопрос. Только тогда у вас на файл было бы разрешение 4700 изначально, т.е. не -rwx------ а rws------
      Тогда все понятно. Права 700, какие там биты не ставь не даст прав другим на исполнение. У других должны быть права на запуск (ваше o+x) и тогда они смогут запускать скрипт, но от имени владельца.
      То есть само по себе право 700, ставь там suid не ставь, все равно никому кроме владельца запускать ничего не дает.
      Так яснее?)

    • @yataganenko
      @yataganenko 9 років тому

      +Kirill Semaev, да права 4700.
      А почему ps показывает что не владелец запустил скрипт, а тот пользователь от которого я запускаю?

    • @kimiside
      @kimiside 7 років тому +5

      Вы наверняка уже всё выяснили, но вопрос висит, люди читают, поэтому отвечу: Многие линукс-системы игнорируют SUID для интерпретируемых исполняемых файлов, т.е. для shell-скриптов, программ на python и прочих языках, способных компилировать скрипт на лету. Это сделано исключительно для безопасности. Совершенно не unix way, конечно, не доверяют юзерам, но видимо слишком большие и частые дыры появлялись по этой причине.

    • @sashashad
      @sashashad 3 роки тому

      @@KirillSemaev О, так понятнее. Выходит это просто позволяет выполнить От имени владельца, но со своими правами?

  • @sergeystal15
    @sergeystal15 4 роки тому

    я нефига не понял, я установил эти биты но выполнить без рута от другого пользователя ничего не могу. смысл этих битов я не понял!

    • @АрсМаг
      @АрсМаг 3 роки тому +1

      Тут не совсем верное объяснение)
      Внутри скрипта команды будут выполняться от пользователя который запустил скрипт

  • @niksarov
    @niksarov 7 місяців тому

    thnk

  • @sergiusvysokochtimiy
    @sergiusvysokochtimiy 8 років тому +2

    SUID не отвечает за права выполнения, команда будет будет выполнена по любому если установлен х для этого пользователя. SUID - это разрешение заходить в комнаты в которые разрешено заходить владельцу. К примеру, чтобы пользоваться туалетом ключ надо взять у владельца. SUID - и есть этот ключ. Не утверждаю, но кажется что так. К примеру ping и без SUID запуститься но не получит доступа к ... чему нибудь без прав ROOT.

    • @KirillSemaev
      @KirillSemaev  8 років тому

      +Sergius Vysokochtimiy я запутался о чем вы, но с выводами согласен)

    • @sashashad
      @sashashad 3 роки тому

      Отличное кстати объяснение если вчитаться. Благодарю!