Механизмы разграничения доступа, разработанные для системы UNIX в 70-х годах, очень просты, но они оказались настолько эффективными, что просуществовали уже более 30 лет и по сей день успешно выполняют стоящие перед ними задачи.
В основе механизмов разграничения доступа лежат имена пользователей и имена групп пользователей.
В индексном дескрипторе каждого файла записаны имя владельца файла и группы, которая имеет права на этот файл. Первоначально, при создании файла его владельцем объявляется тот пользователь, который этот файл создал. Точнее – тот пользователь, от чьего имени запущен процесс, создающий файл. Если выполнить команду ls -l, вы увидите владельца и его группу и, кроме того, в первом поле будут показаны права доступа и тип файла.
$ Is -I /bin/Is
-rwxr-xr-x 1 root root 49940 Sep 12 1999 /bin/Is
Символы в первом поле можно условно разделить на 4 группы. Первая группа, состоящая из единственного символа, определяет тип файла (- обычный файл; d каталог). Далее следуют три группы по три символа, которые и определяют права доступа к файлу соответственно для владельца файла, для группы пользователей, которая сопоставлена данному файлу, и для всех остальных пользователей системы (r – право читать, w – записывать, x - исполнять ).
Для изменения прав доступа к файлу используется команда chmod. Ее можно использовать в двух вариантах. В первом варианте вы должны явно указать, кому какое право даете или кого этого права лишаете:
[user]$ chmod wXp имя-файла
где вместо символа w подставляется:
либо символ u (user - то есть пользователь, который является владельцем);
либо g (group - группа);
либо о (все пользователи, не входящие в группу, которой принадлежит данный файл);
либо а (all - все пользователи системы, т. е. и владелец, и группа, и все остальные).
вместо х ставится:
либо + (предоставляем право);
либо - (лишаем соответствующего права);
либо = (установить указанные права вместо имеющихся).
вместо р — символ, обозначающий соответствующее право:
г (чтение);
w (запись);
х (выполнение).
Второй вариант задания команды chmod (он используется чаще) основан на цифровом представлении прав. Для этого мы кодируем символ r цифрой 4, символ w — цифрой 2, а символ х – цифрой 1. Для того чтобы предоставить пользователям какой-то набор прав, надо сложить соответствующие цифры.
Получив, таким образом, нужные цифровые значения для владельца файла, для группы файла и для всех остальных пользователей, задаем эти три цифры в качестве аргумента команды chmod (ставим эти цифры после имени команды перед вторым аргументом, который задает имя файла). Например, если надо дать все права владельцу (4+2+1=7), право на чтение и запись - группе (4+2=6), и не давать никаких прав остальным, то следует дать такую команду:
[user]$ chmod 760 file_name
Жесткие ссылки
Каждому файлу в Linux соответствует так называемый "индексный дескриптор" файла, или "inode". Именно индексный дескриптор содержит всю необходимую файловой системе информацию о файле, включая информацию о расположении частей файла на носителе, типе файла и многое другое. Индексные дескрипторы файлов содержатся в специальной таблице (inode table), которая формируется при создании файловой системы на носителе.
Каждый логический и физический диск имеет собственную таблицу индексных дескрипторов. Дескрипторы в этой таблице пронумерованы последовательно, и именно номер дескриптора файла является его истинным именем в системе (этот номер мы будем называть индексом файла). Однако для человека такая система имен неудобна. Поэтому файлам даются еще "человеческие" имена, и помимо этого файлы группируются в каталоги.
Т.е. имя любого файла в Linux является ни чем иным, как ссылкой на индексный дескриптор файла. Поэтому каждый файл может иметь сколько угодно разных имен. Эти имена называют еще "жесткими" ссылками. Для создания дополнительного имени используется команда ln:
In имя существующего файла новое_имя
Число жестких ссылок на файл (то есть разных имен файла) можно узнать выполнив команду ls с параметром -l. Сразу за перечислением прав доступ к файлу следует число, которое и обозначает число жестких ссылок на файл.
Задания:
1.Запустите консоль, перейдите на самый верхний уровень, к каким каталогам в корневой папке вы имеете доступ?
2.Зайдите в папку tmp
3.Создайте текстовый файл
4.Посмотрите его владельца, группу владельца и права доступа
5.Измените права доступа к этому файлу:
a)вы и ваша группа должны иметь право делать с файлом все, остальные – ничего
b)вы – чтение, запись, исполнение; группа – чтение, остальные – ничего
c)вы – ничего, группа – чтение, остальные – чтение, запись, исполнение (получится ли?)
6.Создайте ещё один файл.
a)для этого файла создайте жесткую ссылку
b)поместите её в свой домашний каталог
7.…
6.6 Установка приложений, RPM, исходные коды.
Источник: Колисниченко Д.Н. ‘Linux сервер своими руками’
В операционной системе Linux существуют три способа установки программного обеспечения: из исходных кодов, из пакетов RPM, с помощью графических менеджеров пакетов.
Установка из исходных текстов
Этот способ заключается в том, что программа распространяется не в собранном виде, а в виде исходных текстов.
Как правило, исходный текст распространяется в архиве. Обычно файл, содержащий исходный текст, имеет двойное расширение: например, tar.gz или tar.bzl. Это означает, что данный файл сжат двумя архиваторами: сначала tar, а потом gzip.
Распаковывать архив нужно по принципу стека: сначала внешним архиватором, а потом внутренним. Предположим, что prg-2.00.tar.gz — это имя файла нашего архива. Для его распаковки нужно ввести команды:
gunzip prg-2.00.tar.gz
tar xvf prg-2.00.tar
Параметр х программы tar означает, что нужно выполнить извлечение файлов из архива (параметр с — создание). Параметр v можете указывать по собственному усмотрению, он обеспечивает большую информативность при работе программы. Последний параметр f является обязательным при работе с файлами.
После успешного завершения первого этапа (распаковки) перейдите в каталог, содержащий исходные тексты. Обычно это каталог <имя_программы-версия>: cd prg-2.00
После этого вам нужно внимательно прочитать файл README и ввести три команды:
. /configure
make
make install
Первая команда конфигурирует устанавливаемую программу для работы с вашей системой. Эта программа также проверяет, может ли устанавливаемая программа работать в вашей системе. Если работа программы невозможна, вы увидите соответствующее сообщение, и процесс установки будет прерван. Обычно такое случается, когда в вашей системе не установлена одна из необходимых новой программе библиотек. Для продолжения установки необходимо установить требуемую библиотеку и попытаться заново ввести команду ./configure. После успешного завершения работы программы ./configure будет создан файл Makefile, в котором будут указаны необходимые параметры (пути к библиотекам, путь для установки программы) для программы make.
Вторая команда (make) «собирает» программу. На этом этапе программа компилируется, то есть создаются бинарные исполнимые файлы из исходных текстов.
Третья команда — make install -- устанавливает программу и файлы справочной системы в соответствующие каталоги. Обычно программы устанавливаются в каталог /usr/bin, но это зависит от содержимого конфигурационного файла Makefile.
Программа RPM
Установка программного обеспечения в дистрибутивах Red Hat и Mandrake производится с помощью программы rpm. RPM (Red Hat Package Manager) — это менеджер пакетов Red Hat.
В отличие от привычных мастеров InstallShield, которые используются для установки программ для Windows, пакеты RPM (файлы с расширением .rpm) не являются выполняемыми файлами, то есть программами. В пакетах содержатся файлы (как в архиве), которые нужно установить, а также различная информация об этом пакете.
Команда установки пакета выглядит так:
rpm -ihv <пакет>.rpm
Перед установкой программы менеджер RPM проверит зависимости пакета, то есть установлены ли в вашей системе другие пакеты, которые необходимы новой программе или конфликтуют с ней. Если установлены все нужные программе пакеты (или для работы программы вообще не нужны никакие дополнительные пакеты), а также, если новая программа не конфликтует ни с одним уже установленным пакетом, менеджер RPM установит программу. В противном случае вы получите сообщение, что для работы программы нужен какой-то дополнительный пакет или программа конфликтует с уже установленным пакетом. Если нужен дополнительный пакет, просто установите его. А вот, если программа конфликтует с уже установленным пакетом, то вам нужно будет выбрать, какой пакет больше нужен: уже установленный или новый.
При установке программы я рекомендую указывать два дополнительных параметра: h и v. Параметр h указывает программе вывести полоску состояния процесса установки, а v выводит дополнительные сообщения.
Программы gnorpm, kpackage
Это графические реализации менеджера пакетов, снабженные функцией поиска и контролем зависимости пакетов.
Для установки какого-либо пакета просто нажмите на кнопку «Установить».
Задания:
1.Собрать из исходных кодов и установить игру X-tetris
2.Установить, используя gnorpm, почтовый клиент Thunderbird
3.…
Samba, настройка сети.
С помощью Samba вы сможете следующее:
- Предоставлять доступ к разделам Linux для рабочих станций Windows.
- Получать доступ к ресурсам сети Microsoft.
- Распечатывать документы на сетевых принтерах сети Microsoft, а также позволить использовать свой принтер в качестве сетевого.
Установить Samba можно через Установку и удаление программ или из командной строки:
# urpmi samba
После установки samba вы получаете возможность делать папки общими так же как в Windows. В контекстном меню на папке выбираете Общий доступ, указываете имя общего ресурса, и выбираете права доступа – только чтение, запись, исполнение.
Для доступа к общим папкам в Windows можно набрать адрес папки в строке адреса Проводника, аналогично в Linux можно набрать адрес в строке адреса Konqueror или использовать команду
$ smbclient //comp_name/share -U user%password
Для просмотра списка общих ресурсов можно использовать комнду
$ smbclient //comp_name -L
Использовать программу smbclient не очень удобно. Гораздо удобнее использовать программу smbmount, которая умеет монтировать удаленный общий ресурс как обычную файловую систему.
# smbmount //comp_name/share/ /mnt/my_folder -U user
Задания:
1.Установить Samba
2.Создать в своей домашней директории папку, разрешить к ней доступ на чтение другим компьютерам
3.Проверить, что эта папка доступна и компьютерам под управлением Windows
4.Для ещё одной папки разрешить не только чтение, но и запись. Проверить.
5.Смонтировать чужую общую папку на свою файловую систему
6.…
FTP-сервер.
Источник: ru.wikipedia.org, Lafox.Net
File Transfer Protocol (букв. «протокол передачи файлов») или просто FTP — сетевой протокол, предназначенный для передачи файлов в компьютерных сетях. Протокол FTP позволяет подключаться к серверам FTP, просматривать содержимое каталогов и загружать файлы с сервера или на сервер, кроме того возможен режим передачи файлов между серверами (FXP).
FTP является одним из старейших прикладных протоколов, появившимся задолго до HTTP в 1971 году. До начала 90-х годов на долю FTP приходилось около половины трафика в сети интернет. Данный протокол и сегодня используется для распространения программного обеспечения и доступа к удалённым хостам.
Протокол не шифруется, при аутентификации передаёт логин и пароль открытым текстом. Если злоумышленник находится в одном сегменте сети с пользователем FTP, то, используя сниффер (например, Ethereal), он может легко «поймать» логин и пароль пользователя, или, при наличии специальной программы, перехватывать передаваемые по FTP файлы без авторизации.
Установка и настройка
Проверяем что установлен или устанавливаем пакет ProFTPd
# urpmi proftpd
Файл конфигурации для FTP сервера ProFTPd это /etc/proftpd.conf. Все настройки и изменения мы будем делать именно в нем.
Запускаем сервер:
# /etc/init.d/proftpd restart
проверяем работоспособность
$ lftp admin@localhost
вводим пароль пользователя admin. Теперь выполняем команду ls и убеждаемся, что мы находимся в домашнем каталоге пользователя admin. Выполняем команду cd / и ls и убеждаемся, что FTP сервер пустил нас выше домашнего каталога пользователя, что часто НЕЖЕЛАТЕЛЬНО. Выходим из FTP клиента (команда quit).
Чтобы этому воспрепятствовать, пишем в файле конфигурации строчечку DefaultRoot ~. Это значит, что мы “запираем” всех пользователей в их домашних каталогах. А если нам все-таки хочется пустить какого-то пользователя (пусть это будет testuser) выше, добавляем еще одну строку DefaultRoot / testuser.
Часто используется анонимный FTP сервер (anonymous ftp). Настроить его легко можно так: добавьте следующий код в конец конфигурационного файла /etc/proftpd.conf (каталог /var/ftp/ по умолчанию является каталогом, где лежат общедоступные файлы и домашним каталогом пользователя ftp, под которым запускается демон ProFTPd):
###########################################
<Anonymous /var/ftp/>
User ftp
Group ftp
# Рассматривать клиентов, вошедших под логином anonymous как ftp
UserAlias anonymous ftp
# Лимит на максимальное количество подключений пользователя anonymous
MaxClients 30
# не спрашивать пароля и оболочку.
RequireValidShell off
AnonRequirePassword off
# ограничение ЗАПИСИ(WRITE) везде в anonymous chroot
<Limit WRITE>
Order Deny, Allow
DenyAll
</Limit>
</Anonymous>
###########################################
Теперь перезапускаем ProFTPd сервер и проверяем, что анонимный доступ на FTP работает:
$ links ftp://localhost/
Часто используется анонимный FTP сервер, который предоставляет возможность пользователям загружать файлы на сервер. Для того, чтобы это сделать, сначала необходимо создать каталог внутри корня анонимного FTP сервера, в который эти пользователи будут иметь доступ, и сделать его владельцем пользователя ftp.
# mkdir /var/ftp/uploads
# chown ftp.ftp /var/ftp/uploads
Теперь добавим следующий код конфигурационный файл /etc/proftpd.conf внутрь секции <anonymous> (например перед ее закрытием, то есть перед строкой </anonymous>):
<Directory uploads/*>
<Limit READ>
DenyAll
</Limit>
<Limit STOR>
AllowAll
</Limit>
</Directory>
Теперь в каталог /var/ftp/uploads пользователи могут заливать файлы, используя анонимную авторизацию. При этом файлы в этом каталоге никто не сможет читать. Если вам захочется, чтобы загруженные в этот каталог файлы были доступны для чтения анонимным пользователям, тогда просто закомментируйте (или удалите) следующие строки:
# <Limit READ>
# DenyAll
# </Limit>
Минимальные настройки FTP сервера закончены.
Задания:
7.Установить FTP-сервер.
8.Настроить анонимный доступ.
9.Разрешить пользователям размешать свои файлы на сервере.
10.…
Удалённое управление, SSH.
SSH (Secure Shell) — программа, позволяющая вам зарегистрироваться на удаленных компьютерах и установить зашифрованное соединение.
SSH использует криптографию открытого ключа для шифрования соединения между двумя машинами, а также для опознавания пользователей.
Оболочку ssh можно использовать для безопасной регистрации на удаленном сервере или копировании данных между двумя машинами. Вы можете администрировать удаленную машину также легко, как и локальную.
Оболочка ssh незаменима в тех случаях, когда удаленно нужно администрировать сервер или когда сервер не имеет собственного монитора. При использовании telnet все данные, которые передаются через telnet-соединение, доступны в открытом виде. А значит, имена пользователей и пароли будут доступны всем, кто прослушивает трафик с помощью анализатора (sniffer’а).
Программа состоит из демона (службы) sshd, который запускается на Linux/UNIX-машине, и клиента ssh, который распространяется как для Linux, так и для Windows.
Чтобы подключиться к другому компьютеру наберите команду:
$ ssh hostname.domainssh запросит вас ввести пароль пользователя. В качестве имени пользователя для установки соединения будет использовано имя текущего пользователя, то есть имя, под которым вы сейчас зарегистрированы в системе. В случае, если аутентификация пройдет успешно, начнется сеанс связи. Прекратить сеанс можно комбинацией клавиш Ctrl+D.
Если вам нужно указать другое имя пользователя, используйте параметр -l программы ssh:
$ ssh -l user hostname.ruКоманды ssh полностью аналогичны командам консоли (=оболочки, shell) на локальном компьютере.
Задания:
1.Подключиться к компьютеру соседа, используя ssh
2.Создать на компьютере соседа нового пользователя (используя права root’а)
3.Измените пароль соседа
4.Посмотрите документы соседа в его домашней директории
5.Скопируйте пару файлов из его документов
6.*Установите Firefox на компьютер соседа
7.…