Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.

  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] Problem z CHMODami pliku .ini


Najlepsza odpowiedź GwynBleidD, 29.07.2014 08:36

CHMODy mają się NIJAK do tego, co klient może z plikami, bo nie może nic, bez względu na nie. Poza tym chmody odnoszą się do użytkowników systemowych, czyli do wewnętrznej konfiguracji serwera dedykowanego lub VPSa na którym serwer stoi.

Zwykle na hostingach wygląda to tak, że użytkownik FTP jest ten sam, co użytkownik serwera HLDS. Wtedy 600 daje pełne prawa dla serwera do odczytu i zapisu pliku (700 dla katalogów, 700 dla plików się nie opłaca ustawiać, bo dla HLDS nie zrobi to różnicy żadnej, ale może umożliwić ataki z zewnątrz poprzez wadliwą infrastrukturę hostingu). 700 powinny mieć w takim wypadku wyłącznie katalogi i pliki binarne serwera (w katalogu głównym, powyżej katalogu cstrike).

Na PORZĄDNYCH hostingach użytkownik FTP jest inny od użytkownika HLDS, ale są w tej samej grupie. Co oznacza, że 660 daje możliwość zapisu i odczytu dla serwera (770 dla katalogów). Tutaj masz już możliwość ustawienia praw 640, aby serwer mógł tylko odczytać niektóre pliki i katalogi, co zapobiega wykorzystywaniu niektórych dziur w HLDSie. Aby jednak takie ograniczenie zadziałało, właścicielem plików musi być użytkownik FTP (czyli plik musi zostać utworzony z poziomu FTP, a nie automatycznie przez HLDS). Dodatkowo w jednej grupie są wyłącznie użytkownicy do zarządzania tym samym serwerem, dzięki czemu właściciel innego serwera na tym samym hostingu nie ma dostępu do Twoich plików.

Na BADZIEWNYCH hostingach, od których należy od razu uciekać, użytkownik FTP jest inny od użytkownika HLDS i należą oni do OSOBNYCH grup. Przez co, aby serwer mógł odczytywać i zapisywać pliki, musimy dać chmody 666, co daje dostęp do naszych plików właścicielom innych serwerów na tym samym hostingu, więc ktoś wykupując sobie serwer na takim hostingu może dodawać sobie admina na wszystkich innych serwerach!

Dlatego ostatnia cyfra powinna być ZAWSZE ustawiona na 0, porządniejsze hostingi to wymuszają, albo przynajmniej ustawiają dla domyślnie tworzonych plików.

Poza tym we fragmencie pluginu, który przedstawiłeś nie ma ANI JEDNEJ linijki, która potrzebuje ZAPISU do pliku, jest sam odczyt. Więc albo pokaż gdzie próbujesz zapisać do tego pliku w pluginie, albo daj sobie spokój z chmodami, bo nie to robisz źle. Przejdź do postu


  • Zamknięty Temat jest zamknięty
10 odpowiedzi w tym temacie

#1 Rellik #

    Zaawansowany

  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:148
  • Imię:Daniel
  • Lokalizacja:Random
Offline

Napisano 28.07.2014 10:06

Witam, mam problem jak w temacie... tzn. chodzi mi o to, że gdy zmienie chmody pliku klany-data.ini z 644 na 777 po zmianie mapy chmody same się zmieniają na 644 co nie umożliwia poprawnego działania plugin klan...

Jak mam zaradzić temu, aby Chmody same się nie zmieniały na 644 tylko zostały na 777 tak jak chce.?

Każdy pomocny post = +


  • +
  • -
  • 0

b_350_20_1A1A1A_1A1A1A_ADADAD_1A1A1A.png

b_350_20_1A1A1A_1A1A1A_ADADAD_1A1A1A.png
Nie jestem zaawansowany w dziedzinie AMXMOD-X.
Staram się pomóc na tyle ile potrafię.

Piszę poprawnie po POLSKU.

Psychopaci.Eu


#2 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 28.07.2014 10:36

Czy hosting sam nie "poprawia" chmodów?

W jakim folderze trzymasz ten plik ini?

Czy usuwasz plik w swoim pluginie i tworzysz go jeszcze raz?
  • +
  • -
  • 0
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#3 Rellik #

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:148
  • Imię:Daniel
  • Lokalizacja:Random
