[英]How to mount file system without root access using C program?
我面臨一個問題。 我的要求是,我需要以普通用戶身份掛載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
據我所知,它應該工作。
您能指出我的代碼有什么問題嗎?
還有其他方法可以做到這一點嗎?
正如user1641854所說,您可以使用sudo
。 如果您不想這樣做,也可以將預期的安裝點添加到/etc/fstab
並確保其設置了user
標志以允許非root用戶安裝它
就像是:
192.168.12.3:/home/share /home/share nfs user
盡管您可能還需要其他標志。
SuDo是專門為此目的而設計的-允許非特權用戶運行特權命令(以委派權限)。 為了解決您的問題,您必須添加setuid(0);
,然后嘗試執行execlp(3)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.