ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Re: About masqmail
  @ 2001-10-10  7:57 ` Sergei Aranovsky
  2001-10-10  9:08   ` Dmitry V. Levin
  0 siblings, 1 reply; 3+ messages in thread
From: Sergei Aranovsky @ 2001-10-10  7:57 UTC (permalink / raw)
  To: Stanislav Ievlev; +Cc: devel

On Wed, Oct 10, 2001 at 10:35:28AM +0400, Stanislav Ievlev wrote:
> Здравствуйте Сергей!
> Как я понял Вы сейчас готовите пакет masqmail для Сизифа.
> В этом пакете присутствует SUID-ная программа.
> Предлагаю обсудить это (в devel) так как  (вывод после краткой беседы с 
> Димой Левиным) вполне реально от этого избавиться.
> 
> Как вы на это смотрите?

Хорошо смотрю. Переходим в devel. 

Сделать masqmail не setuid-ной конечно можно было бы. Но:

1. Как быть с 25-м портом? Или правило младших портов обходится?
2. Накроется медным тазом доставка при помощи procmail (см. ключ -d).

Ваше слово :-)

С уважением,
-Сергей Арановский
_______________________________________________
Devel mailing list
Devel@linux.iplabs.ru
http://www.logic.ru/mailman/listinfo/devel


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [devel] Re: About masqmail
  2001-10-10  7:57 ` [devel] Re: About masqmail Sergei Aranovsky
@ 2001-10-10  9:08   ` Dmitry V. Levin
  2001-10-11 14:51     ` Sergei Aranovsky
  0 siblings, 1 reply; 3+ messages in thread
From: Dmitry V. Levin @ 2001-10-10  9:08 UTC (permalink / raw)
  To: devel


[-- Attachment #1.1: Type: text/plain, Size: 1038 bytes --]

On Wed, Oct 10, 2001 at 11:57:34AM +0400, Sergei Aranovsky wrote:
> > Здравствуйте Сергей!
> > Как я понял Вы сейчас готовите пакет masqmail для Сизифа.
> > В этом пакете присутствует SUID-ная программа.
> > Предлагаю обсудить это (в devel) так как  (вывод после краткой беседы с 
> > Димой Левиным) вполне реально от этого избавиться.
> > 
> > Как вы на это смотрите?
> 
> Хорошо смотрю. Переходим в devel. 
> 
> Сделать masqmail не setuid-ной конечно можно было бы. Но:
> 
> 1. Как быть с 25-м портом? Или правило младших портов обходится?

Да (см. attachment).

> 2. Накроется медным тазом доставка при помощи procmail (см. ключ -d).

А как с этим быть?


Regards,
	Dmitry

+-------------------------------------------------------------------------+
Dmitry V. Levin     mailto://ldv@alt-linux.org
ALT Linux Team      http://www.altlinux.ru/
Fandra Project      http://www.fandra.org/
+-------------------------------------------------------------------------+
UNIX is user friendly. It's just very selective about who its friends are.

[-- Attachment #1.2: drop_root.c --]
[-- Type: text/plain, Size: 2041 bytes --]

/*
  drop_root
  Copyright (C) 2000  Dmitry V. Levin <ldv@fandra.org>

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/

/* Compile with libcap-devel installed, link with -lcap */

#include <unistd.h>
#include <syslog.h>
#include <pwd.h>
#include <grp.h>
#include <sys/capability.h>
#include <sys/prctl.h>

int drop_root( uid_t uid, gid_t gid )
{
	cap_t caps;

	/* Keep capabilities after setuid call */
	if ( prctl( PR_SET_KEEPCAPS, 1 ) < 0 )
	{
		syslog( LOG_ERR, "prctl failed: %m" );
		return 1;
	}

	/* Drop supplementary groups */
	if ( setgroups( 0, NULL ) < 0 )
	{
		syslog( LOG_ERR, "setgroups failed: %m" );
		return 1;
	}

	/* Setgid */
	if ( setgid( gid ) < 0 )
	{
		syslog( LOG_ERR, "setgid to gid=%d failed: %m", gid );
		return 1;
	}

	/* Setuid */
	if ( setuid( uid ) < 0 )
	{
		syslog( LOG_ERR, "setuid to uid=%d failed: %m", uid );
		return 1;
	}

	/* Initialize capability state */
	caps = cap_from_text( "cap_net_bind_service=epi" );
	if ( !caps )
	{
		syslog( LOG_ERR, "cap_from_text failed: %m" );
		return 1;
	}

	/* Set capabilities */
	if ( cap_set_proc( caps ) < 0 )
	{
		syslog( LOG_ERR, "cap_set_proc failed: %m" );
		return 1;
	}

	/* Cleanup */
	if ( cap_free( caps ) < 0 )
	{
		syslog( LOG_ERR, "cap_free failed: %m" );
		return 1;
	}

	syslog( LOG_DEBUG, "running as uid(%d)/gid(%d) euid(%d)/egid(%d)", getuid(), getgid(), geteuid(), getegid() );
	return 0;
}

[-- Attachment #2: Type: application/pgp-signature, Size: 232 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [devel] Re: About masqmail
  2001-10-10  9:08   ` Dmitry V. Levin
@ 2001-10-11 14:51     ` Sergei Aranovsky
  0 siblings, 0 replies; 3+ messages in thread
From: Sergei Aranovsky @ 2001-10-11 14:51 UTC (permalink / raw)
  To: ALT Linux development

On Wed, Oct 10, 2001 at 01:08:10PM +0400, Dmitry V. Levin wrote:
> On Wed, Oct 10, 2001 at 11:57:34AM +0400, Sergei Aranovsky wrote:
> > 1. Как быть с 25-м портом? Или правило младших портов обходится?
> 
> Да (см. attachment).

Но стартовать придётся НЯП suidroot все равно. 

> 
> > 2. Накроется медным тазом доставка при помощи procmail (см. ключ -d).
> 
> А как с этим быть?
> 

Не вижу решения. Проблема -- в procmail.

Ниже перечислены режимы работы masqmail и её действия (это результат
беглого просмотра кода).


1. MODE_DAEMON 		-- does seteuid(mail) setegid(mail) immediately after opening port
2. MODE_RUNQUEUE 	-- does same immediately after recognizing mode
3. MODE_GET_DAEMON (pop3 suck) -- does same efter fork
4. MODE_SMTP 		-- running with original uid (CHECK)
5. MODE_LIST 		-- no euid/egid changes
6. MODE_BI		-- does nothing
7. MODE_MCMD		-- sets euid/egid to mail:mail (or whatevet is defined as mail user)
8. MODE_ACCEPT		-- on Local delivery via:
	"mbox"	-- changes euid/egid to (recipient:mail)
	"mda"	-- same
	"maildir" -- same

			-- on Remote delivery via:
	"pipe" 	-- same
	"smtp"	-- does nothing of this kind AFAICS

Как мы видим, только 3 из 12 режимов работают без понижения прав ( можно
попробовать их почитать внимательно на предмет перехода в режим с более
низкими правами).

A propos, а как решена mda-delivery в postfix (как сделано в sendmail я
догадываюсь -- suid root и все дела)?


С уважением,
-Сергей Арановский

	
_______________________________________________
Devel mailing list
Devel@linux.iplabs.ru
http://www.logic.ru/mailman/listinfo/devel


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2001-10-11 14:51 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-10-10  7:57 ` [devel] Re: About masqmail Sergei Aranovsky
2001-10-10  9:08   ` Dmitry V. Levin
2001-10-11 14:51     ` Sergei Aranovsky

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git