Offline

Napisano 28.07.2014 10:47

Czy hosting sam nie "poprawia" chmodów?

Nie wiem, jak niby to sprawdzić?.

 

W jakim folderze trzymasz ten plik ini?

Trzymam go w folderze configs .. ( cstrike/addons/amxmodx/configs )

 

 

Czy usuwasz plik w swoim pluginie i tworzysz go jeszcze raz?

Tzn. jeśli chodzi Ci o to czy plugin sam go tworzy to owszem tak...
Próbowałem zrobić tak, że... wyłączyłem ten plugin, zmieniłem mu nazwe z klan.amxx na klany.amxx usunąłem klans-data.ini zrobiłem nowy klans-data.ini samodzielnie i wrzuciłem go na serwer po czym zmieniłem chmody na 777 włączyłem plugin i zrestartowałem serwer i nic nie pomogło... oczywiście klans-data.ini było puste ale chmody z 777 zmieniły się na 644 .:/


  • +
  • -
  • 0

b_350_20_1A1A1A_1A1A1A_ADADAD_1A1A1A.png

b_350_20_1A1A1A_1A1A1A_ADADAD_1A1A1A.png
Nie jestem zaawansowany w dziedzinie AMXMOD-X.
Staram się pomóc na tyle ile potrafię.

Piszę poprawnie po POLSKU.

Psychopaci.Eu


#4 Ogen Dogen

    Guru

  • Power User

Reputacja: 222
Profesjonalista

  • Postów:713
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Dąbrowa Górnicza
Offline

Napisano 28.07.2014 12:01

Wiem że Zabijaka ma zablokowane ustawianie CHMOD'ów , bo sam potrzebowałem. Najlepszym wyjściem tu jest po prostu napisanie do supportu o zmianę. Podaj im dokładną ścieżkę pliku i jaki chmod potrzebujesz.


  • +
  • -
  • 0

b_350_20_360204_C20008_FFFFFF_000000.png 193.33.176.115:27015

 

94e23d811c.png

 


#5 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 28.07.2014 12:38

ad 1. stwórz DOWOLNY plik, który nie jest obsługiwany przez żaden plugin i zmień mu chmody, sprawdź czy po zmianie mapy lub restarcie serwera zostaną przywrócone.

ad 2. Spróbuj trzymać plik w katalogu data, zamiast w configach.

ad 3. Chodzi mi o to, czy przy próbie zapisu do pliku nie kasujesz go w pluginie i nie tworzysz na nowo? Pokaż w jaki sposób go plugin edytuje.

Poza tym czy masz jakieś pluginy zabezpieczające serwer przed atakami?

I chmody 777 to duży błąd. Nawet 644 to błąd. 660 będą wystarczające, 640 powinny być domyślnie. A hosting umożliwia odczytywanie plików na cudzych serwerach, przez co np możesz sobie zerknąć hasło na admina, ukraść pluginy albo podejrzeć hasła do bazy danych, jeśli są w pliku trzymane. Wszystkie pliki serwera powinny mieć chmody z 0 na ostatniej pozycji, no chyba że masz serwery na własnym VPSie i nie jest to problemem, że ktoś Ci podejrzy pliki jednego serwera, mając dostęp do 2go...
  • +
  • -
  • 1
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#6 Rellik #

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:148
  • Imię:Daniel
  • Lokalizacja:Random
Offline

Napisano 28.07.2014 14:04

@@EDIT.

 

Dowiedziałem się, że hosting nie blokuje zmiany CHMODów.

__

Tak mam pluginy zabezpieczające przed atakami...Oto one:

anti_fullupdate_spam2.amxx
bad_rcon_ban.amxx
alias_detector.amxx

W tym przypadku chmody 777 są wymagane... aby INNI mogli odczytywać zawartość pliku .. inni tzn. serwer, gracze. Może prościej, pokaże Ci urywek kodu odpowiedzialnego za odczyt z pliku klans-data.ini

