Кирилл, большое тебе спасибо за твои занятия. Устроился работать к хостинг провайдеру на 1-ую линию поддержки (всё на юниксах, естественно), очень хочу на вторую линию, чтобы подтянуться как админ в линуксе, до этого работал виндовым админом 3 года. Твои аналогии с виндой очень помогают понять че к чему. Заметил, что в линуксе проблема со структурированной литературой, по той же винде достаточно почитать книжек для подготовки к сертификации (enterprise admina получил), там шаг за шагом всё объясняется, после чего закрепляется лабораторными. Так же по сертификату Cisco - качаешь CCNA exploration и поехали, страница за страницей, всю модель OSI и принцип работы TCP/IP раскрывается шаг за шагом. Посмотрел за неделю уже половину твоих занятий, это единственное, что походит на структурированное обучение, шаг за шагом, за что я тебе бесконечно благодарен, за твой труд. Собственно, и возникает вопрос к тебе, есть ли вообще подобная структурированная литература хоть какая то? Centos Bible более менее, читал, Немета советуют, в общем то и всё. Но то ли это? Как ты сам учился? (именно про юниксы). С уважением.
+Valeriy Afonin Спасибо за то что доверил свое обучение моим видео, приятно) Я не верю в литературу в области айти, слишком быстро развивается и меняется сфера, устаревают руководства за год-три полностью, так что посоветовать читать не могу ничего. Только практика)
Спасибо за видео. Не совсем понял смысл sticky бит на папку. Допустим коварный andrey не сможет сделать rm -f file.txt. Ну, а что ему помешает сделать, например, echo 0 > file.txt?
+Сергей Архангельский Это правильный вопрос. Sticky бит он не для защиты файлов, а для защиты структуры ветки папок, подпапок и файлов. То есть если вам надо создать определенную структуру, из которой пользователи не могут выходить (набор файлов и папок с заданными именами), но при этом наплевать что именно в ней хранят пользователи - это ваш вариант. У меня так в проектной организации сделано - мне безразлично что там у них внутри в сетевой папке, но мне надо чтоб они не плодили там лишних подпапок на верхних уровнях, и не могли переименовать существующие.
Здравствуйте! Спасибо за Ваши лекции! Есть вопрос. Есть группа readers. Есть скрипт letsread есть файл /usr/local/files/toread Нужно, чтобы пользователи группы readers могли прочитать файл, запустив скрипт letsread, но не командой cat /usr/local/files/letsread Что-то никак не соберу полученные знания для решения. Гуру, подскажите!
Про Sticky Bit. Т.е. создаем, например общий каталог , чтобы все могли туда писать. Но тогда любой может и удалять чужие файлы, что не есть хорошо. А вот если установить Sticky Bit, то каждый сможет удалять только свои файлы. linoxide.com/how-tos/stickbit-suid-guid/
Очень косячный урок. Про sticky для папок наврал. С установленным stiky bit из папки файлы удалять может суперпользователь(root) или владелец этих ФАЙЛОВ или владелец папки. Т.е., если в папку, доступную на запись для всех пользователей (/tmp) разные пользователи накидают своих файлов, то удалять они смогут только свои файлы. Если поставить SUID/SGID на bash скрипт (как в уроке), то все команды из скрипта всё равно будут выполняться из под залогиненного пользователя, так как при вызове из скрипта другой команды выполняются системные вызовы fork/exec, которые не наследуют SUID/SGID, поэтому пользователь/группа изменятся только для встроенных команд оболочки (типа cd, echo, kill...). И потом, проще было объяснить урок введя понятия *реальные* и *эффективные* UID/GID. Можно было скопировать программу */usr/bin/id* к себе в папку, поставить ей SUID/SGID и показать как всё работает.
Если Вам не очень сложно, перезапишите пожалуйста. Мало того, что оговариваетесь, так ещё и вопросы остаются. Например, совершенно не очевидно для новичков, нужны ли «x» права для остальных, чтобы выполнить скрипт с SUID, или его уже достаточно. Про sticky bit на папке и овнера файлов тут уже писали. Про то, что дебиан и многие другие оси игнорируют suid на шелл-скриптах и выполняют их от имени запустившего - тоже не сказали.
Если лично у вас или вашей группы нет права на исполнение (x), то установка SUID не даст вам права выполнить файл. SUID/SGID на разного рода скриптах (bash, perl, etc) тупо игнорируются ядром linux.
@@sashashad ping использует протокол ICMP, а не стандартные TCP/UDP, поэтому должен использовать RAW socket, который доступен только привилегированным пользователям/процессам (через RAW socket можно собрать сетевой пакет с любым содержимым)
Спасибо, за все видео, очень познавательно и главное доходчиво) Вопрос по уроку. Создал баш скриптик, от пользователя 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?
Цитирую Evgenii Ianiuk 5 лет назад "Если поставить SUID/SGID на bash скрипт (как в уроке), то все команды из скрипта всё равно будут выполняться из под залогиненного пользователя, так как при вызове из скрипта другой команды выполняются системные вызовы fork/exec, которые не наследуют SUID/SGID, поэтому пользователь/группа изменятся только для встроенных команд оболочки (типа cd, echo, kill...). И потом, проще было объяснить урок введя понятия реальные и эффективные UID/GID. Можно было скопировать программу /usr/bin/id к себе в папку, поставить ей SUID/SGID и показать как всё работает."
Урок получился очень интересный. Спасибо. Желательно побольше практических примеров примеров, а не выдуманных (то есть где, когда и зачем это применяется). Вопрос: как создать безопасную общую папку для пользователей локального компьютера? guid подойдет ? Как для конкретной папки сделать umask ? Еще раз спасибо.
Mark Poll Я именно теоретическую часть тут емко стараюсь давать без практических примеров особенных, по ним отдельный плейлист. Что значит безопасная общая папка не совсем понимаю, уточните пожалуйста. umask, ниже Кирилл пишет, действительно не лучшей вариант для отдельной папки, тут лучше acl настраивать, но мы до этого еще не дошли: askubuntu.com/questions/44534/how-to-set-umask-for-a-specific-folder
Kirill Semaev я уже все сделал. Создал папку в home, создал группу и добавил кого надо :) и права 770. Вот это наверное безопасно. Когда будет новые уроки ?
Как то странно этот LPIC построен. Напмомню что до сих пор, а это конец курса почти, ни про создание пользоветелей ни групп, речь не шла, зато мы меняем им права
На 5:58 оговорка? "и по умолчанию права на пинг есть только у рута, но если мы хотим, чтоб все пользователи могли пользоваться рутом" -по смыслу "пингом" подходит -", то мы должны разрешить им от имени рута запускать программу пинг". А за урок спасибо!
Как-то на этом уроке я поплыл. Не могу сообразить, в чём практическая разница - устанавливать SUID, или просто выдавать права на выполнение (x) другим пользователям? Кроме того, что в одном случае что-либо будет запускаться непосредственно пользователем, либо в случае с SUID пользователем, но от имени владельца. Это нужно только для файлов, которые root требуют, чтобы sudo не писать? Также непонятная разница между SUID и SGID. И то и другое нужно для того, чтобы другие пользователи (others), то бишь не-владельцы файла и не входящие в группу владельцев, могли этот файл запускать. Какая разница, делают они это от имени группы или от имени владельца файла? И тем более, когда два этих бита одновременно стоят. Т.е. если всё же какая-то разница есть, то, по идее, запуск от имени владельца по правам должен как бы перекрывать запуск от имени группы. Немного каша в голове, извиняюсь. Если вопрос непонятен, попробую переформулировать.
Невероятно хороший вопрос, пробую объяснить: 1) Вы можете написать скрипт и дать на него права права исполнения всем, но если этот скрипт выполняет что-то, на что права есть только у root (доступ к железу, конфигу системы и т.д.), то отрабатывать он будет только в том случае если владелец root и установлен SUID. То есть даже полные права у группы others этот скрипт выполнить не дадут без SUID
+3y6pe 2) SGID редко ставится на файл (тем более вместе с SUID), чаще на папку (а-ля включение наследование). Тем не менее можно установить SUID и SGID на скрипт, тогда скрипт будет запускаться с правами владельца, но файлы, создаваемые скриптом будут иметь в качестве GID группу владельцев скрипта. То есть тонкое такое извращение, не уверен что оно пригодиться когда-то, но суть в нем))
я как раз голову ломал почему на сломаном WSL ping не запускается обычным пользователем а в винде что-нибудь подобное есть? есть конечно runas но не то, засвечивает пароль или с savecred надо заморачиваться.
ЗАЧЕМ suid НУЖЕН??? файл -rwx------ 1 yat yat 24 Ноя 7 16:06 1.sh захожу с другого пользователя zsh: Отказано в доступе: ./1.sh только поставлю chmod o+x 1.sh работает но в ps показывает другого пользователя(того от которого запустил) а не yat ТАК ЗАЧЕМ ЖЕ ОН НУЖЕН ТОГДА????
+Eugene Solodovnyk так вроде понял. У вас стояли права 700 и владелец yat. Соответственно ни у кого ни на что прав нет кроме него. вы поставлили 711 и у вас заработало, но от другого пользователя. Во-первых, вы кажется неправильно пишете, если бы вы поставили suid, то я бы понял вопрос. Только тогда у вас на файл было бы разрешение 4700 изначально, т.е. не -rwx------ а rws------ Тогда все понятно. Права 700, какие там биты не ставь не даст прав другим на исполнение. У других должны быть права на запуск (ваше o+x) и тогда они смогут запускать скрипт, но от имени владельца. То есть само по себе право 700, ставь там suid не ставь, все равно никому кроме владельца запускать ничего не дает. Так яснее?)
Вы наверняка уже всё выяснили, но вопрос висит, люди читают, поэтому отвечу: Многие линукс-системы игнорируют SUID для интерпретируемых исполняемых файлов, т.е. для shell-скриптов, программ на python и прочих языках, способных компилировать скрипт на лету. Это сделано исключительно для безопасности. Совершенно не unix way, конечно, не доверяют юзерам, но видимо слишком большие и частые дыры появлялись по этой причине.
SUID не отвечает за права выполнения, команда будет будет выполнена по любому если установлен х для этого пользователя. SUID - это разрешение заходить в комнаты в которые разрешено заходить владельцу. К примеру, чтобы пользоваться туалетом ключ надо взять у владельца. SUID - и есть этот ключ. Не утверждаю, но кажется что так. К примеру ping и без SUID запуститься но не получит доступа к ... чему нибудь без прав ROOT.
Свежий мануал: github.com/ksemaev
Кирилл, большое тебе спасибо за твои занятия. Устроился работать к хостинг провайдеру на 1-ую линию поддержки (всё на юниксах, естественно), очень хочу на вторую линию, чтобы подтянуться как админ в линуксе, до этого работал виндовым админом 3 года. Твои аналогии с виндой очень помогают понять че к чему.
Заметил, что в линуксе проблема со структурированной литературой, по той же винде достаточно почитать книжек для подготовки к сертификации (enterprise admina получил), там шаг за шагом всё объясняется, после чего закрепляется лабораторными.
Так же по сертификату Cisco - качаешь CCNA exploration и поехали, страница за страницей, всю модель OSI и принцип работы TCP/IP раскрывается шаг за шагом.
Посмотрел за неделю уже половину твоих занятий, это единственное, что походит на структурированное обучение, шаг за шагом, за что я тебе бесконечно благодарен, за твой труд. Собственно, и возникает вопрос к тебе, есть ли вообще подобная структурированная литература хоть какая то? Centos Bible более менее, читал, Немета советуют, в общем то и всё. Но то ли это? Как ты сам учился? (именно про юниксы).
С уважением.
+Valeriy Afonin Спасибо за то что доверил свое обучение моим видео, приятно) Я не верю в литературу в области айти, слишком быстро развивается и меняется сфера, устаревают руководства за год-три полностью, так что посоветовать читать не могу ничего. Только практика)
Спасибо за урок!
Всё понятно и оговорки можно докомпелировать уже у себя в голове - достаточно подумоть.
Какой же крутой преподаватель
Спасибо за видео. Кстати очень доходчиво объяснили тему. Всё понятно.
Спасибо за видео.
Не совсем понял смысл sticky бит на папку.
Допустим коварный andrey не сможет сделать rm -f file.txt. Ну, а что ему помешает сделать, например, echo 0 > file.txt?
+Сергей Архангельский Это правильный вопрос. Sticky бит он не для защиты файлов, а для защиты структуры ветки папок, подпапок и файлов. То есть если вам надо создать определенную структуру, из которой пользователи не могут выходить (набор файлов и папок с заданными именами), но при этом наплевать что именно в ней хранят пользователи - это ваш вариант.
У меня так в проектной организации сделано - мне безразлично что там у них внутри в сетевой папке, но мне надо чтоб они не плодили там лишних подпапок на верхних уровнях, и не могли переименовать существующие.
Кстати действительно классное видео. Пожалуй первое толковое видео о Linux на русском. Спасибо за труды.
Здравствуйте! Спасибо за Ваши лекции! Есть вопрос. Есть группа readers. Есть скрипт letsread есть файл /usr/local/files/toread Нужно, чтобы пользователи группы readers могли прочитать файл, запустив скрипт letsread, но не командой cat /usr/local/files/letsread Что-то никак не соберу полученные знания для решения. Гуру, подскажите!
Про Sticky Bit. Т.е. создаем, например общий каталог , чтобы все могли туда писать. Но тогда любой может и удалять чужие файлы, что не есть хорошо. А вот если установить Sticky Bit, то каждый сможет удалять только свои файлы. linoxide.com/how-tos/stickbit-suid-guid/
вот бы в Windows такую фичу!
+Kirill Scherbenok правильно запутались, я там бред сказал) Правлю.
Очень косячный урок.
Про sticky для папок наврал. С установленным stiky bit из папки файлы удалять может суперпользователь(root) или владелец этих ФАЙЛОВ или владелец папки. Т.е., если в папку, доступную на запись для всех пользователей (/tmp) разные пользователи накидают своих файлов, то удалять они смогут только свои файлы.
Если поставить SUID/SGID на bash скрипт (как в уроке), то все команды из скрипта всё равно будут выполняться из под залогиненного пользователя, так как при вызове из скрипта другой команды выполняются системные вызовы fork/exec, которые не наследуют SUID/SGID, поэтому пользователь/группа изменятся только для встроенных команд оболочки (типа cd, echo, kill...). И потом, проще было объяснить урок введя понятия *реальные* и *эффективные* UID/GID.
Можно было скопировать программу */usr/bin/id* к себе в папку, поставить ей SUID/SGID и показать как всё работает.
Да, я много тут информации опустил чтоб не запугать, и в результате накосячил( Текстом буду объяснять, спасибо что заметили!
Если Вам не очень сложно, перезапишите пожалуйста. Мало того, что оговариваетесь, так ещё и вопросы остаются. Например, совершенно не очевидно для новичков, нужны ли «x» права для остальных, чтобы выполнить скрипт с SUID, или его уже достаточно. Про sticky bit на папке и овнера файлов тут уже писали. Про то, что дебиан и многие другие оси игнорируют suid на шелл-скриптах и выполняют их от имени запустившего - тоже не сказали.
Если лично у вас или вашей группы нет права на исполнение (x), то установка SUID не даст вам права выполнить файл.
SUID/SGID на разного рода скриптах (bash, perl, etc) тупо игнорируются ядром linux.
@@EugeneNuke Тогда зачем нужен SUID например для команды /bin/ping если на неё итак для остальных есть (x) - её итак все могут запускать.
@@sashashad ping использует протокол ICMP, а не стандартные TCP/UDP, поэтому должен использовать RAW socket, который доступен только привилегированным пользователям/процессам (через RAW socket можно собрать сетевой пакет с любым содержимым)
Спасибо, за все видео, очень познавательно и главное доходчиво) Вопрос по уроку. Создал баш скриптик, от пользователя 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?
у меня возник аналогичный вопрос
Цитирую
Evgenii Ianiuk
5 лет назад
"Если поставить SUID/SGID на bash скрипт (как в уроке), то все команды из скрипта всё равно будут выполняться из под залогиненного пользователя, так как при вызове из скрипта другой команды выполняются системные вызовы fork/exec, которые не наследуют SUID/SGID, поэтому пользователь/группа изменятся только для встроенных команд оболочки (типа cd, echo, kill...). И потом, проще было объяснить урок введя понятия реальные и эффективные UID/GID.
Можно было скопировать программу /usr/bin/id к себе в папку, поставить ей SUID/SGID и показать как всё работает."
Надо перед тем как сделать суид гутд чтоб был +х
Урок получился очень интересный. Спасибо. Желательно побольше практических примеров примеров, а не выдуманных (то есть где, когда и зачем это применяется).
Вопрос: как создать безопасную общую папку для пользователей локального компьютера? guid подойдет ? Как для конкретной папки сделать umask ? Еще раз спасибо.
Mark Poll Я именно теоретическую часть тут емко стараюсь давать без практических примеров особенных, по ним отдельный плейлист. Что значит безопасная общая папка не совсем понимаю, уточните пожалуйста. umask, ниже Кирилл пишет, действительно не лучшей вариант для отдельной папки, тут лучше acl настраивать, но мы до этого еще не дошли: askubuntu.com/questions/44534/how-to-set-umask-for-a-specific-folder
Kirill Semaev я уже все сделал. Создал папку в home, создал группу и добавил кого надо :) и права 770. Вот это наверное безопасно. Когда будет новые уроки ?
Mark Poll ну разобрались и ок) сегодня начинаю записывать и выкладывать следующую серию уроков практических
Как то странно этот LPIC построен. Напмомню что до сих пор, а это конец курса почти, ни про создание пользоветелей ни групп, речь не шла, зато мы меняем им права
Да, это какой-то трешхолд
На 5:58 оговорка? "и по умолчанию права на пинг есть только у рута, но если мы хотим, чтоб все пользователи могли пользоваться рутом" -по смыслу "пингом" подходит -", то мы должны разрешить им от имени рута запускать программу пинг". А за урок спасибо!
Дмитрий Еремеев я тут вообще как-то криво сказал)) Права сразу есть у всех потому как стоит suid-бит) Спасибо за отметку, сейчас поправлю.
🙋👍
А почему нельзя поставить SUID на папку? Типа подменить владельцев файлов внутри папки
Как-то на этом уроке я поплыл. Не могу сообразить, в чём практическая разница - устанавливать SUID, или просто выдавать права на выполнение (x) другим пользователям? Кроме того, что в одном случае что-либо будет запускаться непосредственно пользователем, либо в случае с SUID пользователем, но от имени владельца. Это нужно только для файлов, которые root требуют, чтобы sudo не писать?
Также непонятная разница между SUID и SGID. И то и другое нужно для того, чтобы другие пользователи (others), то бишь не-владельцы файла и не входящие в группу владельцев, могли этот файл запускать. Какая разница, делают они это от имени группы или от имени владельца файла? И тем более, когда два этих бита одновременно стоят. Т.е. если всё же какая-то разница есть, то, по идее, запуск от имени владельца по правам должен как бы перекрывать запуск от имени группы.
Немного каша в голове, извиняюсь. Если вопрос непонятен, попробую переформулировать.
Невероятно хороший вопрос, пробую объяснить:
1) Вы можете написать скрипт и дать на него права права исполнения всем, но если этот скрипт выполняет что-то, на что права есть только у root (доступ к железу, конфигу системы и т.д.), то отрабатывать он будет только в том случае если владелец root и установлен SUID. То есть даже полные права у группы others этот скрипт выполнить не дадут без SUID
+3y6pe
2) SGID редко ставится на файл (тем более вместе с SUID), чаще на папку (а-ля включение наследование). Тем не менее можно установить SUID и SGID на скрипт, тогда скрипт будет запускаться с правами владельца, но файлы, создаваемые скриптом будут иметь в качестве GID группу владельцев скрипта. То есть тонкое такое извращение, не уверен что оно пригодиться когда-то, но суть в нем))
+Kirill Semaev Оказывается, забыл поблагодарить. Собственно, спасибо за разъяснение)
Спасибо
я как раз голову ломал почему на сломаном WSL ping не запускается обычным пользователем
а в винде что-нибудь подобное есть?
есть конечно runas но не то, засвечивает пароль или с savecred надо заморачиваться.
не в курсе по винде, все забыл уже по ней счастливо
сейчас на ping нет этого бита. Но он все равно работает )
че-т много косяков (судя по каментам). Пропущу-ка я этот видос )) Все предыдущие смотрел, лайков отгрузил
да, я его переписать быть должен) Может и переписал, не помню уже)
ЗАЧЕМ suid НУЖЕН???
файл -rwx------ 1 yat yat 24 Ноя 7 16:06 1.sh
захожу с другого пользователя zsh: Отказано в доступе: ./1.sh
только поставлю chmod o+x 1.sh работает но в ps показывает другого пользователя(того от которого запустил) а не yat
ТАК ЗАЧЕМ ЖЕ ОН НУЖЕН ТОГДА????
Сейчас попробую смоделирую, а то запутался в вопросе, я в нем нигде не вижу ничего про suid)
+Eugene Solodovnyk
так вроде понял. У вас стояли права 700 и владелец yat. Соответственно ни у кого ни на что прав нет кроме него.
вы поставлили 711 и у вас заработало, но от другого пользователя.
Во-первых, вы кажется неправильно пишете, если бы вы поставили suid, то я бы понял вопрос. Только тогда у вас на файл было бы разрешение 4700 изначально, т.е. не -rwx------ а rws------
Тогда все понятно. Права 700, какие там биты не ставь не даст прав другим на исполнение. У других должны быть права на запуск (ваше o+x) и тогда они смогут запускать скрипт, но от имени владельца.
То есть само по себе право 700, ставь там suid не ставь, все равно никому кроме владельца запускать ничего не дает.
Так яснее?)
+Kirill Semaev, да права 4700.
А почему ps показывает что не владелец запустил скрипт, а тот пользователь от которого я запускаю?
Вы наверняка уже всё выяснили, но вопрос висит, люди читают, поэтому отвечу: Многие линукс-системы игнорируют SUID для интерпретируемых исполняемых файлов, т.е. для shell-скриптов, программ на python и прочих языках, способных компилировать скрипт на лету. Это сделано исключительно для безопасности. Совершенно не unix way, конечно, не доверяют юзерам, но видимо слишком большие и частые дыры появлялись по этой причине.
@@KirillSemaev О, так понятнее. Выходит это просто позволяет выполнить От имени владельца, но со своими правами?
я нефига не понял, я установил эти биты но выполнить без рута от другого пользователя ничего не могу. смысл этих битов я не понял!
Тут не совсем верное объяснение)
Внутри скрипта команды будут выполняться от пользователя который запустил скрипт
thnk
SUID не отвечает за права выполнения, команда будет будет выполнена по любому если установлен х для этого пользователя. SUID - это разрешение заходить в комнаты в которые разрешено заходить владельцу. К примеру, чтобы пользоваться туалетом ключ надо взять у владельца. SUID - и есть этот ключ. Не утверждаю, но кажется что так. К примеру ping и без SUID запуститься но не получит доступа к ... чему нибудь без прав ROOT.
+Sergius Vysokochtimiy я запутался о чем вы, но с выводами согласен)
Отличное кстати объяснение если вчитаться. Благодарю!