3
現在、目的のCを使用して現在ログインしているユーザタイプ(root、admin、またはnormal)を取得する方法はありますか?目的CとOSのユーザタイプ
私は約NSFullUserName()
を知っていますが、これはユーザー名を示しますが、ユーザーの種類を取得する方法は?
ありがとうございました。
現在、目的のCを使用して現在ログインしているユーザタイプ(root、admin、またはnormal)を取得する方法はありますか?目的CとOSのユーザタイプ
私は約NSFullUserName()
を知っていますが、これはユーザー名を示しますが、ユーザーの種類を取得する方法は?
ありがとうございました。
またはgetpwuid
を使用してユーザグループを取得し、次にgetgrgid
を使用して、gidからグループ名を取得できます。
これらは、標準ライブラリのC関数です。
- 編集:ここでは短い、悪いコード化されたCの例がある---ここ
あなたはあなたができるgetpwnam_example.c
ファイルに名前を付けるならば、それは(作る使用して構築する必要があり、端末内のMAC OS上で、小さな例です
$ make getpwnam_example
はcファイルと同じディレクトリにあります)。
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <strings.h>
#include <pwd.h>
#include <grp.h>
int main(int argc, char **argv) {
uid_t current_user_id = getuid();
printf("My Current UID is %d\n", current_user_id);
struct passwd *pwentry = getpwuid(current_user_id);
printf("My Current Name is %s\n", pwentry->pw_gecos);
printf("My Current Group ID is %d\n", pwentry->pw_gid);
struct group *grentry = getgrgid(getgid());
printf("My Current Group Name is %s\n", grentry->gr_name);
printf("Am I an admin? ");
struct group *admin_group = getgrnam("admin");
while(*admin_group->gr_mem != NULL) {
if (strcmp(pwentry->pw_name, *admin_group->gr_mem) == 0) {
printf("yes!\n");
}
admin_group->gr_mem++;
}
return 0;
}
おかげで...しかし、これは私のグループ名....ないユーザーの種類を提供します。.. – Priya
ユーザタイプが実際にグループのちょうど本名属性である、それはアクセスが決まりグループです。属性はdsclコマンド(dscl。-read/Groups/admin)で確認できます。 –
申し訳ありませんが、私は何も得ていません.... – Swapnil