public ReadKlanData()
{
new szConfigsDir[ 60 ];
get_configsdir( szConfigsDir, charsmax( szConfigsDir ) );
add( szConfigsDir, charsmax( szConfigsDir ), "/klans-data.ini" );
 
new iFile = fopen( szConfigsDir, "rt" );
 
new szBuffer[ 512 ], szData[ 32 ], szValue[ 33 ]/*, i, iCurGang*/, niepotrzebna_nazwa[64], id_klanu[6]
new idc
new number;
new num_pl=0;
//new j = 0;
//new membername[12][33]
while( !feof( iFile ) )
{
//start:
fgets( iFile, szBuffer, charsmax( szBuffer ) );
 
trim( szBuffer );
remove_quotes( szBuffer );
 
if( !szBuffer[ 0 ] || szBuffer[ 0 ] == ';' ) 
{
continue;
}
if(containi(szBuffer, "KLANS_COUNT") != -1)
{
strtok(szBuffer, niepotrzebna_nazwa, 63, szValue, 32, '=')
g_iKlansCount = str_to_num(szValue);
 
continue;
}
if( szBuffer[ 0 ] == '[' && szBuffer[ strlen( szBuffer ) - 1 ] == ']' )
{
replace(szBuffer, 511, "[", "")
replace(szBuffer, 511, "]", "")
 
strtok(szBuffer, id_klanu, 5, niepotrzebna_nazwa, 63, '=')
idc = str_to_num(id_klanu);
copy(g_szKlanName[idc], 63, niepotrzebna_nazwa)
 
//copy( niepotrzebna_nazwa, strlen( szBuffer ) - 2, szBuffer[ 1 ] );
g_iKlanExperience[idc] = 0.0
g_iKlanLevel[idc] = 0 
g_iKlanAdditionalPoints[XP][idc] = 0
g_iKlanAdditionalPoints[DMG][idc] = 0
g_iKlanAdditionalPoints[ARMOR][idc] = 0
g_iKlanAdditionalPoints[GRAV][idc] = 0 
g_iKlanMembersCount[idc] = 0 
g_szKlanOwner[0][idc] = "" 
g_szKlanOwner[1][idc] = "" 
g_iKlanCoins[idc] = 0
 
number = 0;
continue;
 
}
number++;
if(number < 11)
{
strtok( szBuffer, szData, 31, szValue, 32, '=' );
trim( szData );
trim( szValue );
switch(number)
{
case 1: g_iKlanExperience[idc] = str_to_float(szValue)
case 2: g_iKlanLevel[idc] = str_to_num(szValue);
case 3: g_iKlanMembersCount[idc] = str_to_num(szValue);
case 4: g_iKlanCoins[idc] = str_to_num(szValue);
case 5: copy(g_szKlanOwner[0][idc], 63, szValue);
case 6: copy(g_szKlanOwner[1][idc], 63, szValue);//g_szKlanOwner[1][idc] = szValue;
case 7: g_iKlanAdditionalPoints[XP][idc] = str_to_num(szValue);
case 8: g_iKlanAdditionalPoints[DMG][idc] = str_to_num(szValue);
case 9: g_iKlanAdditionalPoints[ARMOR][idc] = str_to_num(szValue);
 
case 10: 
{
g_iKlanAdditionalPoints[GRAV][idc] = str_to_num(szValue);
g_iKlanAdditionalPoints[TO_ADD][idc] = (g_iKlanLevel[idc]-1)*2-g_iKlanAdditionalPoints[XP][idc]-g_iKlanAdditionalPoints[DMG][idc]-g_iKlanAdditionalPoints[ARMOR][idc]-g_iKlanAdditionalPoints[GRAV][idc];
}
}
continue;
}
if(g_iKlanMembersCount[idc] > 1)
{
if(number >= 11)
{
num_pl++
trim(szBuffer);
copy(g_szKlanMembers[num_pl][idc], 63, szBuffer)
}
}
 
}
 
fclose( iFile );
}

Użytkownik sKato. edytował ten post 28.07.2014 14:18

  • +
  • -
  • 0

b_350_20_1A1A1A_1A1A1A_ADADAD_1A1A1A.png

b_350_20_1A1A1A_1A1A1A_ADADAD_1A1A1A.png
Nie jestem zaawansowany w dziedzinie AMXMOD-X.
Staram się pomóc na tyle ile potrafię.

Piszę poprawnie po POLSKU.

Psychopaci.Eu


#7 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 29.07.2014 08:36   Najlepsza odpowiedź

