Всего за 199 руб. Купить полную версию
Пользователь с UID = 0 обычно имеет текстовое имя '
root
Чаще всего, наверное, приходится сталкиваться с правами на файловой системе. Здесь каждый объект (файл, ссылка, каталог, устройство, сокет, канал, далее будем для краткости писать «файл») имеет владельца и группу, а также связанные с ними права – чтение, запись и исполнение. Часто для их записи используют восьмеричную запись или формат команды
ls
750
ls rwxr-x–
rwx / 7
r-x / 5
-– / 0
Проверка прав производится в таком порядке – если владелец файла совпадает с EUID, берутся права владельца. Иначе, если группа или одна из дополнительных групп совпадают с группой файла, то берутся права группы, и в противном случае – права «остальные».
Для каталога право на «исполнение» означает возможность войти в каталог. При этом посмотреть список файлов в нём не гарантируется – для этого нужно право на чтение. Право на запись означает возможность создавать и удалять файлы в каталоге. Сменить права на файл (или другой объект) может только его владелец. Если нужно сменить права для группы, то владелец должен в неё входить. Ну и конечно, суперпользователь может менять любые права, а также владельца и группу любого файла.
Как уже было сказано, право записи в каталог позволяет создавать и удалять в нём файлы. В том числе чужие. Чтобы обеспечить комфорт работы с общими каталогами, например
/tmp
sticky
root
Раз уж мы коснулись файловой системы, то стоит отметить ещё два флага –
suid
sgid
suid
sgid
passwd
sgid
suid
Как уже упоминалось выше, посмотреть права можно командой
ls
-
d
l
s
r/-
w/-
x/-
-
sticky
t
x
s
x
+
Менять права на файл можно командой
chmod
chown
chgrp
В символьном виде для
chmod
u/g/o/a
+
-
r/w/x
chmod go+rx myfile
myfile
Описанная выше система покрывает множество потребностей, но не все. В попытках улучшить её были созданы различные расширения, реализованные в файловых системах Linux. Одно из них – расширенные атрибуты файлов. Они включены по умолчанию, и их можно смотреть и изменять командами
lsattr
chattr
Таблица 4: некоторые расширенные атрибуты
Если расширенный атрибут запрещает какое-то действие (например удаление), то это распространяется даже на суперпользователя (в отличие от обычных атрибутов). Но суперпользователь может легко снять или установить любой из них.
Другое расширение, как правило требующее активации на файловой системе, – ACL (Access Control List), списки контроля доступа. Посмотреть и изменить их можно командами
getfacl
setfacl
vasya
test.txt
Здесь ключ '
-m
--set
setfacl
-x
u:vasya;rw
vasya,
vasya
Как видим, правило осталось, но права на запись ограничены маской.
Ещё одно полезное свойство acl – наследование правил. На каталог можно установить acl «по умолчанию», они могут не совпадать с acl на сам каталог, и они будут автоматически применяться ко всем создаваемым файлам и каталогам.
Советуем подробнее прочесть о правах в Linux и опциях вышеупомянутых команд, тут мы их коснулись совсем немного.
Понятие сервиса, ключевые сервисы
Выше мы уже не раз использовали термины «сервис», «демон», «служба». Все они обозначают одно и то же: процесс или группу процессов, которые работают постоянно или автоматически запускаются по запросу. Их задача – обслуживать определённые запросы от пользователей, других процессов, других компьютеров в сети. Например, web-сервер
apache
Некоторые сервисы запускаются через «супердемон»
inetd
xinetd
inetd/xinetd
inetd/xinetd
xinetd
Чтобы узнать, работает ли конкретный сервис, можно проверить, запущен ли соответствующий процесс (за исключением сервисов, запускаемых через
inetd/xinetd
netstat -lpn
Основные (но не все) сервисы для кластера:
Таблица 5: некоторые стандартные сервисы и их порты
Более полный список можно найти в файле
/etc/services
inetd/xinetd
tftp, echo, ftp
Справка
В системе UNIX несколько тысяч команд, однако в обычной работе пользователю достаточно хорошо знать несколько десятков команд. В этом пособии мы кратко рассмотрим небольшой набор наиболее употребительных команд. В первую очередь потребуются команды для работы с каталогами и файлами. Как и ранее, в квадратных скобках будем указывать необязательные параметры.
Самая главная команда, которая вам потребуется, –
man
man
man имя_команды
Таблица 6: разделы справки man
Так как в разных разделах могут быть страницы с одинаковыми именами, то иногда надо явно указать номер раздела. Например, по команде
man crontab
crontab
crontab
man 5 crontab
man -k слово
man man
Кроме
man,
info
man
info
man
Соглашения об именах файлов
В именах файлов и каталогов можно использовать любые символы, кроме '/' и '
\0
Таблица 7: спецсимволы shell
UNIX не запрещает использовать эти символы в именах файлов, но необходимо экранировать их специальное назначение символом '\' или заключать их в одинарные кавычки
'…'
Соглашения о расширениях
Расширение файла – часть имени после последней точки; например, файл '
text.cc
.cc
Таблица 8: распространённые расширения файлов
Важно понимать, что расширение файла не имеет принципиального значения для ОС и большинства программ. Поменяв расширение файла на '
.exe
.sh
do_it_now
chmod a+x do_it_now
Имена, начинающиеся с точки (.), часто присваиваются служебным файлам и каталогам. Эти файлы и каталоги обычно игнорируются программами и файловыми менеджерами по умолчанию. Например, команда
ls
'-a'
Многие команды допускают в качестве аргумента использование списков имён файлов. Эти списки удобно формировать с помощью шаблонов shell. Рассмотрим их ниже.
Шаблоны
Стандартная оболочка (shell) в UNIX – очень мощный инструмент и кроме запуска команд имеет массу возможностей, упрощающих работу в консоли. Самое простое средство – шаблоны имён файлов. Например, написав команду '
ls *.c
Важно понимать, что '
*.c
1.c
2.с
ls 1.c 2.c
ls *.c
Таблица 9: шаблоны в shell
Все шаблоны, кроме '
{}
{}
Например, '
ls *.{cxx,h,la}
ls *.cxx *.h *.la
cp config{,.bak}
cp config config.bak
Если задан шаблон символами '
*
[]
ls *.abc
ls *.abc
Чтобы отменить действие спецсимвола, достаточно поставить перед ним обратную косую черту '\' или заключить весь аргумент в одинарные кавычки. Например, если мы хотим удалить файл с именем «
--rf *.?
rm – –rf\ \*.\?
или
rm – '–rf *.?'
Обратите внимание на первый аргумент '
--
-f
rm -f
-f
rm
rm – -f
Команды для работы с деревом каталогов
pwd
cd [ dirname ]
Примеры перемещения по дереву каталогов:
сd /export/home/user1
cd /
cd prog/cc
cd ../gosha/bin
cd
Специальные имена каталогов:
. (точка) – текущий каталог;
.. (две точки) – родительский каталог по отношению к текущему.
В bash или zsh можно использовать спецсимволы, которые shell преобразует в имена каталогов:
~
~name
– (тире) – возврат в предыдущий каталог (опция встроенной команды cd).
Команды для работы с каталогами
mkdir [опции] имя_каталога …
Опции:
-m mode
-p
rmdir имя_каталога …
ls [опции/имена]
имена
Наиболее часто используются опции:
-a
-l
-t
-R
Команды для работы с файлами
touch [опции] имя_файла
rm [опции] имя_файла … —
опции
-i
-f
-r
Примеры:
Для задания списка файлов можно использовать шаблоны, но пользоваться ими следует крайне осторожно. Команда
rm test*
test
rm test *
mv [опции] источник назначение
Опции:
-i
-f
Команда mv выполняет множество функций в зависимости от типа аргументов.
1) Переименовывает файлы и каталоги, если оба аргумента являются либо файлами, либо каталогами:
mv file1 file2
file1
file2
mv dir1 dir2
dir2
dir1
dir2
dir2
dir1
2) Перемещает файл или каталог в другой каталог с тем же именем или другим:
mv file1 dir2
file1
dir2
mv file1 dir2/file2
file1
dir2
file2.
Если источником является список файлов, а назначением – каталог, то можно использовать шаблоны:
mv file* ../dir2