Terminal просит пароль, но не позволяет мне ввести что-либо (15.04)

Создание и удаление пользователей

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

  • useradd — не интерактивная утилита;
  • adduser — интерактивная утилита;

Любой из этих команд нужно передать имя пользователя, но useradd не создаст пользователю домашний каталог и не придумает пароль если не использовать дополнительные опции команды. Зато создаст одноименную группу пользователя и включит этого пользователя в неё. Создавать пользователей в системе может только root:

root@deb-11:~# useradd testuser

root@deb-11:~# su - testuser
su: warning: cannot change directory to /home/testuser: Нет такого файла или каталога

$ id
uid=1001(testuser) gid=1001(testuser) группы=1001(testuser)

$ pwd
/root

$ exit

root@deb-11:~#

У этой утилиты есть некоторые опции:

  • -m — создать домашний каталог пользователю;
  • -p <пароль> — здесь нужно ввести хешированный пароль, что не всегда удобно, поэтому не стоит использовать эту опцию;
  • -s <путь_к_оболочке> — указать командную оболочку используемую по умолчанию для пользователя (сейчас мы работает в оболочке bash, путь к ней – /bin/bash);

Давайте теперь удалим пользователя testuser и создадим его по новой с изученными опциями. Удаляется пользователь командой deluser.

root@deb-11:~# userdel testuser

root@deb-11:~# useradd -m -s /bin/bash testuser

root@deb-11:~# su - testuser

testuser@deb-11:~$ pwd
/home/testuser

testuser@deb-11:~$ id
uid=1001(testuser) gid=1001(testuser) группы=1001(testuser)

testuser@deb-11:~$ exit
выход

root@deb-11:~#

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

  • -f — завершить все процессы пользователя и удалить насильно, даже если пользователь сейчас работает в системе;
  • -r — удалить домашний каталог пользователя;

Теперь давайте удалим пользователя testuser и попробуем создать его интерактивной утилитой adduser:

root@deb-11:~# userdel -f -r testuser
userdel: почтовый ящик testuser (/var/mail/testuser) не найден

root@deb-11:~# adduser testuser
Добавляется пользователь «testuser» ...
Добавляется новая группа «testuser» (1001) ...
Добавляется новый пользователь «testuser» (1001) в группу «testuser» ...
Создаётся домашний каталог «/home/testuser» ...
Копирование файлов из «/etc/skel» ...
Новый пароль:
Повторите ввод нового пароля:
passwd: пароль успешно обновлён
Изменение информации о пользователе testuser
Введите новое значение или нажмите ENTER для выбора значения по умолчанию
        Полное имя []:
        Номер комнаты []:
        Рабочий телефон []:
        Домашний телефон []:
        Другое []:
Данная информация корректна? [Y/n] y

root@deb-11:~# su - testuser

testuser@deb-11:~$ pwd
/home/testuser

testuser@deb-11:~$ id
uid=1001(testuser) gid=1001(testuser) группы=1001(testuser)

testuser@deb-11:~$ exit
выход

root@deb-11:~#

При использовании adduser, утилита у нас запросит пароль для нового пользователя, создаст одноименную группу для пользователя, также мы можем ввести дополнительную информацию о пользователе: полное имя, номер комнаты, рабочий телефон, домашний телефон.

Эта утилита тоже имеет опции, благодаря которым можно:

  • –no-create-home — не создавать домашний каталог пользователю;
  • –shell <Оболочка> — задать оболочку для пользователя, по умолчанию задается оболочка bash;

Зачем же созданы две утилиты для создания пользователей? Я бы рекомендовал использовать adduser при ручном создании пользователя и useradd при создании пользователя из скрипта, так как useradd в процессе работы не задает вопросы, а создает пользователя используя опции.

Для удаления пользователей тоже можно использовать две утилиты:

  • userdel;
  • deluser.

Они различаются только опциями.

userdel:

  • -r — удалить домашний каталог пользователя;
  • -f — завершить все процессы пользователя и удалить насильно, даже если пользователь сейчас работает в системе;

deluser:

  • –remove-home — удалить домашний каталог пользователя;
  • –force — завершить все процессы пользователя и удалить насильно, даже если пользователь сейчас работает в системе;

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

