From owner-freebsd-questions@freebsd.org Thu Nov 12 13:44:58 2015 Return-Path: Delivered-To: freebsd-questions@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CCED5A2C32B for ; Thu, 12 Nov 2015 13:44:58 +0000 (UTC) (envelope-from guru@unixarea.de) Received: from ms-10.1blu.de (ms-10.1blu.de [178.254.4.101]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 802FF1983 for ; Thu, 12 Nov 2015 13:44:58 +0000 (UTC) (envelope-from guru@unixarea.de) Received: from [82.113.106.70] (helo=localhost.unixarea.de) by ms-10.1blu.de with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1ZwsBJ-0004Vw-AQ for freebsd-questions@freebsd.org; Thu, 12 Nov 2015 14:44:54 +0100 Received: from localhost.my.domain (c720-r276659 [127.0.0.1]) by localhost.unixarea.de (8.14.9/8.14.9) with ESMTP id tACDimqv004508 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Thu, 12 Nov 2015 14:44:48 +0100 (CET) (envelope-from guru@unixarea.de) Received: (from guru@localhost) by localhost.my.domain (8.14.9/8.14.9/Submit) id tACDiluJ004507 for freebsd-questions@freebsd.org; Thu, 12 Nov 2015 14:44:48 +0100 (CET) (envelope-from guru@unixarea.de) X-Authentication-Warning: localhost.my.domain: guru set sender to guru@unixarea.de using -f Date: Thu, 12 Nov 2015 14:44:47 +0100 From: Matthias Apitz To: FreeBSD Questions Subject: Re: vpnc && setuid Message-ID: <20151112134447.GA4418@c720-r276659> Reply-To: Matthias Apitz Mail-Followup-To: Matthias Apitz , FreeBSD Questions References: <20151112093622.GA3261@c720-r276659> <20151112101333.GA3606@c720-r276659> <20151112120549.GA3983@c720-r276659> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20151112120549.GA3983@c720-r276659> X-Operating-System: FreeBSD 11.0-CURRENT r269739 (i386) User-Agent: Mutt/1.5.23 (2014-03-12) X-Con-Id: 51246 X-Con-U: 0-guru X-Originating-IP: 82.113.106.70 X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Nov 2015 13:44:58 -0000 El día Thursday, November 12, 2015 a las 01:05:49PM +0100, Matthias Apitz escribió: > El día Thursday, November 12, 2015 a las 10:19:38AM +0000, krad escribió: > > > Looks like you need to 640 or 644 it. > > Why? The /usr/local/sbin/vpnc is set to: > > # ls -l /usr/local/sbin/vpnc > -rwsr-xr-x 1 root wheel 105092 10 nov 20:12 /usr/local/sbin/vpnc > > and the proc should run with euid=0, i.e. as root, but does not do this > and the question is, why? I wrote a small C-pgm: #define _GNU_SOURCE #include #include #include #include #define call(fun) errno = 0; fun; perror(#fun) int main(int argc, char **argv) { FILE *fp; uid_t ruid = -1, euid = -1, suid = -1; getresuid(&ruid, &euid, &suid); printf("> ruid=%d, euid=%d, suid=%d\n", ruid, euid, suid); fp = fopen("/usr/local/etc/vpnc.conf", "r"); if( fp != NULL ) { printf("file /usr/local/etc/vpnc.conf opened\n"); fclose(fp); } call(setuid(1000)); getresuid(&ruid, &euid, &suid); printf("> ruid=%d, euid=%d, suid=%d\n", ruid, euid, suid); return 0; } # cc set.c # strip a.out # chmod 6711 a.out # ls -l /usr/local/sbin/vpnc a.out -rws--s--x 1 root wheel 105092 10 nov 20:12 /usr/local/sbin/vpnc -rws--s--x 1 root wheel 4340 12 nov 14:41 a.out When I run this as normal user, it works as expected: $ ./a.out > ruid=1001, euid=0, suid=0 file /usr/local/etc/vpnc.conf opened setuid(1000): No error: 0 > ruid=1000, euid=1000, suid=1000 What is so magic with /usr/local/sbin/vpnc? -- Matthias Apitz, ✉ guru@unixarea.de, 🌐 http://www.unixarea.de/ ☎ +49-176-38902045