2016-06-29 4 views
1

Das ist mein recht einfacher Code ist:Warum unshare (CLONE_NEWUSER) Fehler zurückgeben? (Linux)

#define _GNU_SOURCE 
#include <sched.h> 
#include <errno.h> 

int main(){ 
    int res= unshare(CLONE_NEWUSER); 
    printf("res:%d\n",res); 
    perror("error: "); 
    return 0; 
} 

Warum wird der Code immer fehl (-1 zurück)?

ich auf Ubunto 13.04 bin das ist meine Kernel-Version und andere Details:

Linux ubuntu 3.10.37-031037-generiC#201404141035 SMP Mon Apr 14 14:55:40 UTC 2014 i686 i686 i686 GNU/Linux 
  • errno gibt Invalid argument

dies die Ausgabe des Programms ist:

resoult:-1 
error: : Invalid argument 
+0

Was ist der Wert von 'errno'? – a3f

+0

Ungültiges Argument –

Antwort

1

Wahrscheinlich weil Ihr Kernel nicht konfiguriert ist Unterstützung CONFIG_USER_NS.

Ich rechne damit, führen Sie den Befehl:

unshare -U 

erzeugt auch den gleichen Fehler auf Ihrem Rechner.

Sie können, dass mit dem Befehl überprüfen:

grep CONFIG_USER_NS /boot/config-$(uname -r) 
+1

'grep CONFIG_USER_NS/boot/config - $ (uname -r)' gib nichts zurück und 'unshare' scheint zu funktionieren ... –

+0

@ P.P könntest du das bestätigen: Ich glaube es gibt einen Tippfehler in deinem Beitrag. CLONE_NEWUSER hängt davon ab, dass CONFIG_USER_NS aktiviert ist, daher denke ich, dass dort ein "nicht" fehlt. – domen

+0

@dome In der Tat. Korrigiert es. Vielen Dank. –

Verwandte Themen