how to deceive programs as if I were a local user?
Kouichiro Iwao
meta at club.kyutech.ac.jp
Sat Apr 25 12:28:23 UTC 2009
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 at club.kyutech.ac.jp>
More information about the freebsd-questions
mailing list