【发布时间】:2015-08-19 01:25:07
【问题描述】:
我面临一个问题。我的要求是,我需要以普通用户身份挂载NFS 目录。我不想使用root。为此,我开发了以下简单的程序来实现这一点。但是,它没有按预期工作。
我的程序:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
void usage( char *progName ) {
printf("Usage : %s {mount|umount}\n",progName);
}
int main( char argc , char *argv[] )
{
if ( argc != 2 ) {
usage( argv[0] );
return EXIT_FAILURE;
}
if ( strcmp(argv[1] , "mount") == 0 ) {
execlp("mount", "mount", "192.168.12.3:/home/share", "/home/share", NULL);
}
else if( strcmp(argv[1] , "umount" ) == 0 ) {
execlp("umount", "umount", "/home/share", NULL);
}
else {
usage( argv[0] );
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
那么,
$ cc mount_share.c -o Mount
我还为可执行文件设置了set user id。
$ chmod u+s Mount
$ ls -lhrt Mount
-rwsr-xr-x 1 root root 8.3K Jun 4 17:47 Mount
然后我以普通用户的身份执行Mount,但它仍然显示错误。也就是说,
mount: only root can do that
据我所知,它应该可以工作。
你能指出我的代码有什么问题吗?
还有其他方法可以实现吗?
【问题讨论】: