Błąd: -bash: /bin/rm: Argument list too long

Strona Projektu Bash

 

 

Jeżeli pierwszy raz pojawia się w bashowej konsoli magiczny komunikat:

-bash: /bin/rm: Argument list too long

To nic strasznego, aczkolwiek nie usuniemy plików które chcieliśmy, bo przekraczamy limit:

root@testnetfs:~# getconf ARG_MAX
2097152

Jak więc prosto usunąć pliki ?

Wystarczy wykorzystać prostą pętlę for, a poniżej przykład usunięcia plików zakończonych sufixem .log:

for f in *.log; do rm "$f"; done

Działanie polecenia można najpierw przetestować listując pliki:

for f in *.log; do ls "$f"; done

Polecenie można dostosować by usunąć pliki .jpg, .pdf czy nawet wszystkie jednak tego ostatniego się nie stosuje, bo w przypadku pomylenia katalogu czy wykonania polecenia z historii można usunąć system operacyjny 😉
Powyższe polecenie będzie mało optymalne i szybciej można to zrobić przenosząc katalog, utworząc ponownie, a stary usuwając:


 mv katalog katalog.do.usuniecia
 mkdir katalog
 chown UZYTKOWNIK:UZYTKOWNIK katalog
 rm -rf katalog.do.usuniecia

Oczywiście za potencjalne straty w przypadku złego wykorzystania poleceń, nie odpowiadamy 😉

Ochrona przed atakami DOS i DDOS – SYN

Z uwagi na spore nasilenie ataków DOS i DDOS, zabezpieczenie przed nimi jest kluczowe dla stabilności każdego serwera produkcyjnego. Jeżeli nie mamy do dyspozycji sprzętowego firewalla czy uruchomionej specjalnej usługi ochrony u dostawcy łącza, możemy załagodzić skutki ataków na stos TCP z wykorzystaniem flag SYN zmieniając odpowiednio konfiguracje jądra systemowego i wykorzystując narzędzie Iptables.

Skupimy się najpierw na konfiguracji kernela i jego konfiguracji za pomocą sysctl. Na początek zwiększymy możliwości obsługi większej ilości połączeń:

net.core.netdev_max_backlog = 2048
net.core.somaxconn = 2048

następnie ustawimy zabezpieczenie przed zalaniem nas falą pakietów SYN ( ang. SYN Flood ) i atakiem SYN-ACK:

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 2
net.netfilter.nf_conntrack_tcp_loose = 0
net.ipv4.tcp_timestamps = 1

dodamy również zabezpieczenie przed podszywaniem się ( ang. IP Spoofing ):

net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

następnie dodamy regułę Iptables pomocną przy atakach SYN-ACK:

iptables -A INPUT -m state --state INVALID -j DROP

Jeżeli w naszym kernelu znajduje się moduł Iptables SYNPROXY ( podobny używany jest np. w firewallach Junipera lub systemach BSD ) to możemy wykorzystać poniższe reguły:

iptables -t raw -I PREROUTING -p tcp -m tcp --syn -j CT --notrack
iptables -I INPUT -p tcp -m tcp -m conntrack --ctstate INVALID,UNTRACKED -j SYNPROXY --sack-perm --timestamp --wscale 7 --mss 1460
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

Oczywiście powyższe parametry można dowolnie dostosować oraz uzupełnić o inne zabezpieczenia i odpowiednie limity.

W przypadku większych ataków i problemów z ich odparciem zapraszamy do kontaktu.