вторник, 27 января 2015 г.

su или sudo?

С давних времен многих смущает разнообразие вариантов обеспечения безопасности при выполнении операций с максимальными привилегиями. Например, в официальной документации Ubuntu в качестве команды редактирования рекомендуется использовать что-то вроде sudo nano, а в многочисленных любительских мануалах (в стиле «5 фокусов в командной строке, которые удивят вашу бабушку») для получения root'ового шелла предлагается писать sudo su -. Попробую объяснить, почему такое положение вещей кажется мне неправильным. 

Основные команды Linux

 Команды консоли Linux, или как еще говорят командная строка, это своего рода промежуточное звено между пользователем и непосредственно компьютером. Для того, что бы машина выполнила ваш приказ, ей необходимо дать соответствующую команду. Изначально, именно так и происходили взаимоотношения человека с компьютером, а вот несколько позже, появился дополнительный инструмент мышка, которая значительно упростила весь процесс взаимообмена информацией и сделала его более доступным для всех пользователей. Тем не менее, консоль и на сегоднешний день, остается мощным и порой очень удобным инструментом для выполнения всякого рода действий.
  Вообще, консольных утилит существует превеликое множество, но здесь мы в кратце, в качестве примера, рассмотрим лишь две из них, но очень важные и часто используемые. Утилита Apt-get, предназначенная для работы с программными пакетами. Для тех же, кто совершенно не признает консоль, может воспользоваться замечательной графической  оболочкой для Apt-get, под названием Synaptic (имеется в официальном репозитории).
Как пользоваться утилитой?
//основная формула
  sudo apt-get команда
//в качестве примера обновим все пакеты 
  sudo apt-get upgrade

Основные команды apt-get при работе с пакетами.
apt-get update//обновление инф. о пакетах из репозитариев
apt-get upgrade//обновление всех пакетов
apt-get dist-upgrade//обновление системы в целом
apt-get clean //чистит лок. хранилище, кроме файлов кэша 
apt-get autoclean //тоже, что и clean, с удален. кэш-файлов 
apt-get check //обновляет кэш и провер. неудовл. зависимости
apt-get autoremove //удаление ранее скачаных, но ненужных пакетов 
apt-get remove //удаление пакета с сохран. конфигурац. файлов 
apt-get purge //удаление пакета со всеми зависимостями 
apt-get install //установка пакета 
apt-get build-dep //устанавл. все для сборки исходных пакетов 
apt-get source //скачивает пакеты с исходниками 

Параметры:
-h, --help//справка
-q, --quiet//скрыть индикатор процесса
-qq//не показывать ничего кроме ошибок
-d, --download-only //только получить пакеты и выйти 
-s, --simulate //выполнить симуляцию событий 
-y, --yes //автом. отвечать "Да" на все вопросы 
--reinstall //переустановить пакеты 
-f, --fix-broken //исправить нарушенные зависимости 
-m, --ignore-missing //игнорировать отсутствующие пакеты 
-u, --show-upgraded //показать обновленные пакеты 
--no-upgrade //не производить обновления пакетов 
-b, --compile, --build //собрать пакет после получения 
-D //при удалении, удалить зависящие компоненты 
-V //подробно показывать номера версий пакетов 
--no-remove //если пакеты отмеч. к удален., то apt-get выкл. 
--force-yes //принудительное выполнение заданной операции 

Прикол.
  apt-get moo
