天天看點

取消kdesu密碼提示框

     最近在南京給客戶配置系統,客戶要求用普通使用者身份登入KDE,沒有管理者權限,但是希望用sudo啟動kate編輯器,并且不輸入密碼,經查找驗證,現将已實作步驟記錄如下:

     在/home/username/.kde/share/config目錄下建立kdesurc檔案,并編輯如下行并儲存至kdesurc檔案

[super-user-command]

super-user-command=sudo

    重新開機KDE,好了,現在用kdesu啟動kate就不需要輸入密碼了~ 

  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4. #define KDESU "kdesu"  
  5. #define RSUDO "rsudo"  
  6. #define KATE  "kate"  
  7. #define USAGE_LINES  5  
  8. #define USAGE_LENGTH 1024  
  9. static char usage[USAGE_LINES][USAGE_LENGTH] =  
  10. {  
  11.     "usage: sudo -h | -K | -k | -L | -V\n",  
  12.     "usage: sudo -v [-AknS] [-g groupname|#gid] [-p prompt] [-u user name|#uid]\n",  
  13.     "usage: sudo -l[l] [-AknS] [-g groupname|#gid] [-p prompt] [-U user name] [-u \n\t     user name|#uid] [-g groupname|#gid] [command]\n",  
  14.     "usage: sudo [-AbEHknPS] [-C fd] [-g groupname|#gid] [-p prompt] [-u user \n\t     name|#uid] [-g groupname|#gid] [VAR=value] [-i|-s] [<command>]\n",  
  15.     "usage: sudo -e [-AknS] [-C fd] [-g groupname|#gid] [-p prompt] [-u user \n\t     name|#uid] file ...\n",  
  16. };  
  17. int main(int argc, char *argv[])  
  18. {  
  19.     char cmd[1024];  
  20.     int i;  
  21.     if (argc < 2)  
  22.     {  
  23.         for (i = 0; i < USAGE_LINES; i++)  
  24.         {  
  25.             printf("%s", usage[i]);  
  26.         }  
  27.         return 0;  
  28.     }  
  29.     memset(cmd, '\0', sizeof(cmd));  
  30.     if (!strcmp(argv[1], KATE))  
  31.     {  
  32.         sprintf(cmd, "%s", KDESU);  
  33.     }  
  34.     else 
  35.     {  
  36.         sprintf(cmd, "%s", RSUDO);  
  37.     }  
  38.     for (i = 1; i < argc; i++)  
  39.     {  
  40.         strcat(cmd, " ");  
  41.         strcat(cmd, argv[i]);  
  42.     }  
  43.     printf("cmd: %s\n", cmd);  
  44.     system((const char *) cmd);  
  45.     return 0;  
  46. }  

繼續閱讀