Что делать, если забыл пароль в Ubuntu

Здесь можно воспользоваться двумя методами. Первый возможен, если в системе заведены другие пользователи, обладающие правом использовать утилиту sudo, и к которому имеется доступ. Для этого необходимо авторизоваться под данным аккаунтом и задать новый код пользователя Linux с помощью команды:

Программа запросит новый шифр авторизации и его подтверждение.

Второй способ предполагает использование меню восстановления (Recover Mode) и выполнение описанных в первом разделе действий, только вместе учетной записи суперпользователя необходимо будет указать обычный аккаунт.

Сброс с помощью исполняемого файла Linux

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

Нам нужно определить исполняемый файл для дистрибутива Linux, который вы используете с WSL. В Windows 10 он будет в этом каталоге:

c: user AppData Local Microsot WindowsApps

Замените «» именем своей учетной записи пользователя Windows. В командной строке Windows смените каталог на это место и введите «dir».

тебе

Исполняемый файл должен быть легко идентифицирован. На этой тестовой машине мы установили Ubuntu 20.04, и очевидно, что нам нужен файл «ubuntu2004.exe».

Мы запустим сеанс Ubuntu, но скажем ему войти в систему как пользователь root вместо учетной записи пользователя, которую вы создали при установке дистрибутива Linux.

Конфигурация ubuntu2004 — по умолчанию-пользователь root

Сеанс Ubuntu запущен, и мы видим командную строку в окне терминала. Приглашение представлено белым текстом, а последний символ — решетка «#», а не знак доллара «$». Это говорит нам, что пользователь является пользователем root, а не обычным пользователем. В имени пользователя также есть слово «root».

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

кто я

Итак, мы определенно вошли в систему как root. Мы можем пойти дальше и сбросить пароль пользователя по умолчанию. Команда passwd запросит у вас новый пароль, а затем попросит ввести его второй раз. Ни один из них не будет эхом отражаться на экране. Пароль, который мы меняем, принадлежит пользователю «dave».

пароль Дэйв

Убедитесь, что вы помните новый пароль. Мы выйдем из сеанса Ubuntu и вернемся в командную строку Windows.

выход

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

Конфигурация ubuntu2004 — по умолчанию-пользователь Дэйв

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

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

Команда, которую мы используем, не имеет значения, важно то, что мы используем sudo. Мы воспользуемся командой ps, чтобы перечислить некоторые процессы

sudo ps -e

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

Быстро молниеносно в командной строке

Если вы используете Linux, имеет смысл познакомиться с приложением командной строки Terminal. Это обеспечивает более глубокий уровень доступа к вашему компьютеру Linux, если вы знаете правильные команды.

В терминале можно делать все что угодно, например, редактирование текстовых файлов, подключение к Wi-Fi и многое другое. Во время работы в командной строке сочетания клавиш могут помочь сократить шаги и сэкономить время.

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

Наш путеводитель по самым важным ярлыкам терминалов Linux

покажет вам больше.

Дистрибутивы Linux для работы с безопасностью

Вопросы конфиденциальности и безопасности также актуальны для сферы IT-технологий, как и развитие продуктов с открытым исходным кодом. И эти области тесно связаны между собой. Ниже представлены самые мощные дистрибутивы Linux, которые подойдут для специалистов по компьютерной безопасности, белых хакеров, пентестеров и OSINT.

Kali Linux

Основа Debian (Testing)Архитектура mhf, i686, x86_64.Преимущества:

  • более 600 инструментов;
  • меню приложений с разбивкой по категориям;
  • поддержка нескольких платформ;
  • обширная документация.

Пожалуй, самый известный дистрибутив Linux для тестирования на проникновение, основан на Debian и использует рабочий стол Xfce. Особенность Kali Linux — настраиваемое меню, разделенное на пронумерованные категории, которые далее разбиты на логические подкатегории. Это сильно упрощает навигацию и поиск подходящего инструмента для решения конкретной задачи.

В отличие от таких дистрибутивов, как BlackArch, Kali Linux не включает в себя все инструменты для тестирования на проникновения. Однако его разработчики, многие из которых сами работают в качестве пентестеров, заверяют, что существующая комплектация стала результатом тщательного исследования, которое позволило избежать дублирования и отобрать лучшие инструменты для наиболее распространенных задач.

