Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 49

Автор НСйл ΠœΡΡ‚ΡŒΡŽ

Π’ исходном ΠΊΠΎΠ΄Π΅ Linux Π²Ρ‹ смоТСтС Π½Π°ΠΉΡ‚ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ id Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€-использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getuid.

Для просмотра всСх Π΄Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π° ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ getpwent. Она ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ строки Ρ„Π°ΠΉΠ»Π°.

#include <pwd.h>

#include <sys/types.h>

void endpwent(void);

struct passwd *getpwent(void);

void setpwent(void);

Ѐункция getpwent Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅. Когда Π½Π΅ остаСтся Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ, ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ пустой ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Для прСкращСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΠ³Π΄Π° просмотрСно достаточно элСмСнтов, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ endpwent. Ѐункция setpwent пСрСустанавливаСт ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ указатСля Π² Ρ„Π°ΠΉΠ»Π΅ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ для Π½Π°Ρ‡Π°Π»Π° Π½ΠΎΠ²ΠΎΠ³ΠΎ просмотра ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getpwent. Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ просмотра ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° opendir, readdir ΠΈ closedir, ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π²ΡˆΠΈΠ΅ΡΡ Π² Π³Π»Π°Π²Π΅ 3.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ (эффСктивный ΠΈΠ»ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π΅ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

#include <sys/types.h>

#include <unistd.h>

uid_t geteuid(void);

gid_t getgid(void);

gid_t getegid(void);

int setuid(uid_t uid);

int setgid(gid_t gid);

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°Ρ… Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈ эффСктивных ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ слСдуСт ΠΈΡΠΊΠ°Ρ‚ΡŒ Π½Π° страницах ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ справочного руководства систСмы, хотя, Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚, Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ слСдуСт ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Волько ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ setuid ΠΈ setgid.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ свСдСния ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ выполняСтся, Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½Π° опрСдСляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅. ΠŸΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ прСдоставляСт ΠΊΠΎΠΌΠ°Π½Π΄Π° uname, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° языкС Π‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для получСния этих Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹ΠΉ систСмный Π²Ρ‹Π·ΠΎΠ² β€” ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ ΠΎ Π½Π΅ΠΌ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ справочного руководства (Ρ€Π°Π·Π΄Π΅Π» 2) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ man 2 uname.

БвСдСния ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ Π² рядС ситуаций. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² зависимости ΠΎΡ‚ сСтСвого ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° выполняСтся, скаТСм, Π½Π° студСнчСском ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΈΠ»ΠΈ машинС администратора. Для соблюдСния Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹Ρ… соглашСний Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ΄Π½ΠΎΠΉ машиной. ВсС это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ способ опрСдСлСния ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ выполняСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

Если Π² систСмС установлСны сСтСвыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π²Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сСтСвоС имя ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ gethostname:

#include <unistd.h>

int gethostname(char *name, size_t namelen);

Π­Ρ‚Π° функция записываСт сСтСвоС имя ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π² строку name. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π΄Π»ΠΈΠ½Π° строки, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, namelen символов. Ѐункция gethostname Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0 Π² случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈ -1 Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС.

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСмного Π²Ρ‹Π·ΠΎΠ²Π° uname.

#include <sys/utsname.h>

int uname(struct utsname *name);

Ѐункция uname записываСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π² структуру, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ name. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ‚ΠΈΠΏΠ° utsname, опрСдСлСнная Π² Ρ„Π°ΠΉΠ»Π΅ sys/utsname.h, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ элСмСнты, пСрСчислСнныС Π² Ρ‚Π°Π±Π». 4.5.


Π’Π°Π±Π»ΠΈΡ†Π° 4.5

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ структуры utsname ОписаниС char sysname[] Имя ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы char nodename[] Имя ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° char release[] НомСр выпуска (Ρ€Π΅Π»ΠΈΠ·Π°) систСмы char version[] НомСр вСрсии систСмы char machine[] Аппаратный Ρ‚ΠΈΠΏ

Π’ случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ функция uname Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ ΠΈ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС с установлСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ errno для обозначСния любой возникшСй ошибки.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 4.12.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 4.12. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅

Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° hostget.c, ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‰Π°Ρ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ свСдСния ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅.

#include <sys/utsname.h>

#include <unistd.h>

#include <stdio.h>

#include <stdlib.h>


int main() {

 char computer[256];

 struct utsname uts;

 if (gethostname(computer, 255) != 0 || uname(&uts) < 0) {

  fprintf(stderr, "Could not get host information\n");

  exit(1);

 }

 printf("Computer host name is %s\n", computer);

 printf("System is %s on %s hardware\n", uts.sysname, uts.machine);

 printf("Nodename is %s\n", uts.nodename);

 printf("Version is %s, %s\n", uts.release, uts.version);

 exit(0);

}

Она ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ зависящиС ΠΎΡ‚ ОБ Linux Π΄Π°Π½Π½Ρ‹Π΅. Если ваша машина Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² ΡΠ΅Ρ‚ΡŒ, Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ имя ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ сСти:

$ ./hostget

Computer host name is suse103

System is Linux on i686 hardware

Nodename is suse103

Version is 2.6.20.2-2-default, #1 SMP Fri Mar 9 21:54:10 UTC 2007

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ gethostname для получСния ΠΈΠΌΠ΅Π½ΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это имя β€” suse103. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± этом ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π½Π° Π±Π°Π·Π΅ Intel Pentium 4 с ОБ Linux Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ систСмный Π²Ρ‹Π·ΠΎΠ² uname. Π£Ρ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… строк зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, строка с вСрсиСй систСмы содСрТит Π΄Π°Ρ‚Ρƒ компиляции ядра.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ примСнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ uname Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π² исходном ΠΊΠΎΠ΄Π΅ Linux для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ uname, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ gethostid.

#include <unistd.h>

long gethostid(void);

Ѐункция gethostid ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹, слСдящиС Π·Π° соблюдСниСм Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹Ρ… соглашСний, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Π΅Π΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… с Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ лицСнзиями. На Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… станциях Sun ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€, установлСнный Π² постоянной памяти Π²ΠΎ врСмя изготовлСния ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ для систСмного оборудования. Π”Ρ€ΡƒΠ³ΠΈΠ΅ систСмы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Linux, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-адрСса ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ слишком бСзопасного для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€Π°Π².

Π’Π΅Π΄Π΅Π½ΠΈΠ΅ систСмных ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ²

МногиС прилоТСния Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² рСгистрации своСй Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. БистСмныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‡Π΅Π½ΡŒ часто выводят сообщСния Π½Π° консоль ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΈΡ… Π² рСгистрационный систСмный ΠΆΡƒΡ€Π½Π°Π». Π’ этих сообщСниях ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ошибки, прСдупрСТдСния ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ общая информация ΠΎ состоянии систСмы. НапримСр, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° su ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ пытался ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ супСр ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΠΎΡ‚Π΅Ρ€ΠΏΠ΅Π» Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ.

ΠžΡ‡Π΅Π½ΡŒ часто зарСгистрированныС сообщСния Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² систСмныС Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, прСдоставляСмом для этой Ρ†Π΅Π»ΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /usr/admor/var/log. ΠŸΡ€ΠΈ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠΉ установкС ОБ Linux всС систСмныС сообщСния содСрТатся Π² Ρ„Π°ΠΉΠ»Π΅ /var/log/messages, Π² Ρ„Π°ΠΉΠ» /var/log/mail Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ рСгистрируСмыС сообщСния ΠΎΡ‚ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠΉ систСмы, Π° Π² Ρ„Π°ΠΉΠ»Π΅ /var/log/debug ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ сообщСния. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ своСй систСмы ΠΌΠΎΠΆΠ½ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ /etc/syslog.conf ΠΈΠ»ΠΈ /etc/syslog-ng/syslog-ng.conf Π² зависимости ΠΎΡ‚ вСрсии Linux.

Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ зарСгистрированных сообщСний.

Mar 2 6 18:25:51 suse103 ifstatus: eth0 device: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)

Mar 26 18:25:51 suse103 ifstatus: eth0 configuration: eth-id-00:0c:29:0e:91:72

...

May 20 06:56:56 suse103 SuSEfirewall2: Setting up rules from /etc/sysconfig/SuSEfirewall2

...

May 20 06:56:57 suse103 SuSEfirewall2: batch committing

...

May 20 06:56:57 suse103 SuSEfirewall2: Firewall rules successfully set

...

Jun 9 09:11:14 suse103 su: (to root) neil on /dev/pts/18 09:50:35

Π’ этом Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π²ΠΈΠ΄Ρ‹ рСгистрируСмых сообщСний. НСсколько ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ нСпосрСдствСнно ядром Linux Π²ΠΎ врСмя Π΅Π³ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ обнаруТСния установлСнного оборудования. Брандмауэр сообщаСт ΠΎ своСй пСрСнастройкС. И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° su ΠΈΠ·Π²Π΅Ρ‰Π°Π΅Ρ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ доступ с ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записью ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ neil.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Для просмотра рСгистрируСмых сообщСний Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

НСкоторыС систСмы UNIX Π½Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² с ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ для чтСния сообщСниями, Π½ΠΎ ΠΎΠ½ΠΈ ΡΠ½Π°Π±ΠΆΠ°ΡŽΡ‚ администраторов срСдствами для чтСния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… систСмных событий. Π‘ΠΌ. подробности Π² систСмной Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.