<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; Вопрос по залогиниванию]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=36831</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=36831&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Вопрос по залогиниванию».]]></description>
		<lastBuildDate>Tue, 25 Nov 2014 15:13:37 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Вопрос по залогиниванию]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=432746#p432746</link>
			<description><![CDATA[<p>Спасибо, подробно)</p>]]></description>
			<author><![CDATA[null@example.com (Aether)]]></author>
			<pubDate>Tue, 25 Nov 2014 15:13:37 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=432746#p432746</guid>
		</item>
		<item>
			<title><![CDATA[Re: Вопрос по залогиниванию]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=432669#p432669</link>
			<description><![CDATA[<div class="quotebox"><cite>Aether пишет:</cite><blockquote><p>в<strong>ы</strong>ходных данных</p></blockquote></div><p>опечатка...<br /></p><div class="quotebox"><cite>Aether пишет:</cite><blockquote><p>Так вот, предположим, мы обратились к файлу, с запрещённой для нас записью, стало быть именно ядро должно принять решение можно нам с ним работать или нет, сверяя, UID, GID... Write() вернёт программе результат: либо отказ в доступе, либо операция исполнена.</p></blockquote></div><p>да всё так, только это всё делается во время open(2)<br /></p><div class="quotebox"><cite>Aether пишет:</cite><blockquote><p>login имеет изначально права root, setuid понижает её права до UID выбранного пользователя?</p></blockquote></div><p>да, но это делается уже для нового процесса, после fork&#039;а, но до exec&#039;а. т.е. сам login это не затрагивает...<br /></p><div class="quotebox"><cite>Aether пишет:</cite><blockquote><p>Получается, если я создам программу, включу библиотеку unistd.h, сделаю вызов setuid() на любого пользователя, то она либо переключит UID процесса в случае запуска из под root, либо выдаст ошибку при запуске из-под любой другой учётной записи.</p></blockquote></div><p>да...<br /></p><div class="quotebox"><cite>Aether пишет:</cite><blockquote><p>Если можно, то хотел бы уяснить: что такое реальный, а что такое эффективный UID?</p></blockquote></div><p>они одинаковы почти всегда: euid отличается только у программ с установленным setuid битом... в остальных случаях их можно не различать...</p>]]></description>
			<author><![CDATA[null@example.com (Fat-Zer)]]></author>
			<pubDate>Tue, 25 Nov 2014 01:12:44 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=432669#p432669</guid>
		</item>
		<item>
			<title><![CDATA[Re: Вопрос по залогиниванию]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=432666#p432666</link>
			<description><![CDATA[<div class="quotebox"><cite>Aether пишет:</cite><blockquote><p>Так это сути дела не изменит, как я понял, в системах с systemd, процессом init является файл-ссылка на systemd. Инициализирующим может являться, вообще, какой угодно процесс.</p></blockquote></div><p><a href="http://unix-pro.ru/un/linux/linuxlesson/53-polnomochija-polzovatelja.html">http://unix-pro.ru/un/linux/linuxlesson … telja.html</a></p>]]></description>
			<author><![CDATA[null@example.com (Wolfenberg)]]></author>
			<pubDate>Tue, 25 Nov 2014 00:29:52 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=432666#p432666</guid>
		</item>
		<item>
			<title><![CDATA[Re: Вопрос по залогиниванию]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=432621#p432621</link>
			<description><![CDATA[<p><strong>Aether</strong>, я всего лишь юзер. Но даже я не понял всего драматизма и пафоса вопроса. Переформулируйте пожалуйста! Внятно.</p>]]></description>
			<author><![CDATA[null@example.com (stranger)]]></author>
			<pubDate>Mon, 24 Nov 2014 16:08:17 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=432621#p432621</guid>
		</item>
		<item>
			<title><![CDATA[Re: Вопрос по залогиниванию]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=432595#p432595</link>
			<description><![CDATA[<p>Так это сути дела не изменит, как я понял, в системах с systemd, процессом init является файл-ссылка на systemd. Инициализирующим может являться, вообще, какой угодно процесс.</p>]]></description>
			<author><![CDATA[null@example.com (Aether)]]></author>
			<pubDate>Mon, 24 Nov 2014 14:31:34 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=432595#p432595</guid>
		</item>
		<item>
			<title><![CDATA[Re: Вопрос по залогиниванию]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=432570#p432570</link>
			<description><![CDATA[<div class="quotebox"><cite>Aether пишет:</cite><blockquote><p>которые запускает init</p></blockquote></div><p>Почему только он? Мы systemd не рассматриваем?</p>]]></description>
			<author><![CDATA[null@example.com (stranger)]]></author>
			<pubDate>Mon, 24 Nov 2014 11:06:14 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=432570#p432570</guid>
		</item>
		<item>
			<title><![CDATA[Re: Вопрос по залогиниванию]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=432569#p432569</link>
			<description><![CDATA[<p>Хорошо, как я понимаю функции ввода-вывода, например printf() - это всего лишь формообразователи входных данных с последующим сис. вызовом write(). Далее ядро или его модули получают в обработку буфер подготовленных данных... Так вот, предположим, мы обратились к файлу, с запрещённой для нас записью, стало быть именно ядро должно принять решение можно нам с ним работать или нет, сверяя, UID, GID... Write() вернёт программе результат: либо отказ в доступе, либо операция исполнена.<br />Соответственно, что делает setuid() - это тоже системный вызов. Почитал описание, но не совсем понял суть:<br />login имеет изначально права root, setuid понижает её права до UID выбранного пользователя? Получается, если я создам программу, включу библиотеку unistd.h, сделаю вызов setuid() на любого пользователя, то она либо переключит UID процесса в случае запуска из под root, либо выдаст ошибку при запуске из-под любой другой учётной записи.<br />Если можно, то хотел бы уяснить: что такое реальный, а что такое эффективный UID?</p>]]></description>
			<author><![CDATA[null@example.com (Aether)]]></author>
			<pubDate>Mon, 24 Nov 2014 11:04:39 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=432569#p432569</guid>
		</item>
		<item>
			<title><![CDATA[Re: Вопрос по залогиниванию]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=432471#p432471</link>
			<description><![CDATA[<p>[далее всё написанное относится к классической схеме без оговорок про pam, systemd и cgroups]</p><div class="quotebox"><cite>Aether пишет:</cite><blockquote><p>а, соответственно, запрашивает имя пользователя, пароль, и, полагаю, есть тоже какой-то системный вызов, который эти данные передаёт ядру для сверки</p></blockquote></div><p>нет,&nbsp; пароли проверяются в userspace: login просто читает содержимое /etc/passwd и /etc/shadow и сама принимает решение о предоставление доступа, без участия ядра.<br /></p><div class="quotebox"><cite>Aether пишет:</cite><blockquote><p>Мало того, все последующие вызовы fork из этого залогиненного процесса будут наследоваться потомками. Затем запускается оболочка bash (PID 102 PPID 101), и мы пишем команды от лица зарегистрированного пользователя.</p></blockquote></div><p>тут всё проще: login делает fork() -&gt; setuid() -&gt; exec(&lt;shell&gt;).<br /></p><div class="quotebox"><cite>Aether пишет:</cite><blockquote><p>Вопрос, во-первых, какими правами обладают процессы, которые запускает init до залогинивания? root?</p></blockquote></div><p>про те которые говорим — да, root... остальные могут быть запущены с произвольными правами...<br /></p><div class="quotebox"><cite>Aether пишет:</cite><blockquote><p>Во-вторых, когда в bash набираю exit он возвращается на уровень login, то есть как-бы разлогинивается. По идее должен иметься системный вызов, на отмену регистрации, тогда к каким правам вернулась программа login?</p></blockquote></div><p>login просто ждёт на wait(2). после завершения шела управление передаётся ему и он продолжает своё дело с теми же правами, которыеу него были...<br /></p><div class="quotebox"><cite>Aether пишет:</cite><blockquote><p>В-третьих, в tty1 я запускаю процесс aaa &amp;.<br />Консоль пишет: ...PID 140...<br />То есть, запустился новый процесс. Если затем разлогиниться, получается этот процесс так и сохранится с правами того пользователя из под которого был запущен?</p></blockquote></div><p>после разлогинивания процесс будет убит SIGHUP&#039;ом и завершится... но если он перехватит сигнал, то продолжит работать со своими правами...</p>]]></description>
			<author><![CDATA[null@example.com (Fat-Zer)]]></author>
			<pubDate>Sun, 23 Nov 2014 20:15:44 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=432471#p432471</guid>
		</item>
		<item>
			<title><![CDATA[Вопрос по залогиниванию]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=432453#p432453</link>
			<description><![CDATA[<p>Доброго дня.</p><p>Итак, интересно разобраться немного подробнее с вот чем:<br />когда запускается linux, его первый процесс (PID 1) запускается ядром. Далее этот процесс разветвляется, запуская кучу чего, и вот, в некий момент, он вызывает, в очередной раз, fork (для примера, новый процесс PID 100, процесс предок PPID 1), и запускает getty, которая создаёт необходимый буфер для консоли, обеспечивает вывод информации на экран, а также файл устройства, например, tty3. Далее, getty, также делает fork, запуская программу login (PID 101 PPID 100), та, соответственно, запрашивает имя пользователя, пароль, и, полагаю, есть тоже какой-то системный вызов, который эти данные передаёт ядру для сверки, после чего, ядро как-бы регистрирует права конкретного пользователя на доступ к ресурсам ПК к конкретному процессу. Мало того, все последующие вызовы fork из этого залогиненного процесса будут наследоваться потомками. Затем запускается оболочка bash (PID 102 PPID 101), и мы пишем команды от лица зарегистрированного пользователя.</p><p>Вопрос, во-первых, какими правами обладают процессы, которые запускает init до залогинивания? root?</p><p>Во-вторых, когда в bash набираю exit он возвращается на уровень login, то есть как-бы разлогинивается. По идее должен иметься системный вызов, на отмену регистрации, тогда к каким правам вернулась программа login?</p><p>В-третьих, в tty1 я запускаю процесс aaa &amp;.<br />Консоль пишет: ...PID 140...<br />То есть, запустился новый процесс. Если затем разлогиниться, получается этот процесс так и сохранится с правами того пользователя из под которого был запущен?</p><p>Буду рад, указаниям на мои ошибки в понимании.</p>]]></description>
			<author><![CDATA[null@example.com (Aether)]]></author>
			<pubDate>Sun, 23 Nov 2014 19:11:54 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=432453#p432453</guid>
		</item>
	</channel>
</rss>
