Giriş
Programlama dillerinde kullanıcının kim olduğunu, hangi gruplara dahil olduğunu kontrol etmek gerekir. Aşağıda notlarım var.
Posix
getuid
Bu sistem çağrısı kullanıcının ID'sini döndürür. Admin için bu değer 0'dır.
Şöyle yaparız
getgrgid
Komut satırından şöyle bakarız.
İsimden uid'ye erişmemizi sağlar. Şu satırı dahil ederiz.
Linux
setuid
setuıid metodu yazısına taşıdım.
setresuid ve setresgid
Şöyle yaparız.
id komutu
Şöyle yaparız.
Şöyle yaparız.
C#
Kimlik ve Gruplar yazısına taşıdım.
Programlama dillerinde kullanıcının kim olduğunu, hangi gruplara dahil olduğunu kontrol etmek gerekir. Aşağıda notlarım var.
Posix
getuid
Bu sistem çağrısı kullanıcının ID'sini döndürür. Admin için bu değer 0'dır.
Şöyle yaparız
if (getuid() == 0)
isAdmin = TRUE;
Şöyle yaparız.#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
void main() {
printf("real uid: %d\n", (int) getuid());
printf("effective uid: %d\n", (int) geteuid());
}
Diğer kullanıcılar için sayı değeri 500 veya 1000'den başlar. Açıklaması şöyleBaşlangıç değeri Linux türevine göre değişir.The system User IDs from 0 to 99 should be statically allocated by the system, and shall not be created by applications.The system User IDs from 100 to 499 should be reserved for dynamic allocation by system administrators and post install scripts using useradd.
getgrgid
Komut satırından şöyle bakarız.
getent group GID | cut -d: -f1
getpwnam metoduİsimden uid'ye erişmemizi sağlar. Şu satırı dahil ederiz.
#include <pwd.h>
Şöyle yaparız.const char *name = "root";
struct passwd *p;
if ((p = getpwnam(name)) == NULL) {
perror(name);
return EXIT_FAILURE;
}
printf("%d\n", (int) p->pw_uid);
Linux
setuid
setuıid metodu yazısına taşıdım.
setresuid ve setresgid
Şöyle yaparız.
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, char *argv[]){
setresuid(999, 999, 999);
setresgid(999, 999, 999);
...
return 0;
}
Bashid komutu
Şöyle yaparız.
#!/bin/sh
if [ "$(id -u)" -ne 0 ]; then
echo 'This script must be run by root' >&2
exit 1
fi
$USER değişkeniŞöyle yaparız.
if [[ "$USER" != "root" ]]; then
echo "Error: script not running as root or with sudo! Exiting..."
exit 1
fi
if [[ $(whoami) != "root" ]]; then
echo "Warning: script must be run as root or with elevated privileges!"
exit 1
fi
if [[ $(id -u) != "0" ]]; then
echo "Error: script not running as root or with sudo! Exiting..."
exit 1
fi
Kimlik ve Gruplar yazısına taşıdım.
Hiç yorum yok:
Yorum Gönder