最近在南京給客戶配置系統,客戶要求用普通使用者身份登入KDE,沒有管理者權限,但是希望用sudo啟動kate編輯器,并且不輸入密碼,經查找驗證,現将已實作步驟記錄如下:
在/home/username/.kde/share/config目錄下建立kdesurc檔案,并編輯如下行并儲存至kdesurc檔案
[super-user-command]
super-user-command=sudo
重新開機KDE,好了,現在用kdesu啟動kate就不需要輸入密碼了~
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define KDESU "kdesu"
- #define RSUDO "rsudo"
- #define KATE "kate"
- #define USAGE_LINES 5
- #define USAGE_LENGTH 1024
- static char usage[USAGE_LINES][USAGE_LENGTH] =
- {
- "usage: sudo -h | -K | -k | -L | -V\n",
- "usage: sudo -v [-AknS] [-g groupname|#gid] [-p prompt] [-u user name|#uid]\n",
- "usage: sudo -l[l] [-AknS] [-g groupname|#gid] [-p prompt] [-U user name] [-u \n\t user name|#uid] [-g groupname|#gid] [command]\n",
- "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",
- "usage: sudo -e [-AknS] [-C fd] [-g groupname|#gid] [-p prompt] [-u user \n\t name|#uid] file ...\n",
- };
- int main(int argc, char *argv[])
- {
- char cmd[1024];
- int i;
- if (argc < 2)
- {
- for (i = 0; i < USAGE_LINES; i++)
- {
- printf("%s", usage[i]);
- }
- return 0;
- }
- memset(cmd, '\0', sizeof(cmd));
- if (!strcmp(argv[1], KATE))
- {
- sprintf(cmd, "%s", KDESU);
- }
- else
- {
- sprintf(cmd, "%s", RSUDO);
- }
- for (i = 1; i < argc; i++)
- {
- strcat(cmd, " ");
- strcat(cmd, argv[i]);
- }
- printf("cmd: %s\n", cmd);
- system((const char *) cmd);
- return 0;
- }