Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 25 Apr 2009 21:03:16 +0900
From:      Kouichiro Iwao <meta@club.kyutech.ac.jp>
To:        Ruben de Groot <mail25@bzerk.org>
Cc:        questions@freebsd.org
Subject:   Re: how to deceive programs as if I were a local user?
Message-ID:  <20090425120316.GB31588@club.kyutech.ac.jp>
In-Reply-To: <20090425092222.GA75517@ei.bzerk.org>
References:  <20090423073229.GA87987@club.kyutech.ac.jp> <20090423091027.GA47290@ei.bzerk.org> <20090423181711.GH40655@hal.rescomp.berkeley.edu> <20090425083416.GA31588@club.kyutech.ac.jp> <20090425092222.GA75517@ei.bzerk.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Apr 25, 2009 at 11:22:22AM +0200, Ruben de Groot wrote:
> > Configuring nsswitch.conf in linux emulation environment,
> > the program worked properly.  I did't know I had to set 
> > /compat/linux/etc/nsswitch.conf for linux binary compatibility.
> 
> That's interesting. Was there a /compat/linux/etc/nsswitch.conf before?
> I think that if it's not there, the linux emulation layer should take
> the system's /etc/nsswitch.conf as default. But I might be wrong(TM).

What does TM mean? :-(

Yes. I didn't make /compat/linux/etc/nsswitch.conf but just modified
the file that had already existed. I also configured 
/compat/linux/etc/yp.conf and /compat/linux/etc/sysconfig/network to
use NIS.

I examined the linux emulator takes /compat/linux/etc/nsswitch.conf.

/etc/nsswitch.conf:
$ grep -v -e ^$ -e ^# /etc/nsswitch.conf 
group: compat
group_compat: nis
hosts: files dns
networks: files
passwd: compat
passwd_compat: nis
shells: files
services: compat
services_compat: nis
protocols: files
rpc: files

/compat/linux/etc/nsswitch.conf:
$ grep -v -e ^$ -e ^# /compat/linux/etc/nsswitch.conf
passwd:     files nis
shadow:     files nis
group:      files nis
hosts:      files dns
bootparams: nisplus [NOTFOUND=return] files
ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files
netgroup:   nisplus
publickey:  nisplus
automount:  files nisplus
aliases:    files nisplus

And the sample program "sample.c":
#include<sys/types.h>
#include<stdio.h>
#include<pwd.h>

int main(){
        struct passwd *pw;
        pw = getpwuid(getuid()); 
        if(pw){
                printf("success\n");
        } else {
                printf("error\n");
        }      
}

I compiled the sample for both freebsd and linux binaries.
With the setting above I ran each binary, both binaries resulted success.

But when "nis" is not written in linux emulation environment's nsswitch.conf,
the linux binary results error.

-- 
Iwao, Koichiro <meta@club.kyutech.ac.jp>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090425120316.GB31588>