Тема: Apache в chroot
Индеец в резервации или apache в chroot
Преамбула
Появилась необходимость создать, насколько это возможно, защищенный хостинг. Но в то же время не ущемлять пользователя, какими либо ограничениями, такими как safe mode или разные владельцы на файлы созданные апачей и закаченные по ftp.
Версии
Все тестировалось на FreeBSD 5-6 (в jail'е и без него)
apache 1.3.37
mod_ssl 2.8.28
php 5.2.1
php5-extensions
[listo]
[li]Подгатовка пользователя
Создаем пользователя apache (предполагается, что таких пользователей будет потом много, клиентам шелл может понадобится) от которого будет работать вся сборка. Назначаем пользователю стандартную домашнюю директорию /home/apache. Домашняя директория пользователя будет корнем песочницы. Поскольку это у нас пользователь для апачи то шелла ему не даем. [/li]
[li]Помещение апачи в песочницу
Для того чтобы апача нормально работал нужно создать среду окружения. Самая неприятная часть Нужно скопирывать все неоходимые файлы и создать нужные директории.
[mono]./apache
|-- bin
| |-- cat
| |-- chmod
| |-- cp
| |-- csh
| |-- date
| |-- echo
| |-- expr
| |-- link
| |-- ln
| |-- ls
| |-- mkdir
| |-- mv
| |-- ps
| |-- pwd
| |-- rm
| |-- rmdir
| |-- sh
| |-- su
| `-- tcsh
|-- dev
| |-- null
| |-- random
| |-- urandom -> random
| `-- zero
|-- etc
| |-- db_gen.sh
| |-- group
| |-- hosts
| |-- manpath.config
| |-- master.passwd
| |-- resolv.conf
| |-- motd
| |-- passwd
| |-- pwd.db
| |-- spwd.db
| `-- termcap
|-- lib
| |-- libc.so.6
| |-- libcrypt.so.3
| |-- libcrypto.so.4
| |-- libedit.so.5
| |-- libipsec.so.2
| |-- libkvm.so.3
| |-- libm.so.4
| |-- libmd.so.3
| |-- libncurses.so.6
| |-- libutil.so.5
| `-- libz.so.3
|-- libexec
| `-- ld-elf.so.1
|-- sbin
| |-- ldconfig
| `-- ping
|-- tmp
| `-- session
|-- usr
| |-- X11R6
| | `-- lib
| | |-- libICE.so.6
| | |-- libSM.so.6
| | |-- libX11.so.6
| | |-- libXext.so.6
| | `-- libXpm.so.4
| |-- bin
| | |-- awk
| | |-- bzip2
| | |-- cc
| | |-- diff
| | |-- ee
| | |-- fetch
| | |-- find
| | |-- gcc
| | |-- grep
| | |-- groups
| | |-- gunzip
| | |-- gzip
| | |-- id
| | |-- ldd
| | |-- less
| | |-- limits
| | |-- man
| | |-- more
| | |-- nawk
| | |-- openssl
| | |-- patch
| | |-- perl
| | |-- sed
| | |-- sort
| | |-- ssh
| | |-- tail
| | |-- tar
| | |-- tr
| | |-- uname
| | `-- vi
| |-- include
| | `-- stdio.h
| |-- lib
| | |-- compat
| | |-- libarchive.so.2
| | |-- libasn1.so.8
| | |-- libbsm.so.1
| | |-- libbz2.so.2
| | |-- libcom_err.so.3
| | |-- libfetch.so.4
| | |-- libgnuregex.so.3
| | |-- libgssapi.so.8
| | |-- libkrb5.so.8
| | |-- libpam.so.3
| | |-- libroken.so.8
| | |-- libssh.so.3
| | |-- libssl.so.4
| | |-- libstdc++.so.5
| | `-- libwrap.so.4
| |-- libdata
| |-- libexec
| | `-- ld-elf.so.1
| |-- local
| | |-- bin
| | | |-- checkgid
| | | |-- dbmmanage
| | | |-- htdigest
| | | |-- htpasswd
| | | |-- perl
| | | |-- unrar
| | | `-- unzip
| | |-- etc
| | | |-- apache
| | | | |-- access.conf
| | | | |-- access.conf-dist
| | | | |-- httpd.conf
| | | | |-- httpd.conf-dist
| | | | |-- magic
| | | | |-- magic-dist
| | | | |-- mime.types
| | | | |-- mime.types-dist
| | | | |-- srm.conf
| | | | |-- srm.conf-dist
| | | | |-- ssl.crl
| | | | | |-- Makefile
| | | | | `-- README.CRL
| | | | |-- ssl.crt
| | | | | |-- 0cf14d7d.0 -> snakeoil-ca-dsa.crt
| | | | | |-- 5d8360e1.0 -> snakeoil-dsa.crt
| | | | | |-- 82ab5372.0 -> server.crt
| | | | | |-- 82ab5372.1 -> snakeoil-rsa.crt
| | | | | |-- Makefile
| | | | | |-- README.CRT
| | | | | |-- ca-bundle.crt
| | | | | |-- e52d41d0.0 -> snakeoil-ca-rsa.crt
| | | | | |-- server.crt
| | | | | |-- snakeoil-ca-dsa.crt
| | | | | |-- snakeoil-ca-rsa.crt
| | | | | |-- snakeoil-dsa.crt
| | | | | `-- snakeoil-rsa.crt
| | | | |-- ssl.csr
| | | | | |-- README.CSR
| | | | | `-- server.csr
| | | | |-- ssl.key
| | | | | |-- README.KEY
| | | | | |-- server.key
| | | | | |-- snakeoil-ca-dsa.key
| | | | | |-- snakeoil-ca-rsa.key
| | | | | |-- snakeoil-dsa.key
| | | | | `-- snakeoil-rsa.key
| | | | `-- ssl.prm
| | | | |-- README.PRM
| | | | |-- snakeoil-ca-dsa.prm
| | | | `-- snakeoil-dsa.prm
| | | |-- php
| | | | `-- extensions.ini
| | | |-- php.ini
| | | |-- php.ini-dist
| | | `-- php.ini-recommended
| | |-- include
| | | `-- apache
| | | |-- ap.h
| | | |-- ap_alloc.h
| | | |-- ap_compat.h
| | | |-- ap_config.h
| | | |-- ap_config_auto.h
| | | |-- ap_ctx.h
| | | |-- ap_ctype.h
| | | |-- ap_ebcdic.h
| | | |-- ap_hook.h
| | | |-- ap_md5.h
| | | |-- ap_mm.h
| | | |-- ap_mmn.h
| | | |-- ap_sha1.h
| | | |-- buff.h
| | | |-- compat.h
| | | |-- conf.h
| | | |-- explain.h
| | | |-- fnmatch.h
| | | |-- hsregex.h
| | | |-- http_conf_globals.h
| | | |-- http_config.h
| | | |-- http_core.h
| | | |-- http_log.h
| | | |-- http_main.h
| | | |-- http_protocol.h
| | | |-- http_request.h
| | | |-- http_vhost.h
| | | |-- httpd.h
| | | |-- multithread.h
| | | |-- os-inline.c
| | | |-- os.h
| | | |-- rfc1413.h
| | | |-- scoreboard.h
| | | |-- util_date.h
| | | |-- util_md5.h
| | | |-- util_script.h
| | | |-- util_uri.h
| | | `-- xml
| | | |-- asciitab.h
| | | |-- hashtable.h
| | | |-- iasciitab.h
| | | |-- latin1tab.h
| | | |-- nametab.h
| | | |-- utf8tab.h
| | | |-- xmldef.h
| | | |-- xmlparse.h
| | | |-- xmlrole.h
| | | |-- xmltok.h
| | | `-- xmltok_impl.h
| | |-- lib
| | | |-- libc-client4.so.8
| | | |-- libexpat.so.6
| | | |-- libfreetype.so.9
| | | |-- libiconv.so.3
| | | |-- libintl.so.8
| | | |-- libjpeg.so.9
| | | |-- libltdl.so.4
| | | |-- libmcrypt.so.8
| | | |-- libmm.so.14
| | | |-- libpcre.so.0
| | | |-- libpdf.so.8
| | | |-- libpng.so.5
| | | |-- libt1.so.5
| | | |-- libxml2.so.5
| | | |-- mysql
| | | | `-- libmysqlclient.so.15
| | | |-- perl5
| | | | `-- 5.8.8
| | | | `-- mach
| | | | `-- CORE
| | | | `-- libperl.so
| | | `-- php
| | | |-- 20060613
| | | | |-- bcmath.so
| | | | |-- bz2.so
| | | | |-- calendar.so
| | | | |-- ctype.so
| | | | |-- dom.so
| | | | |-- filter.so
| | | | |-- ftp.so
| | | | |-- gd.so
| | | | |-- gettext.so
| | | | |-- hash.so
| | | | |-- iconv.so
| | | | |-- imap.so
| | | | |-- json.so
| | | | |-- mcrypt.so
| | | | |-- mysql.so
| | | | |-- openssl.so
| | | | |-- pcre.so
| | | | |-- pdf.so
| | | | |-- pdo.so
| | | | |-- pdo_sqlite.so
| | | | |-- posix.so
| | | | |-- session.so
| | | | |-- simplexml.so
| | | | |-- spl.so
| | | | |-- sqlite.so
| | | | |-- tokenizer.so
| | | | |-- xml.so
| | | | |-- xmlreader.so
| | | | |-- xmlwriter.so
| | | | |-- zip.so
| | | | `-- zlib.so
| | | `-- build
| | | |-- Makefile.global
| | | |-- acinclude.m4
| | | |-- config.guess
| | | |-- config.sub
| | | |-- libtool.m4
| | | |-- ltmain.sh
| | | |-- mkdep.awk
| | | |-- phpize.m4
| | | |-- run-tests.php
| | | |-- scan_makefile_in.awk
| | | `-- shtool
| | |-- libexec
| | | `-- apache
| | | |-- httpd.exp
| | | |-- libphp5.so
| | | |-- libproxy.so
| | | |-- libssl.so
| | | |-- mod_access.so
| | | |-- mod_actions.so
| | | |-- mod_alias.so
| | | |-- mod_asis.so
| | | |-- mod_auth.so
| | | |-- mod_auth_anon.so
| | | |-- mod_auth_db.so
| | | |-- mod_autoindex.so
| | | |-- mod_cern_meta.so
| | | |-- mod_cgi.so
| | | |-- mod_define.so
| | | |-- mod_digest.so
| | | |-- mod_dir.so
| | | |-- mod_env.so
| | | |-- mod_expires.so
| | | |-- mod_headers.so
| | | |-- mod_imap.so
| | | |-- mod_include.so
| | | |-- mod_info.so
| | | |-- mod_log_config.so
| | | |-- mod_log_forensic.so
| | | |-- mod_mime.so
| | | |-- mod_mime_magic.so
| | | |-- mod_mmap_static.so
| | | |-- mod_negotiation.so
| | | |-- mod_rewrite.so
| | | |-- mod_setenvif.so
| | | |-- mod_speling.so
| | | |-- mod_status.so
| | | |-- mod_unique_id.so
| | | |-- mod_userdir.so
| | | |-- mod_usertrack.so
| | | `-- mod_vhost_alias.so
| | |-- sbin
| | | |-- ab
| | | |-- apachectl
| | | |-- apxs
| | | |-- httpd
| | | |-- logresolve
| | | |-- rotatelogs
| | | |-- sshd2
| | | `-- suexec
| | |-- share
| | `-- www
| | |-- data
| | | `-- 10.0.0.1
| | | |-- http
| | | | `-- index.php
| | | |-- log
| | | | |-- access.log
| | | | `-- error.log
| | | `-- php
| | | |-- php
| | | `-- php.ini
| | |-- icons
| | | |-- README
| | | |-- a.gif
| | | |-- a.png
| | | |-- alert.black.gif
| | | |-- alert.black.png
| | | |-- alert.red.gif
| | | |-- alert.red.png
| | | |-- apache_pb.gif
| | | |-- apache_pb.png
| | | |-- back.gif
| | | |-- back.png
| | | |-- ball.gray.gif
| | | |-- ball.gray.png
| | | |-- ball.red.gif
| | | |-- ball.red.png
| | | |-- binary.gif
| | | |-- binary.png
| | | |-- binhex.gif
| | | |-- binhex.png
| | | |-- blank.gif
| | | |-- blank.png
| | | |-- bomb.gif
| | | |-- bomb.png
| | | |-- box1.gif
| | | |-- box1.png
| | | |-- box2.gif
| | | |-- box2.png
| | | |-- broken.gif
| | | |-- broken.png
| | | |-- burst.gif
| | | |-- burst.png
| | | |-- c.gif
| | | |-- c.png
| | | |-- comp.blue.gif
| | | |-- comp.blue.png
| | | |-- comp.gray.gif
| | | |-- comp.gray.png
| | | |-- compressed.gif
| | | |-- compressed.png
| | | |-- continued.gif
| | | |-- continued.png
| | | |-- dir.gif
| | | |-- dir.png
| | | |-- diskimg.gif
| | | |-- diskimg.png
| | | |-- down.gif
| | | |-- down.png
| | | |-- dvi.gif
| | | |-- dvi.png
| | | |-- f.gif
| | | |-- f.png
| | | |-- folder.gif
| | | |-- folder.open.gif
| | | |-- folder.open.png
| | | |-- folder.png
| | | |-- folder.sec.gif
| | | |-- folder.sec.png
| | | |-- forward.gif
| | | |-- forward.png
| | | |-- generic.gif
| | | |-- generic.png
| | | |-- generic.red.gif
| | | |-- generic.red.png
| | | |-- generic.sec.gif
| | | |-- generic.sec.png
| | | |-- hand.right.gif
| | | |-- hand.right.png
| | | |-- hand.up.gif
| | | |-- hand.up.png
| | | |-- icon.sheet.gif
| | | |-- icon.sheet.png
| | | |-- image1.gif
| | | |-- image1.png
| | | |-- image2.gif
| | | |-- image2.png
| | | |-- image3.gif
| | | |-- image3.png
| | | |-- index.gif
| | | |-- index.png
| | | |-- layout.gif
| | | |-- layout.png
| | | |-- left.gif
| | | |-- left.png
| | | |-- link.gif
| | | |-- link.png
| | | |-- movie.gif
| | | |-- movie.png
| | | |-- p.gif
| | | |-- p.png
| | | |-- patch.gif
| | | |-- patch.png
| | | |-- pdf.gif
| | | |-- pdf.png
| | | |-- pie0.gif
| | | |-- pie0.png
| | | |-- pie1.gif
| | | |-- pie1.png
| | | |-- pie2.gif
| | | |-- pie2.png
| | | |-- pie3.gif
| | | |-- pie3.png
| | | |-- pie4.gif
| | | |-- pie4.png
| | | |-- pie5.gif
| | | |-- pie5.png
| | | |-- pie6.gif
| | | |-- pie6.png
| | | |-- pie7.gif
| | | |-- pie7.png
| | | |-- pie8.gif
| | | |-- pie8.png
| | | |-- portal.gif
| | | |-- portal.png
| | | |-- ps.gif
| | | |-- ps.png
| | | |-- quill.gif
| | | |-- quill.png
| | | |-- right.gif
| | | |-- right.png
| | | |-- screw1.gif
| | | |-- screw1.png
| | | |-- screw2.gif
| | | |-- screw2.png
| | | |-- script.gif
| | | |-- script.png
| | | |-- small
| | | | |-- README.txt
| | | | |-- back.gif
| | | | |-- back.png
| | | | |-- binary.gif
| | | | |-- binary.png
| | | | |-- binhex.gif
| | | | |-- binhex.png
| | | | |-- blank.gif
| | | | |-- blank.png
| | | | |-- broken.gif
| | | | |-- broken.png
| | | | |-- burst.gif
| | | | |-- burst.png
| | | | |-- comp1.gif
| | | | |-- comp1.png
| | | | |-- comp2.gif
| | | | |-- comp2.png
| | | | |-- compressed.gif
| | | | |-- compressed.png
| | | | |-- continued.gif
| | | | |-- continued.png
| | | | |-- dir.gif
| | | | |-- dir.png
| | | | |-- dir2.gif
| | | | |-- dir2.png
| | | | |-- doc.gif
| | | | |-- doc.png
| | | | |-- forward.gif
| | | | |-- forward.png
| | | | |-- generic.gif
| | | | |-- generic.png
| | | | |-- generic2.gif
| | | | |-- generic2.png
| | | | |-- generic3.gif
| | | | |-- generic3.png
| | | | |-- image.gif
| | | | |-- image.png
| | | | |-- image2.gif
| | | | |-- image2.png
| | | | |-- index.gif
| | | | |-- index.png
| | | | |-- key.gif
| | | | |-- key.png
| | | | |-- movie.gif
| | | | |-- movie.png
| | | | |-- patch.gif
| | | | |-- patch.png
| | | | |-- ps.gif
| | | | |-- ps.png
| | | | |-- rainbow.gif
| | | | |-- rainbow.png
| | | | |-- sound.gif
| | | | |-- sound.png
| | | | |-- sound2.gif
| | | | |-- sound2.png
| | | | |-- tar.gif
| | | | |-- tar.png
| | | | |-- text.gif
| | | | |-- text.png
| | | | |-- transfer.gif
| | | | |-- transfer.png
| | | | |-- unknown.gif
| | | | |-- unknown.png
| | | | |-- uu.gif
| | | | `-- uu.png
| | | |-- sound1.gif
| | | |-- sound1.png
| | | |-- sound2.gif
| | | |-- sound2.png
| | | |-- sphere1.gif
| | | |-- sphere1.png
| | | |-- sphere2.gif
| | | |-- sphere2.png
| | | |-- tar.gif
| | | |-- tar.png
| | | |-- tex.gif
| | | |-- tex.png
| | | |-- text.gif
| | | |-- text.png
| | | |-- transfer.gif
| | | |-- transfer.png
| | | |-- unknown.gif
| | | |-- unknown.png
| | | |-- up.gif
| | | |-- up.png
| | | |-- uu.gif
| | | |-- uu.png
| | | |-- uuencoded.gif
| | | |-- uuencoded.png
| | | |-- world1.gif
| | | |-- world1.png
| | | |-- world2.gif
| | | `-- world2.png
| | `-- log
| | `-- httpd-error.log
| |-- sbin
| | |-- chown
| | `-- mtree
| `-- share
| `-- misc
| `-- termcap.db
`-- var
|-- cron
| `-- tabs
|-- log
| `-- httpd-suexec.log
|-- run
| |-- httpd.mm.41681.sem
| |-- httpd.pid
| `-- ld-elf.so.hints
`-- tmp[/mono]
Несколько лирических отступлений.
[li]Все права должны пренадлежать root:apache. На папки 755 на файлы 644 за исключением /tmp 777, /tmp/session 777 и /var/tmp 777[/li]
[li]Теперь про /dev, практически везде написано что их создавать надо при помощи mknod, возможно это и так, но для систем подерживающих devfs
(таких как FreeBSD) надо использовать несколько другой подход.[mono]mount_devfs devfs /home/apache/dev/
devfs -m /home/apache/dev/ rule apply hide
devfs -m /home/apache/dev/ rule apply path zero unhide
devfs -m /home/apache/dev/ rule apply path null unhide
devfs -m /home/apache/dev/ rule apply path random unhide[/mono][/li]
[li][mono]# cat ./group
apache:*:XXXX:
www:*:80:
nogroup:*:65533:
nobody:*:65534:
user1:*:XXXX:[/mono][mono]# cat ./passwd
root:*:0:0::/root:/bin/csh
apache:*:XXXX:XXXX::/nonexistent:/usr/sbin/nologin
www:*:80:80::/nonexistent:/usr/sbin/nologin
nobody:*:65534:65534::/nonexistent:/usr/sbin/nologin
user1:*:XXX:XXX::0:0::/nonexistent:/usr/sbin/nologin[/mono][mono]# cat ./master.passwd
root::0:0::0:0::/root:/bin/csh
apache:*:XXXX:XXXX::0:0::/nonexistent:/usr/sbin/nologin
www:*:80:80::0:0::/nonexistent:/usr/sbin/nologin
nobody:*:65534:65534::0:0::/nonexistent:/usr/sbin/nologin
user1:*:XXX:XXX::0:0::/nonexistent:/usr/sbin/nologin[/mono][/li]
[/li]
[li]Настройка апачи
Запускать сервер в песочнице следует так:
[mono]#!/bin/sh
CHROOT=/home/apache
HTTPD=/usr/local/sbin/httpd
PIDFILE=/var/run/httpd.pid
echo -n " apache "
case "$1" in
start)
echo "start";
/usr/sbin/chroot $CHROOT $HTTPD
;;
stop)
echo "stop";
kill `cat ${CHROOT}${PIDFILE}`
;;
restart)
echo "restart";
kill `cat ${CHROOT}${PIDFILE}`
/usr/sbin/chroot $CHROOT $HTTPD
;;
*)
echo ""
echo "Usage: `basename $0` {start|stop|restart}" >&2
exit 64
;;
esac
exit 0[/mono]
Настройка апачи в песочницы ничем не отличается от обычной настройки.
[mono]User www
Group www[/mono]
Я собирал сначала апачу с suexec, запускал, проверял логии, докидывал недостающее файло… Потом пхп (собираем с --enable-force-cgi-redirect), опять докидывал файло, в зависимости от того с какими модулями собиралось. А только потом настраивал уже нормально. Об этом поподробнее.
Начнем с того что будем использовать все прелести suexec:
Отключаем mod_php, натестировались, работает, больше он нам в обычном виде (как модуль) непонадобится.
[mono]<VirtualHost *:80>
User user1 # пользователь от которого выполняем все операции
Group user1 # группа от которой выполняем все операции
ScriptAlias /cgi-php/ "/usr/local/www/data/10.0.0.1/php/" # Путь до cgi-php (как и что опишу ниже)
AddType application/x-httpd-php .php .php3
Action application/x-httpd-php /cgi-php/php # /cgi-php/php тут php это файл
DirectoryIndex index.php index.html index.htm
Options -Indexes
DocumentRoot /usr/local/www/data/10.0.0.1/http
ServerName 10.0.0.1
ErrorLog /usr/local/www/data/10.0.0.1/log/error.log
CustomLog /usr/local/www/data/10.0.0.1/log/access.log combined
</VirtualHost>[/mono]
Несколько пояснений. Suexec позволяет выполнять две нужные нам операции.
1. Защищать файлы других пользователей от несанкционированного доступа (без safe mode)
2. Выполнять Скрипты с правами пользователя (создавать файло, папки и т.д.)
Кстати, по умолчанию файло создается с правами user1:user1 755 и 644, если есть желание исправить на 750 и 640 то это можно сделать при сборки, ключ --suexec-umask, вообщем внимательно изучайте Makefile, там все понятно.
Теперь про cgi-php. Есть два файла в /usr/local/bin php и php-cgi. Это не наши файлы, Для того чтобы скомпилирывать наш файл нужно сделать "/usr/ports/lang/php5 make" и взять его из /usr/ports/lang/php5/work/sapi/cgi/ берем файл php и копируем его к пользователю в /usr/local/www/data/10.0.0.1/php/ тудаже запихиваем и php.ini
Выставляем права (если их выставить неправильно то не заработает)
drwxr-xr-x 5 user1 user1 512 Nov 10 17:58 10.0.0.1
drwxr-xr-x 3 user1 user1 512 Nov 17 20:36 http
drwxr-xr-x 2 user1 user1 512 Nov 11 18:17 log
drwxr-xr-x 2 user1 user1 512 Nov 11 19:34 php
-rwxr-xr-x 1 user1 user1 2242885 Nov 11 17:49 php
-r--r--r-- 1 root user1 47808 Nov 11 18:06 php.ini Обязательно для пользователя тока чтение, не надо ему там лазить и что-то менять!!!
Запускаем и проверяем, если я ничего не перепутал то все должно работать на ура.[/li]
[li]Теперь что мы имеем.
В папки data создаем для кажлого нового пользователя нужные папки http (https если надо) log и php. В пхп копируем наш php файл (он один и тоже) и копируем php.ini (для каждого пользователя он может быть разным). С правами внимательно!
Если даем пользователю пользоваться cgi то защита тут может быть только одна, файло и папки 750 и 640[/li]
[li]П.С.
Так сказать дополнение. Если пользователь хочет шелл, то его сажаем в песочницу и создаем среду окружения, необходимую для работы шелла.
[mono]./user1
|-- bin
| |-- cat
| |-- chmod
| |-- cp
| |-- csh
| |-- date
| |-- echo
| |-- expr
| |-- link
| |-- ln
| |-- ls
| |-- mkdir
| |-- mv
| |-- ps
| |-- pwd
| |-- rm
| |-- rmdir
| |-- sh
| |-- su
| `-- tcsh
|-- dev
|-- etc
| |-- group
| |-- manpath.config
| |-- master.passwd
| |-- resolv.conf
| |-- motd
| |-- passwd
| |-- pwd.db
| |-- spwd.db
| `-- termcap
|-- lib
| |-- libc.so.6
| |-- libcrypt.so.3
| |-- libcrypto.so.4
| |-- libedit.so.5
| |-- libipsec.so.2
| |-- libkvm.so.3
| |-- libm.so.4
| |-- libmd.so.3
| |-- libncurses.so.6
| |-- libutil.so.5
| `-- libz.so.3
|-- libexec
| `-- ld-elf.so.1
|-- sbin
| |-- ldconfig
| `-- ping
|-- tmp
|-- usr
| |-- bin
| | |-- awk
| | |-- bzip2
| | |-- cc
| | |-- diff
| | |-- ee
| | |-- fetch
| | |-- find
| | |-- gcc
| | |-- grep
| | |-- groups
| | |-- gunzip
| | |-- gzip
| | |-- id
| | |-- ldd
| | |-- less
| | |-- man
| | |-- nawk
| | |-- patch
| | |-- perl
| | |-- sed
| | |-- sort
| | |-- ssh
| | |-- tail
| | |-- tar
| | |-- tr
| | |-- uname
| | `-- vi
| |-- lib
| | |-- libarchive.so.2
| | |-- libasn1.so.8
| | |-- libbsm.so.1
| | |-- libbz2.so.2
| | |-- libcom_err.so.3
| | |-- libfetch.so.4
| | |-- libgnuregex.so.3
| | |-- libgssapi.so.8
| | |-- libkrb5.so.8
| | |-- libpam.so.3
| | |-- libroken.so.8
| | |-- libssh.so.3
| | |-- libssl.so.4
| | |-- libstdc++.so.5
| | `-- libwrap.so.4
| |-- libdata
| |-- libexec
| |-- local
| | |-- bin
| | | |-- perl
| | | |-- unrar
| | | `-- unzip
| | |-- etc
| | |-- lib
| | | `-- perl5
| | | `-- 5.8.8
| | | `-- mach
| | | `-- CORE
| | | `-- libperl.so
| | |-- sbin
| | | `-- sshd2
| | `-- share
| |-- sbin
| | |-- chown
| | `-- mtree
| `-- share
| `-- misc
| `-- termcap.db
`-- var
|-- cron
| `-- tabs
|-- log
|-- run
`-- tmp[/mono]
Этого файла за глаза хватит, чтобы управлять сайтом. Мантируем (mount_devfs) его вебдиректорию в домашнюю директорию (можно с логами и всем остальным)[/li]
[/listo]
Дополнения
[listo]
[li]Как заставить работать функцию mail() https://unix-forum.ru/viewtopic.php?pid=2172#p2172
[/listo]
©2007 www.alan.lt
Хотелось бы услышать замечания. И добавления.