CHMODy mają się NIJAK do tego, co klient może z plikami, bo nie może nic, bez względu na nie. Poza tym chmody odnoszą się do użytkowników systemowych, czyli do wewnętrznej konfiguracji serwera dedykowanego lub VPSa na którym serwer stoi.

Zwykle na hostingach wygląda to tak, że użytkownik FTP jest ten sam, co użytkownik serwera HLDS. Wtedy 600 daje pełne prawa dla serwera do odczytu i zapisu pliku (700 dla katalogów, 700 dla plików się nie opłaca ustawiać, bo dla HLDS nie zrobi to różnicy żadnej, ale może umożliwić ataki z zewnątrz poprzez wadliwą infrastrukturę hostingu). 700 powinny mieć w takim wypadku wyłącznie katalogi i pliki binarne serwera (w katalogu głównym, powyżej katalogu cstrike).

Na PORZĄDNYCH hostingach użytkownik FTP jest inny od użytkownika HLDS, ale są w tej samej grupie. Co oznacza, że 660 daje możliwość zapisu i odczytu dla serwera (770 dla katalogów). Tutaj masz już możliwość ustawienia praw 640, aby serwer mógł tylko odczytać niektóre pliki i katalogi, co zapobiega wykorzystywaniu niektórych dziur w HLDSie. Aby jednak takie ograniczenie zadziałało, właścicielem plików musi być użytkownik FTP (czyli plik musi zostać utworzony z poziomu FTP, a nie automatycznie przez HLDS). Dodatkowo w jednej grupie są wyłącznie użytkownicy do zarządzania tym samym serwerem, dzięki czemu właściciel innego serwera na tym samym hostingu nie ma dostępu do Twoich plików.

Na BADZIEWNYCH hostingach, od których należy od razu uciekać, użytkownik FTP jest inny od użytkownika HLDS i należą oni do OSOBNYCH grup. Przez co, aby serwer mógł odczytywać i zapisywać pliki, musimy dać chmody 666, co daje dostęp do naszych plików właścicielom innych serwerów na tym samym hostingu, więc ktoś wykupując sobie serwer na takim hostingu może dodawać sobie admina na wszystkich innych serwerach!

Dlatego ostatnia cyfra powinna być ZAWSZE ustawiona na 0, porządniejsze hostingi to wymuszają, albo przynajmniej ustawiają dla domyślnie tworzonych plików.

Poza tym we fragmencie pluginu, który przedstawiłeś nie ma ANI JEDNEJ linijki, która potrzebuje ZAPISU do pliku, jest sam odczyt. Więc albo pokaż gdzie próbujesz zapisać do tego pliku w pluginie, albo daj sobie spokój z chmodami, bo nie to robisz źle.
  • +
  • -
  • 2
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#8 Rellik #

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:148
  • Imię:Daniel
  • Lokalizacja:Random
Offline

Napisano 30.07.2014 06:28

Poza tym we fragmencie pluginu, który przedstawiłeś nie ma ANI JEDNEJ linijki, która potrzebuje ZAPISU do pliku, jest sam odczyt. Więc albo pokaż gdzie próbujesz zapisać do tego pliku w pluginie, albo daj sobie spokój z chmodami, bo nie to robisz źle.

Z całym szacunkiem Gwyn... lecz ta funkcja z angielskiego oznacza ODCZYT... Nie ma tam ani jednej liniki która potrzebuje zapisu do pliku bo to jest odczyt :)... public ReadKlanData()

 

 

Tutaj masz zapis: 

