Конспект по третьей лекции курса "Системный администратор Linux" в Школе Сисадмина
Тема: Архивирование, сжатие и изменение прав доступа к файлам и директориям. Манипулирование файлами, директориями и ссылками.
Как и другие утилиты Unix, tar — специализированная программа, которая следует философии Unix «делать только одну вещь» (в данном случае — работать с архивами формата tar), «но делать её хорошо». Поэтому tar не создаёт сжатых архивов, а использует для сжатия внешние утилиты, такие как gzip и bzip2. Ранее для сжатия использовалась также утилита compress, которая практически вышла из употребления.
До версии Centos 4 команда tar совсем не умела работать с SELinux, но в пятой версии она была обновлена и научилась. Поэтому по большому счету star нам не особо нужна.
Tar файл сжатый архиватором gzip может иметь расширение tar.gz или .tgz
Пример работы:
zip -r zipfile.zip Documents/
zip -r zipfile.zip Documents/
star cvf myfiles.star Documents/
с - create; v - verbose; f - file;
tar -vcf myfiles.tar Documents/
tar и SELinux
Если мы запустим tar без указания флага --selinux то атрибуты SELinux не сохранятся в наш архив, но мы можем после восстановления файлов захотеть задать им значение по умолчанию, это можно сделать с помощью команды:
~]$ tar -xvf archive.tar | restorecon -f -
~]$ tar -xvf archive.tar | restorecon -f -
Давайте сейчас попробуем протестировать работу tar:
(Для того чтобы все получилось, нужно чтобы у вас в системе был установлен apache сервер, для centos он ставится командой yum install httpd)
~]# touch /var/www/html/file{1,2,3}
~]# ls -Z /var/www/html/
-rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file1
-rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file2
-rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file3
cd /var/www/html/
tar --selinux -cf test.tar file{1,2,3}
mkdir /test
chmod 777 /test/
cp /var/www/html/test.tar /test/
cd /test/
tar -xvf test.tar
~]$ ls -lZ /test/
-rw-r--r-- user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file1
-rw-r--r-- user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file2
-rw-r--r-- user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file3
-rw-r--r-- user1 group1 unconfined_u:object_r:default_t:s0 test.tar
-rw-r--r-- user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file2
-rw-r--r-- user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file3
-rw-r--r-- user1 group1 unconfined_u:object_r:default_t:s0 test.tar
Мы видим что httpd_sys_content_t сохранился, а не изменился на default_t.
Чтобы все расширенные атрибуты сохранились в tar архив, используйте опцию --xattrs.
Более подробно по примеру: 5.9.4. Archiving Files with tar
Мы можем сразу же создать архив и на лету его запаковать, надо добавить только один ключик.
Для gzip архива это будет ключ z:
tar -zcvf myfiles.tar.gz Documents/
мы можем сделать ему gunzip myfiles.tar.gz
и увидим уже не сжатый архив
Для bz2 архива ключ j:
tar -jcvf myfiles.tar.gz Documents/
tar -jcvf myfiles.tar.gz Documents/
Атрибут х для директории означает что в эту директорию можно зайти.
setuid, setgid
обычные пользователи не могут напрямую изменять содержимое файла passwd потому что флаг записи отключен для всех пользователей кроме root:
$ ls -l /etc/passwd
-rw-r--r-- 1 root wheel 1355 Nov 1 21:16 /etc/passwd
suid
К счастью, в модели прав доступа Linux имеются два специальных бита, называемых suid и sgid. Когда для запускаемой программы установлен бит suid, она будет работать от имени владельца исполняемого файла, а не от имени того, кто запустил программу. Теперь можем вернуться к вопросу с /etc/passwd. Если посмотрим на исполняемый файл passwd, увидим, что его владельцем является пользователь root:
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root wheel 17588 Sep 24 00:53 /usr/bin/passwd
Изменение suid и sgid
Способ установки и удаления битов suid и sgid чрезвычайно прост. Вот так мы задаем бит suid:
# chmod u+s /usr/bin/myapp
По умолчанию директории в Linux ведут себя не самым удобным во многих ситуациях образом. Обычно кто угодно может переименовать или удалить файл внутри директории если у них есть права на запись в этой директории. Для директорий, которыми владеют отдельные пользователи, такое поведение обычно не вызывает проблем.
Однако для директорий, которыми пользуется большое количество пользователей, в особенности /tmp и /var/tmp, это может вызвать целую кучу проблем. Все потому, что кто угодно может писать в эти директории, кто угодно может удалять и переименовывать чьи угодно файлы — даже если они им не принадлежат! Очевидно, довольно сложно использовать /tmp даже для временного хранения чего угодно, когда любой пользователь в любой момент может напечатать rm -rf /tmp/* и уничтожить файлы всех остальных.
Хорошая новость в том, что в Linux существует так называемый sticky бит. Когда для /tmp установлен sticky бит (командой chmod +t), единственные, кто могут удалить или переименовать файлы в /tmp — это либо владельцы этих файлов либо суперпользователь.
Подробнее:
Chattr:
Аттрибут i может установить и снять только root. При этом сам root даже ничего не сможет сделать пока явно не снимет этот атрибут.
Атрибут «i» (immutable) — полный запрет изменений
Этот атрибут позволяет запретить любые изменения файла или каталога. Пользователи не смогут ни изменить содержание, ни перезаписать его, ни удалить, ни создать жесткую ссылку. Может пригодится, для защиты от случайного удаления, например файла с правилами использования или справкой для пользователя, или запрета изменения им собственных настроек.Рассмотрим его в действии.
Атрибут «a» (append only) — разрешение записи только в конец файла
К содержанию файла с эти атрибутом можно будет только добавить что-то в конец, но не перезаписать существеющее. Пригодится, к примеру, для файла с просьбами к системному администратору. Каждый пользователь сможет добавить туда свою, но не сможет повлиять на чужие. Смотрим в действии:
Подробнее про ссылки:
Основы Linux от основателя Gentoo. Часть 1 (3/4): Ссылки, а также удаление файлов и директорий
Простое объяснение символических и жестких ссылокОсновы Linux от основателя Gentoo. Часть 1 (3/4): Ссылки, а также удаление файлов и директорий
Видеозапись лекции, и дальнейшие темы будут выкладываться в нашей группе вконтакте.

Комментарии
Отправить комментарий