Kali Linux также упрощает создание собственного дистрибутива на основе Kali. Для этого в дистрибутиве есть несколько готовых шаблонов сборки для создания пользовательских спинов Kali.

Parrot Security

Основа Debian (Testing)Архитектура armel, armhf, i686, x86_64.Преимущества:

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

Ориентированный на безопасность дистрибутив на основе Debian содержит обширный набор утилит, предназначенных для пентестинга, компьютерной криминалистики, обратной разработки, криптографии и защиты конфиденциальности. Parrot Security поставляется с MATE в качестве среды рабочего стола по умолчанию.

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

Kodachi

Основа: Debian, XubuntuАрхитектура: x86_64.Преимущества:

  • маршрутизация соединения через VPN и Tor;
  • поддержка DNS шифрования (DNSCrypt);
  • большой выбор инструментов защиты данных;
  • возможность загрузки в Live-режиме.

Для обеспечения полной конфиденциальности Kodachi использует уникальный механизм соединения с Сетью. Все подключения проходят через VPN-сервер (предоставляемый бесплатно), а затем через сеть Tor. Дополнительную защиту даёт шифрование DNS-соединения с помощью службы DNSCrypt. Опытные пользователи также могут подключаться через собственный VPN.

Дистрибутив использует приложение AppArmor для изоляции приложений. Он также включает в себя полный набор инструментов криптографии и защиты данных от перехвата, включая VeraCrypt, zuluCrypt, KeePassXC, Metadata Anonymization Toolkit (MAT) для удаления метаданных из файлов. Приложение Panic Room позволяет производить автоматическую зачистку следов использования Kodachi в оперативной памяти.

Сложный выбор дистрибутива

Дистрибутивов Linux очень много. Есть базовые, есть основанные на базовых, есть основанные на основанных, есть… Их действительно очень и очень много. Причем многие из них очень разные и имеют свои специфические особенности.

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

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

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

И еще один факт. Многообразие дистрибутивов может поставить новичка в Linux в сложное положение. Вместо того, чтобы взять и скачать, например, один единый дистрибутив Linux (которого не существует), новичку придется сначала выяснить, чем отличаются дистрибутивы друг от друга и решить какой ему использовать. А если вдруг ему не понравится установленная система, то нужно начинать новый поиск. С Windows таких проблем не возникает.

Используйте последние графические драйверы

Поддержка новейших драйверов видеокарт доступна для Linux

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

В большинстве случаев пользователи Linux используют драйверы для графического чипа Intel, который интегрирован с материнской платой. В некоторых случаях это может быть единственный доступный видеочип.

Но если на компьютере установлен чип AMD или Nvidia или полноценная видеокарта, требуются соответствующие драйверы.

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

,

Команды Linux для работы с сетью

Эти команды используются для просмотра и редактирования сетевых конфигураций, связанных с аспектами системы

65. ifconfig

Команда ifconfig используется для отображения и установки IP-адреса для сетевых интерфейсов в Linux. На данный момент ifconfig устарел в пользу iproute2.

Шпаргалка и сравнение команды iproute2 ЗДЕСЬ.

66. ip

IP — это команда linux похожа на ifconfig, но более мощная и предназначена для ее замены. С ip у вас есть преимущество в выполнении нескольких задач сетевого администрирования только одной командой.

67. ethtool

Команда ethtool используется для отображения/изменения настроек адаптера Ethernet. Вы можете изменить скорость сетевой карты, автоматическое согласование, настройку пробуждения по локальной сети, дуплексный режим с помощью этого инструмента в Linux.

70. whois

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

72. host

Команда хоста — это простая утилита для выполнения поиска DNS в Linux. С помощью этой команды мы можем переводить имена в IP-адреса и наоборот.

74. netstat

Netstat — это инструмент командной строки, который используется для просмотра и мониторинга сетевой статистики и конфигураций системы. Этот инструмент доступен как в операционных системах на базе Unix, Linux, так и Windows NT

75. nslookup

Nslookup — это инструмент сетевого администрирования для запроса системы доменных имен для получения доменного имени или IP-адреса из записи DNS.

Пользователи и группы

whoami — имя, под которым вы залогиненыgroupadd group_name — создать новую группу с именем group_namegroupdel group_name — удалить группу group_namegroupmod -n new_group_name old_group_name — переименовать группу old_group_name в new_group_nameuseradd -c «Nome Cognome» -g admin -d /home/user1 -s /bin/bash user1 — создать пользователя user1, назначить ему в качестве домашнего каталога /home/user1, в качестве shell’а /bin/bash, включить его в группу admin и добавить комментарий Nome Cognomeuseradd user1 — создать пользователя user1userdel -r user1 — удалить пользователя user1 и его домашний каталогusermod -c «User FTP» -g system -d /ftp/user1 -s /bin/nologin user1 — изменить атрибуты пользователяpasswd — сменить парольpasswd user1 — сменить пароль пользователя user1 (только root)chage -E 2005-12-31 user1 — установить дату окончания действия учётной записи пользователя user1pwck — проверить корректность системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadowgrpck — проверяет корректность системных файлов учётных записей. Проверяется файл/etc/groupnewgrp group_name — изменяет первичную группу текущего пользователя. Если указать «-«, ситуация будет идентичной той, в которой пользователь вышил из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd

Использование традиционного root аккаунта и команды su

Ubuntu 11.04 и младше

Для входа под root достаточно задать ему пароль:

Потом на экране входа нажмите Другой… и введите логин (root) и пароль, который вы задали.

Ubuntu 11.10 и старше

Начиная с версии 11.10 был установлен менеджер входа lightdm, и дело со входом под root обстоит немного сложнее.

1. Устанавливаем root пароль. Введите в терминал:

2. Включаем пункт «Введите логин». Введите в терминал:

В конце файла допишите:

3. Перезагружаем lightdm. Введите в терминал:

Все, на экране входа появится пункт «Логин». В поле логин вводим «root», в поле пароль — пароль, который мы задали на первом этапе.

Для обратной блокировки учетной записи root вам потребуется откатить изменения в настройках lightdm, а также заблокировать учетную запись root командой в терминале:

Пример на практике

Рассмотрим следующий пример:

Здесь владелец (diego) файла Адреса.txt (который я заранее создал в папке ) имеет доступ к его «Просмотру и Изменению», в то время как другие члены его группы (её название совпадает с именем владельца — diego), а также все остальные пользователи, не входящие в эту группу, имеют доступ «Только просмотр». Поэтому они могут открыть файл, но не могут вносить в него изменения.

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

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

Если применить команду к нашему файлу Адреса.txt, то мы будем наблюдать такой вывод:

Выходные данные содержат следующую информацию:

Рассмотрим детально:

   Тип — обозначает тип объекта. Это может быть обычный файл (), каталог () или ссылка ().

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

   Жесткая ссылка — отображает количество ссылок, имеющихся у файла. По умолчанию устанавливается значение .

   Владелец — имя пользователя, который владеет файлом. Часто (но не всегда) совпадает с именем его создателя.

   Группа — группа, имеющая доступ к файлу. Одновременно владеть файлом может только одна группа.

   Размер — размер файла в байтах.

   Дата модификации — дата и время последнего изменения файла.

   Имя файла.

Информация о правах доступа к файлу сгруппирована в строку символов, перед которой стоит . При этом каждая буква задает определенное разрешение, а именно:

    (read) — разрешение на чтение/просмотр файла;

    (write) — разрешение на запись/изменение файла;

    (execute) — разрешение на выполнение файла;

    — нет набора разрешений.

Пользователи, имеющие разрешение на Чтение, могут видеть содержимое файла (или файлов в каталоге), однако они не могут изменить его (или добавить/удалить файлы в каталоге). С другой стороны, те, у кого есть права на Запись, могут редактировать (добавлять и удалять) файлы. Наконец, возможность Выполнения означает, что пользователь может запустить файл. Эта опция в основном используется для запуска скриптов.

Разрешения всегда идут именно в таком порядке, то есть . А далее, они устанавливаются для всех трех категорий пользователей в порядке Владелец, Группа и Остальные/Другие:

Итак, если вы вооружитесь вышеприведенной картинкой и посмотрите на вывод команды , то сможете сказать следующие вещи о правах доступа к файлу Адреса.txt:

Что мы видим?

   Владелец diego имеет права на чтение и запись в файл.

   Группа diego имеет права только на чтение.

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

Теперь попробуем применить ту же самую команду , но к другому файлу:

Что мы видим?

   Владельцем файла является пользователь root, который имеет права доступа на чтение, изменение и выполнение файла ().

   Все члены группы root имеют права на чтение и выполнение файла ().

   Остальные пользователи тоже имеют права на чтение и выполнение файла ().

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

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

Вход под суперпользователем

Чтобы войти под пользователем root можно переключиться в одну из виртуальных консолей, например, с помощью сочетания клавиш Ctrl+Alt+F1 и затем ввести логин root и пароль root пользователя.

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

Можно поступить полностью противоположным путем, ввести логин root и его пароль в графическом менеджере входа, чтобы окружение рабочего стола работало от имени root, и мы получаем все права root linux, но такой вариант крайне не рекомендованный, и очень опасный, вы можете случайно повредить всю систему. Поэтому этот способ был отключен во многих менеджерах входа.

Получение прав root без переключения

Чтобы реализовать максимально безопасный интерфейс для работы с правами суперпользователя в Linux была разработана команда sudo. Давайте рассмотрим что такое sudo. Эта команда пишется перед каждой командой, которую нужно выполнить от имени суперпользователя, и для ее выполнения нужно ввести пароль уже не root, а всего лишь вашего пользователя. Так же, как и в предыдущей, в этой утилиты есть свои опции. Сначала рассмотрим синтаксис:

$ sudo опции команда

  • -b — выполнять запускаемую утилиту в фоне
  • -E — сохранить переменные окружения
  • -g — запустить команду от группы
  • -H — использовать домашний каталог
  • -l — показать список полномочий в sudo для текущего пользователя
  • -r — использовать для команды роль SELinux
  • -s — использовать оболочку
  • -u — запустить команду от имени пользователя, если не задано используется root
  • -i — не выполнять команду, а войти в оболочку, эквивалентно su —

Вы можете выполнить те же эксперименты, только для этой команды, чтобы понять как использовать команду sudo. Например:

Использование sudo — это рекомендованный способ выполнять команды от имени суперпользователя в Linux. Так вы не забудете с чем имеете дело и меньше всего рискуете повредить систему. Но остался еще один нерешенный вопрос — как быть с графическими утилитами? Ведь команда sudo их не запускает, а запускать графическую оболочку от имени root небезопасно. Это мы и рассмотрим далее.

Нет нужных программ

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

Альтернативы почти всегда можно найти, но иногда они не решают поставленных задач, а иногда имеют недостаточную функциональность.

В качестве примера, конечно, можно привести в первую очередь Adobe Photoshop и Microsoft Office.

Альтернативные GIMP и LibreOffice не всегда решают поставленные задачи. GIMP имеет, откровенно говоря, некрасивый интерфейс, а LibreOffice не всегда корректно справляется с файлами от Microsoft Office.

Еще хуже дело обстоит в области видеообработки. Полноценных и мощных программ видео-монтажа под Linux нет. Те, которые есть, например, Kdenlive, сильно уступают по возможностям таким мастодонтам, как Adobe Premiere или Final Cut Pro (под MacOS).

Есть еще ряд специализированных программ, научных и инженерных, которые не имеют версий или полноценных альтернатив для Linux. В качестве примера можно привести AutoCAD.

Минусы использования sudo

Хотя выгода для использования sudo на персональных компьютерах велика, есть некоторые моменты, которые надо отметить:

  • Redirecting the output of commands run with sudo can catch new users out. For instance consider sudo ls > /root/somefile will not work since it is the shell that tries to write to that file. You can use ls | sudo tee -a /root/somefile to append, or ls | sudo tee /root/somefile to overwrite contents. You could also pass the whole command to a shell process run under sudo to have the file written to with root permissions, such as sudo bash -c "ls > /root/somefile".

  • Во многих офисных системах только один локальный пользователь в системе root. Все остальные пользователи импортируются через NSS технологии, такие как nss-ldap. Для настройки рабочей станции в случае повреждения сети, при поломке nss-ldap, необходим root. This tends to leave the system unusable unless cracked. An extra local user, or an enabled root password is needed here.
Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
IP-файл
Добавить комментарий

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