Должны увидеть корову, которая спрашивает: "Вы мычали сегодня?"
Утилита "aptitude". 
  Рассмотрим еще одну очень хорошую утилиту под названием "aptitude", фактически это тоже самое, что и "apt-get", но считается лучше, а также имеет псевдо-графический интерфейс. Принцип работы точно такой же, только вместо "apt-get", нужно вводить значение "aptitude". Сначала установим саму утилиту:
   sudo apt-get aptitude
  Теперь, если набрать: aptitude, то попадете в интерфейс программы.
  Рассмотрим некоторые команды:
  // Установка пакета.
   sudo aptitude пакет1 пакет2 пакет3
 Как видите, устанавливать можно сразу неограниченное количество пакетов одновременно. Сколько бы вы их не устанавливали, aptitude автоматически разрешит все зависимости, вам останется только согласится (y) и нажать(enter). Так же, по аналогии можно удалять пакеты:
  sudo aptitude remove имя_пакета1
                         или
  sudo aptitude purge имя_пакета1
  Первая команда удаляет только файлы пакета, не трогая настройки, вторая удаляет полностью все. Посмотреть описание пакета можно так:
   aptitude show имя_пакета
  Вообщем, эта утилита абсолютный аналог "apt-get", но при установке и удалении пакетов, желательно использовать ее, нежели "apt-get". Во всяком случае, на официальном сайте Ubuntu дают именно такие рекомендации.

Другие команды консоли.
Список команд, относящихся к информации.
hostname //сетевое имя машины 
whoami //имя текущего пользователя 
uname -m //покажет архитектуру машины 
uname -r //версия ядра 
sudo dmidecode -q //информ. об аппарат. обеспечении системы 
cat /proc/cpuinfo //информация о процессоре 
cat /proc/interrupts //прерывания 
cat /proc/meminfo //вся информация о памяти 
cat /proc/swaps //вся информация про swap 
cat /proc/version //версия ядра и другая информация 
cat /proc/net/dev //сетевые интерфейсы и статистика 
cat /proc/mounts //смонтированные устройства 
cat /proc/partitions //доступные разделы 
cat /proc/modules //загруженные модули ядра 
lspci -tv //PCI устройства 
lsusb -tv //USB устройства 
date //текущая дата 
cal //календарь и текущий месяц 
cal 2012 //покажет весь 201х год 

Команды, относящиеся к процессам перезагрузки и выключения.
shutdown -h now //выключить систему 
init 0 //выключить систему 
telinit 0 //выключить систему 
shutdown -h hours:minutes & //запланировать выключение системы 
shutdown -c //отменить запланированное выключение 
shutdown -r now //перезагрузить систему 
reboot //перезагрузить систему 
logout //завершить сессию 

Операции с файлами и не только...
cd /home//перейти в домашний каталог
cd ..//перейти на уровень выше
cd ../..//перейти на 2 уровня выше
cd -//перейти в предыдущий каталог
pwd //показать путь к текущей директории 
ls //показать файлы и директории 
ls -F //показать файлы и директории 
ls -l //показ. подробности о файлах, директориях 
ls -a //показать скрытые файлы 
mkdir dir1 //создать директорию с именем dir1 
mkdir dir1 dir2 //создать директории dir1 и dir2 
mkdir -p /tmp/dir1/dir2 //создать директорию в указанном месте 
rm -f file1 //удалить файл с именем file1 
rmdir dir1 //удалить директорию с именем dir1 
rm -rf dir1 //удалит директорию dir1 и всё её содержимое 
rm -rf dir1 dir2 //удалить директории dir1\dir2 и содержимое 
mv dir1 new_dir //переименовать / переместить директорию 
cp //копирование файлов/папок 
ln -s //cоздать символическую ссылку 
chmod //присвоение прав файлам 

Поиск файлов и директорий.
Забыли, куда сохраняли? Не беда! В консоли найдётся всё.
find / -name file1 //искать файлы, дирек. начин. с / 
find / -user user1 //искать файлы, директ. с user1 
find /home/user1 -name \*.bin //искать файлы .bin в /home/user1 
find /usr/bin -type f -atime +100 //иск. бин. файлы, незап. 100 дн. 
find /usr/bin -type f -mtime -10 //иск. файлы созд./изм. за 10 дн.
find / -name \*.deb -exec chmod 755 '{}' \; //иск. файлы (.deb) и измен. права 
locate \*.ps //найти файлы с расширением .ps 
whereis halt //показать путь к программе halt 
which halt