public SaveKlanData()
{
new szConfigsDir[ 64 ];
get_configsdir( szConfigsDir, charsmax( szConfigsDir ) );
 
add( szConfigsDir, charsmax( szConfigsDir ), "/klans-data.ini" );
 
if(file_exists( szConfigsDir) )
delete_file( szConfigsDir );
 
new iFile = fopen( szConfigsDir, "wt" ); 
new szBuffer[ 256 ];
 
formatex( szBuffer, charsmax( szBuffer ), "KLANS_COUNT=%i^n^n", g_iKlansCount);
fputs( iFile, szBuffer );
 
for(new i=0; i<g_iKlansCount; i++)
{
formatex( szBuffer, charsmax( szBuffer ), "[%i=%s]^n", i, g_szKlanName[i] );
fputs( iFile, szBuffer );
 
formatex( szBuffer, charsmax( szBuffer ), "EXP=%0.1f^n", g_iKlanExperience[i] );
fputs( iFile, szBuffer );
 
formatex( szBuffer, charsmax( szBuffer ), "LVL=%i^n", g_iKlanLevel[i] );
fputs( iFile, szBuffer );
 
formatex( szBuffer, charsmax( szBuffer ), "MEMBERS_C=%i^n", g_iKlanMembersCount[i] );
fputs( iFile, szBuffer );
 
formatex( szBuffer, charsmax( szBuffer ), "COINS=%i^n", g_iKlanCoins[i] );
fputs( iFile, szBuffer );
 
formatex( szBuffer, charsmax( szBuffer ), "LEADER=%s^n", g_szKlanOwner[0][i] );
fputs( iFile, szBuffer );
 
formatex( szBuffer, charsmax( szBuffer ), "VCLEADER=%s^n", g_szKlanOwner[1][i] );
fputs( iFile, szBuffer );
 
formatex( szBuffer, charsmax( szBuffer ), "STAT_XP=%i^n", g_iKlanAdditionalPoints[XP][i] );
fputs( iFile, szBuffer );
 
formatex( szBuffer, charsmax( szBuffer ), "STAT_DMG=%i^n", g_iKlanAdditionalPoints[DMG][i] );
fputs( iFile, szBuffer );
 
formatex( szBuffer, charsmax( szBuffer ), "STAT_ARMOR=%i^n",g_iKlanAdditionalPoints[ARMOR][i] );
fputs( iFile, szBuffer );
 
formatex( szBuffer, charsmax( szBuffer ), "STAT_GRAV=%i^n", g_iKlanAdditionalPoints[GRAV][i] );
fputs( iFile, szBuffer ); 
 
//formatex( szBuffer, charsmax( szBuffer ), "MEMBERS^n", g_szKlanName[i] );
//fputs( iFile, szBuffer );
 
for(new j = 1; j < g_iKlanMembersCount[i]; j++)
{
formatex( szBuffer, charsmax( szBuffer ), "%s^n", g_szKlanMembers[j][i]);
fputs( iFile, szBuffer );
}
formatex( szBuffer, charsmax( szBuffer ), "^n^n");
fputs( iFile, szBuffer );
 
}
 
fclose( iFile );
}

  • +
  • -
  • 0

b_350_20_1A1A1A_1A1A1A_ADADAD_1A1A1A.png

b_350_20_1A1A1A_1A1A1A_ADADAD_1A1A1A.png
Nie jestem zaawansowany w dziedzinie AMXMOD-X.
Staram się pomóc na tyle ile potrafię.

Piszę poprawnie po POLSKU.

Psychopaci.Eu


#9 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6033
Godlike

  • Postów:10831
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 30.07.2014 08:05

Zamiast plików ini możesz użyć nvault / sqlite


  • +
  • -
  • 0

#10 Rellik #

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:148
  • Imię:Daniel
  • Lokalizacja:Random
Offline

Napisano 30.07.2014 20:23

No wiem o tym, że jest taka opcja. Tylko nie wiem sam jak ogarnąć to :/


  • +
  • -
  • 0

b_350_20_1A1A1A_1A1A1A_ADADAD_1A1A1A.png

b_350_20_1A1A1A_1A1A1A_ADADAD_1A1A1A.png
Nie jestem zaawansowany w dziedzinie AMXMOD-X.
Staram się pomóc na tyle ile potrafię.

Piszę poprawnie po POLSKU.

Psychopaci.Eu


#11 Rellik #

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:148
  • Imię:Daniel
  • Lokalizacja:Random
Offline

Napisano 31.07.2014 10:32

Chciałbym sqlite... na baze danych zapis... lecz nie ogarniam tego w ogóle..


  • +
  • -
  • 0

b_350_20_1A1A1A_1A1A1A_ADADAD_1A1A1A.png

b_350_20_1A1A1A_1A1A1A_ADADAD_1A1A1A.png
Nie jestem zaawansowany w dziedzinie AMXMOD-X.
Staram się pomóc na tyle ile potrafię.

Piszę poprawnie po POLSKU.

Psychopaci.Eu





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych