среда, 2 февраля 2011 г.

Openfier+DRBD+Heartbeat

Извольте:
=====

Howto to Configure High Availability (HA Cluster) OpenFiler and   DRBD

Environment

This how-to will be dependent upon a specific hardware configuration, but differing hardware may be adaptable. The hardware selected was evaluated against price, performance, adaptability, and scalability.

Item    Qty    Detail
Chassis    1    NORCO RPC-2008 2U Rackmount Server Case
Motherboard    1    ASUS M2N32-WS Pro AM2
CPU    1    AMD Athlon 64 X2 5000+ Brisbane 2.6GHz Socket AM2 65W Dual-Core
Memory    2    Kingston HyperX 4GB (2 x 2GB) 240-Pin DDR2 SDRAM DDR2 800(PC2 6400)
CPU Cooler    1    Dynatron A48G 70mm 2 Ball CPU Cooler
Slim DVD    1    Sony Optiarc Slim Combo Black SATA Model CRX890S-10-OEM
PSU    1    Zippy
Hard Drive    8    WD AAKS
RAID Controller    1    3Ware 9550 SXu


Some of the above hardware specs are not necessarily designed for servers, such as the motherboard/processor, however they were salvaged from existing proven hardware to accommodate upgrades in other areas of the datacenter.

Depending on the requirements of the RAID level configuration, and other hardware the drives that participate in a LUN and their physcial location in the chassis can inadvertantly diminish redundancy. The NORCO RPC-2008 2U Rackmount Server Case hase two horizontal back planes. Given this configuration, in order to mitigate loss of a LUN, 4 RAID level 1 LUNs were configured in vertical fashion. Should one back plane fail, the array would not fall offline, but simply enter degraded mode, until the back plane is replaced.

Installation

The 3Ware 9550SXU is a supported controller for OpenFiler, however, upon installation, there was required the need to jockey the units the controller presented, both before and after installation of OpenFiler. Upon the first go, and a successful completion of the OF installation, OF will not boot. To fix this, reboot the system and in the controller bios, select the LUN with the <enter> key, then <page up>, then <enter>, then <F8> to save. This moves the LUN index so that the bootloader will be discovered upon powering on the system, and OF will start for the first time. This additional step is cumbersome, as the OF installation wizard will identify the device as sda, but after starting OF, performing cat /proc/partitions will show that the operating system was installed to sdb instead. If this is acceptable, proceed, otherwise, install to the counter partition, and switch the controller’s LUN index as needed.

Partitions & Volumes

The following table illustrates the partition scheme that will be used for the remainder of the cluster configuration.

Device    Mount    Type    Size    Start Point    End Point
/dev/sda                        
- /dev/sda1    /boot    ext3    4016    1    512
- /dev/sda2    /    ext3    8032    513    1536
- /dev/sda3         swap    4016    1537    2048
- /dev/sda4         Extended    460755    2049    60786
- /dev/sda5         LVM PV    1012    2049    2172
- /dev/sda6         LVM PV    459735    2179    60786
/dev/sdb                        
- /dev/sdb1         LVM PV    476820    1    60786



Network Configuration

Also during installation, it is advised to configure networking, rather than after. If changes are required after installation, this can be done in the following manner:

  1. vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.10.255
HWADDR=00:18:F3:65:0E:3C
IPADDR=192.168.10.150
NETMASK=255.255.255.0
NETWORK=192.168.10.0
ONBOOT=yes
TYPE=Ethernet
Though not required, this installation uses eth1 on a back channel.  The following table shows the network configuration that will be used for the remainder of the configuration:

Domain: iscsi00.web-wired.com
Interface    IP    Subnet
eth0    192.168.10.150    255.255.255.0
eth1    192.168.11.150    255.255.255.0


Domain: iscsi01.web-wired.com
Interface    IP    Subnet
eth0    192.168.10.160    255.255.255.0
eth1    192.168.11.160    255.255.255.0



Heartbeat will be configured later to operation on the 192.168.10.0/24 network, but this IP will be set at a later point.

Note: After installation, it may be recommended to update. However, this howto does not perform this step because of problems experienced. At a subsequent time, when performing an updateall, the code in the repository that is fetched, may be in a state differing to the time of this writing, nd therefore may work.

iscsi00.web-wired.com

  1. conary updateall
iscsi01.web-wired.com

  1. conary updateall
HA Cluster Configuration

DRBD  Configuration

The remaining steps will be best performed using ssh. For Windows users, PuTTY is an excellent tool and can be downloaded here.

Shared Keys

Both node must be able to communicate with each other, and without requiring a password. To do this, shared keys must be setup on each node.

iscsi00.web-wired.com

~# ssh-keygen -t dsa
# scp .ssh/id_dsa.pub root@iscsi01:/.ssh/authorized_keys2
iscsi01.web-wired.com

~# ssh-keygen -t dsa
# scp .ssh/id_dsa.pub root@iscsi00:/.ssh/authorized_keys2
Backing up the original  drbd .conf is a good idea. After this, create a new  drbd .conf and provide it with the configuration below.

iscsi00.web-wired.com

  1. mv /etc/ drbd .conf /etc/ drbd .conf.bak.000
  2. vi /etc/ drbd .conf
Here is an example of the configuration file for  drbd .conf:

global {
  usage-count no;
}

common {
  syncer { rate 100M; }
}

resource r0disk {

  protocol C;

  handlers {
    pri-on-incon-degr "echo O > /proc/sysrq-trigger ; halt -f";
    pri-lost-after-sb "echo O > /proc/sysrq-trigger ; halt -f";
    local-io-error "echo O > /proc/sysrq-trigger ; halt -f";
  }

  startup {
    degr-wfc-timeout 120;    # 2 minutes.
  }

  disk {
    on-io-error   detach;
  }

  net {
    after-sb-0pri disconnect;
    after-sb-1pri disconnect;
    after-sb-2pri disconnect;
    rr-conflict disconnect;
  }

  syncer {
    al-extents 257;
  }

  on iscsi00.web-wired.com {
    device     /dev/drbd0;
    disk       /dev/sda5;
    address    192.168.11.150:7788;
    meta-disk  internal;
  }

  on iscsi01.web-wired.com {
    device    /dev/drbd0;
    disk      /dev/sda5;
    address   192.168.11.160:7788;
    meta-disk internal;
  }
}

resource r1disk {

  protocol C;

  startup {
    wfc-timeout         0;  ## Infinite!
    degr-wfc-timeout  120;  ## 2 minutes.
  }

  disk {
    on-io-error detach;
  }

  net {
  }

  syncer {
    after "r0disk";
  }

  on iscsi00.web-wired.com {
    device     /dev/drbd1;
    disk       /dev/sda6;
    address    192.168.11.150:7789;
    flexible-meta-disk  internal;
  }

  on iscsi01.web-wired.com {
    device    /dev/drbd1;
    disk      /dev/sda6;
    address   192.168.11.160:7789;
    meta-disk internal;
  }
}
iscsi01.web-wired.com

  1. mv /etc/ drbd .conf /etc/ drbd .conf.bak.000
Both hosts need the SAME  drbd .conf, therefore, overwrite iscsi01’s config with the modified iscsi00 configuration:

iscsi00.web-wired.com

  1. scp /etc/ drbd .conf root@iscsi01.web-wired.com:/etc/ drbd .conf
Note: The  drbd .conf resource must use the system’s FQND, as in iscsi00.web-wired.com.

uname -n
Initialize  DRBD

Initialize the metadata space on /dev/drbd0 (r0disk) and /dev/drbd1 (r1disk) on both systems. In essence, this defines the resources at the system block level.

First zero out the partitions.

iscsi00.web-wired.com

Note: if this is the first install, using dd is most likely not necessary, though it is a good idea provided there is no desireable data. Executing these statements will destroy data on the devices entered. This process can take awhile. Do not continue until it is complete.

  1. dd if=/dev/zero of=/dev/sda5
  2. dd if=/dev/zero of=/dev/sda6
iscsi01.web-wired.com

  1. dd if=/dev/zero of=/dev/sda5
  2. dd if=/dev/zero of=/dev/sda6
When dd has zero’d out the device, proceed to initialiaze  DRBD .

iscsi00.web-wired.com

  1. drbdadm create-md r0disk
  2. drbdadm create-md r1disk
iscsi01.web-wired.com

  1. drbdadm create-md r0disk
  2. drbdadm create-md r1disk
The shell should provide the following response.

Writing meta data...
initialising activity log
NOT initialized bitmap
New  drbd  meta data block sucessfully created.
Starting  DRBD

Perform the following on both OF nodes:

iscsi00.web-wired.com

  1. service  drbd  start
iscsi01.web-wired.com

  1. service  drbd  start
The shell should provide the following response.

  1. Starting  DRBD  resources:    Re: Openfier+DRBD+Heartbeat.
The following command will show the status of  DRBD .

  1. service  drbd  status
The shell should provide the following response.

drbd  driver loaded OK; device status:
version: 8.2.7 (api:88/proto:86-88)
GIT-hash: 61b7f4c2fc34fe3d2acf7be6bcc1fc2684708a7d build by phil@fat-tyre, 2008-11-12 16:47:11
m:res      cs         ro                   ds                         p  mounted  fstype
0:r0disk  Connected  Secondary/Secondary  Inconsistent/Inconsistent  C
1:r1disk  Connected  Secondary/Secondary  Inconsistent/Inconsistent  C
The above indicates that the node is marked as inconsistent and secondary. This is true for both nodes, as neither have been set as the primary.

The following step will set iscsi00.web-wired.com as the primary Do this step ONLY ON THE INTENDED PRIMARY NODE (iscsi00.web-wired.com).

iscsi00.web-wired.com

  1. drbdsetup /dev/drbd0 primary -o
  2. drbdsetup /dev/drbd1 primary -o
Now that each  DRBD  device is marked as the primary, check the status to show the rate of sync completion.

  1. service  drbd  status
The shell should provide the following response.

drbd  driver loaded OK; device status:
version: 8.2.7 (api:88/proto:86-88)
GIT-hash: 61b7f4c2fc34fe3d2acf7be6bcc1fc2684708a7d build by phil@fat-tyre, 2008-11-12 16:47:11
m:res      cs          ro                 ds                     p  mounted  fstype
0:r0disk  Connected   Primary/Secondary  UpToDate/UpToDate      C
...        sync'ed:    1.5%               (453959/460442)M
1:r1disk  SyncSource  Primary/Secondary  UpToDate/Inconsistent  C
Note: If desired, run the following for real time:

iscsi01.web-wired.com

  1. watch service  drbd  status
The shell should provide the following response.

Every 2.0s: service  drbd  status                                                                                Sun Jul 12 18:19:20 2009

drbd  driver loaded OK; device status:
version: 8.2.7 (api:88/proto:86-88)
GIT-hash: 61b7f4c2fc34fe3d2acf7be6bcc1fc2684708a7d build by phil@fat-tyre, 2008-11-12 16:47:11
m:res     cs          st                 ds                     p  mounted  fstype
0:r0disk  Connected   Secondary/Primary  UpToDate/UpToDate      C
...       sync'ed:    6.4%               (430585/459721)M
1:r1disk  SyncTarget  Secondary/Primary  Inconsistent/UpToDate  C
The remaining steps can be completed while  DRBD  continues to sync each block device.

On both nodes, enable  DRBD  to startup at boot.

iscsi00.web-wired.com

  1. chkconfig --level 2345  drbd  on
iscsi01.web-wired.com

  1. chkconfig --level 2345  drbd  on
At this point in the setup configuration,  DRBD  is functioning and syncing at the block level any data written to either device. The remaining steps are designed to configure clustering using Hearbeat and iSCSI.

Creating  DRBD  Filesystem

Make a file system for drbd0 (dev/r0disk). Do this only for the primary node.

iscsi00.web-wired.com

  1. mkfs.ext3 /dev/drbd0
Setup a LVM for r1disk by editing the lvm.conf Make sure these changes are on both nodes.

iscsi00.web-wired.com

  1. vi /etc/lvm/lvm.conf
Replace this line:

filter =
With this line:

filter = /dev/sda6
iscsi01.web-wired.com

  1. vi /etc/lvm/lvm.conf
Replace this line:

filter =
With this line:

filter = /dev/sda6
Note: Remember to apply the above changes on both nodes. When the host scans for LVM partitions, it excludes the LVM partition, as this seems to cause problems with  drbd  consistency when this filter is not enabled.

Create a LVM PV. Do this only onthe primary node, as it will replicate to the secondary node via  drbd ).

iscsi00.web-wired.com

  1. pvcreate /dev/drbd1
The shell should provide the following response.

Physical volume "/dev/drbd1" successfully created
Configuring Heartbeat

Heartbeat controls fail over between hosts. The two nodes run the Heartbeat service. This sends out a heartbeat pulse on eth1. If one node dies, Heartbeat roles over to the surviving node using scripts available in /etc/ha.d/resources.d.

Make modifications to /etc/ha.d/ha.cf and /etc/ha.d/authkeys. Make sure these changes are on both nodes.

Note: /etc/ha.d/authkeys does not exist in 2.3, so create it.

iscsi00.web-wired.com

Edit the following file.

  1. vi /etc/ha.d/authkeys
Then insert the following.

auth 2
2 crc
iscsi01.web-wired.com

Edit the following file.

  1. vi /etc/ha.d/authkeys
Then insert the following.

auth 2
2 crc
Restrict permission to authkeys for root access only.

iscsi00.web-wired.com

  1. chmod 600 /etc/ha.d/authkeys
iscsi01.web-wired.com

  1. chmod 600 /etc/ha.d/authkeys
Now create an /etc/ha.d/ha.cf file on both nodes. Make sure these changes are on both nodes.

iscsi00.web-wired.com

Edit the following file.

  1. vi /etc/ha.d/ha.cf
Then insert the following.

debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
bcast eth1
keepalive 5
warntime 10
deadtime 120
initdead 120
udpport 694
auto_failback off
node iscsi00.web-wired.com
node iscsi01.web-wired.com
iscsi01.web-wired.com

Edit the following file.

  1. vi /etc/ha.d/ha.cf
Then insert the following.

debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
bcast eth1
keepalive 5
warntime 10
deadtime 120
initdead 120
udpport 694
auto_failback off
node iscsi00.web-wired.com
node iscsi01.web-wired.com
Enable Heartbeat to start up at boot. Make sure these changes are on both nodes.

iscsi00.web-wired.com

  1. chkconfig --level 2345 heartbeat on
iscsi01.web-wired.com

  1. chkconfig --level 2345 heartbeat on
In the beginning of this howto, a 1gig partition was created with intention to keep configuration and high availability services online when a system fail over occurs. Copy each service and necessary OF config data over to this new meta partition – symbolically linking it back to it’s original location. Do this only for the primary node.

Note: It is important in the following steps to retain the permissions and ownership of files and folders when moving/copying, otherwise use of the web interface will fail to function and apply changes in some areas, such as iSCSI setup.

iscsi00.web-wired.com

~# mkdir /r0disk
~# mount /dev/drbd0 /r0disk
~# mv /opt/openfiler/ /opt/openfiler.local
~# mkdir /r0disk/opt
~# cp -r /opt/openfiler.local /r0disk/opt/openfiler
~# ln -s /r0disk/opt/openfiler /opt/openfiler
~# rm /r0disk/opt/openfiler/sbin/openfiler
~# ln -s /usr/sbin/httpd /r0disk/opt/openfiler/sbin/openfiler
~# rm /r0disk/opt/openfiler/etc/rsync.xml
~# ln -s /opt/openfiler.local/etc/rsync.xml /r0disk/opt/openfiler/etc/
Edit the /opt/openfiler.local/etc/rsync.xml file.

  1. vi /opt/openfiler.local/etc/rsync.xml
Then insert the following.

<?xml version="1.0" ?>
<rsync>
<remote hostname="192.168.11.160"/> ## IP address of Secondary node (eth1).
<item path="/etc/ha.d/haresources"/>
<item path="/etc/ha.d/ha.cf"/>
<item path="/etc/ietd.conf"/>
<item path="/etc/ldap.conf"/>
<item path="/etc/openldap/ldap.conf"/>
<item path="/etc/ldap.secret"/>
<item path="/etc/nsswitch.conf"/>
<item path="/etc/krb5.conf"/>
</rsync>
Additionally, create a space where the httpd service can live.

  1. mkdir -p /r0disk/etc/httpd/conf.d
iscsi01.web-wired.com

~# mkdir /r0disk
~# mv /opt/openfiler/ /opt/openfiler.local
~# ln -s /r0disk/opt/openfiler /opt/openfiler
Edit the /opt/openfiler.local/etc/rsync.xml file.

  1. vi /opt/openfiler.local/etc/rsync.xml
Then insert the following.

<?xml version="1.0" ?>
<rsync>
<remote hostname="192.168.11.150"/> ## IP address of Primary node (eth1).
<item path="/etc/ha.d/haresources"/>
<item path="/etc/ha.d/ha.cf"/>
<item path="/etc/ietd.conf"/>
<item path="/etc/ldap.conf"/>
<item path="/etc/openldap/ldap.conf"/>
<item path="/etc/ldap.secret"/>
<item path="/etc/nsswitch.conf"/>
<item path="/etc/krb5.conf"/>
</rsync>
Note: The rsync configuration is meant to synchronize changes between the two nodes, but this will not happen unless using the most recent build. Therefore, see the fix here.

Modify the /r0disk/opt/openfiler/etc/cluster.xml config file. This config file tells Heartbeat what to do in an event of a fail over. It is also where the cluster IP address is defined. All external resources should point to this IP in order to properly fail over. Make sure these changes are on iscsi00.web-wired.com only.

iscsi00.web-wired.com

  1. vi /r0disk/opt/openfiler/etc/cluster.xml
Then insert the following.

<?xml version="1.0" ?>
<cluster>
   <clustering state="on" />
   <nodename value="iscsi00.web-wired.com" />
   <resource value="MailTo::admin@web-wired.com::ClusterFailover"/>
   <resource value="IPaddr::192.168.10.140/24" />
   <resource value="drbddisk::" />
   <resource value="LVM::r1disk" />
   <resource value="Filesystem::/dev/drbd0::/r0disk::ext3::defaults,noatime" />
   <resource value="MakeMounts" />
</cluster>
Note: The HA IP Address is declared here as 192.168.10.140. Heartbeat controls both the setup of the network interface and the mounting of our LVM VG and /dev/drbd0 (/r0disk).

Do not start heartbeat yet.

Samba and NFS Support

Modify Samba and NFS so it’s available on the /r0disk  drbd  resource.

iscsi00.web-wired.com

~# mkdir /r0disk/etc
~# mv /etc/samba/ /r0disk/etc/
~# ln -s /r0disk/etc/samba/ /etc/samba
~# mkdir -p /r0disk/var/spool
~# mv /var/spool/samba/ /r0disk/var/spool/
~# ln -s /r0disk/var/spool/samba/ /var/spool/samba
~# mkdir -p /r0disk/var/lib
~# mv /var/lib/nfs/ /r0disk/var/lib/
~# ln -s /r0disk/var/lib/nfs/ /var/lib/nfs
~# mv /etc/exports /r0disk/etc/
~# ln -s /r0disk/etc/exports /etc/exports
iscsi01.web-wired.com

~# rm -rf /etc/samba/
~# ln -s /r0disk/etc/samba/ /etc/samba
~# rm -rf /var/spool/samba/
~# ln -s /r0disk/var/spool/samba/ /var/spool/samba
~# rm -rf /var/lib/nfs/
~# ln -s /r0disk/var/lib/nfs/ /var/lib/nfs
~# rm -rf /etc/exports
~# ln -s /r0disk/etc/exports /etc/exports
iSCSI Support

iscsi00.web-wired.com

~# mv /etc/ietd.conf /r0disk/etc/
~# ln -s /r0disk/etc/ietd.conf /etc/ietd.conf
~# mv /etc/initiators.allow /r0disk/etc/
~# ln -s /r0disk/etc/initiators.allow /etc/initiators.allow
~# mv /etc/initiators.deny /r0disk/etc/
~# ln -s /r0disk/etc/initiators.deny /etc/initiators.deny
iscsi01.web-wired.com

Setup the symbolic links. They will appear broken from their origins until rsync does its job.

~# rm /etc/ietd.conf
~# ln -s /r0disk/etc/ietd.conf /etc/ietd.conf
~# rm /etc/initiators.allow
~# ln -s /r0disk/etc/initiators.allow /etc/initiators.allow
~# rm /etc/initiators.deny
~# ln -s /r0disk/etc/initiators.deny /etc/initiators.deny
FTP Support

iscsi00.web-wired.com

~# mv /etc/proftpd /r0disk/etc/
~# ln -s /r0disk/etc/proftpd/ /etc/proftpd
iscsi01.web-wired.com

~# rm -rf /etc/proftpd
~# ln -s /r0disk/etc/proftpd/ /etc/proftpd
Configure a VG for drbd1

Create a Volume group from /dev/drbd1.

iscsi00.web-wired.com

  1. vgcreate r1disk /dev/drbd1
The shell should provide the following response.

Volume group "r1disk" successfully created
Note: If planning on using Windows to connect to these iSCSI targets, do not use the “_” character or any other special characters when creating the volume group.

Heartbeat Configuration Final Steps

iscsi00.web-wired.com

Make sure these changes are on iscsi00.web-wired.com only.

  1. rm /opt/openfiler/etc/httpd/modules
  2. ln -s /usr/lib64/httpd/modules /opt/openfiler/etc/httpd/modules
  3. service openfiler restart
The shell should provide the following response.

Stopping openfiler:                                        Re: Openfier+DRBD+Heartbeat
Starting openfiler:                                        Re: Openfier+DRBD+Heartbeat
Log on the the web interface and select the Services tab. Enable the following services:

SMB / CIFS server
NFSv3 server
FTP server
iSCSI target server
Rsync server
This should automatically generate the /etc/ha.d/haresources file required for clustering. SCP this file to the secondary node.

Note: The /etc/ha.d/haresources file does not appear to be generated until entering the web interface, selecting the Services tab, and enabling rsync or iSCSI. This must occur after the cluster.xml file is configured and all other shared resource services are configured.

~# scp /etc/ha.d/haresources root@iscsi01.web-wired.com:/etc/ha.d/haresources
The /etc/ha.d/haresources file will look something like this.

iscsi00.web-wired.com MailTo::admin@web-wired.com::ClusterFailover IPaddr::192.168.10.140/24 drbddisk:: LVM::r1disk Filesystem::/dev/drbd0::/r0disk::ext3::defaults,noatime MakeMounts proftpd nfs smb iscsi-target rsync acpid openfiler
Note: Before starting Heartbeat, a volume must be created on /dev/drbd1.

~# lvcreate -L 512M -n lvm00r1disk r1disk
The rsync configuration is meant to synchronise changes between the two filers, but from observation this does not appear to happen. Do not modify /etc/ha.d/haresources directly, as it will get overwritten. Always use /r0disk/opt/openfiler/etc/cluster.xml.

Also it is a good idea to copy over the /etc/ha.d/haresources file everytime lvm volumes change as this can alter the haresources file and prevent the second filer from failing over.

- End.

====

Доброй охоты!
Взято от сюда

среда, 19 января 2011 г.

Регистрация 1С COM компонента для работы с 64 битными приложениями

64 битная версия SteelTrace Server запущенная на Windows Server 2008 R2 Standard не может получить инстанцию 1С COM объекта. Выдает следующее сообщение об ошибке “Сбой при получении производства объектов класса COM для компонента с CLSID {48EE4DBA-DE11-4AF2-83B9-1F7FD6B6B3E3} в результате следующей ошибки: 80040154”.
Это происходит потому, что 64 битные приложения не могут запускать 32 битные DLL которые активируются при запуске 32 битного COM объекта 1С. Для решения проблемы нужно воспользоваться оберткой COM+ которая являясь 64 битным приложением может взаимодействовать с 32 битными библиотеками.
Для это необходимо выполнить следующие шаги:

ОписаниеЭкраныПояснение
1Запустить службы компонентов (Component Services)image 
2В ветке Приложения COM+ добавьте новое приложение. Укажите Activation type - Server application и присвойте имя V81_COMConnector.
Выберите пользователя windows из под которого будет стартовать приложение. При установленном SteelTrace Server используйте имя steeltraceserver.
image 
3В ветке Components добавьте новую компоненту comcntr.dll из каталога загрузочных модулей 1С:Предприятия.  


За подсказку спасибо Вячеславу Гилёву

Оригенал статьи тут

вторник, 18 января 2011 г.

NAS сервер для дома или малого офиса на базе FreeNAS

Принципиальная структура ресурсов файлового сервера

  1. Авторизация на сервере проводится по личным логинам пользователей.
  2. Создана общая папка «share» с полным доступом для всех пользователей. Т.е. чтение/запись. (она же файловая помойка)
  3. Созданы личные папки с полным доступом для хозяина и закрытым доступом для всех остальных.
  4. Создана папка «dsp» для помещения туда материалов для служебного пользования.  Ограниченный доступ к папке для в всех пользователей.  Пользователь «dspdata» имеет право писать, остальные только читают.
  5. Создана скрытая папка «shadow». Может использоваться как админский ресурс для хранения дистрибутивов, как общий диск для систем баз данных и т.д. Полный доступ для всех, но пака не видна в «сетевом окружении».

Принципиальная структура ресурсов FTP сервера

  1. Авторизация на сервере проводится по личным логинам пользователей.
  2. Организован полный доступ к личным папкам для пользователей по протоколу FTP.
  3. Организован полный доступ к папке «share» из-за пределов локальной сети.
  4. К папке «shadow»  доступ из вне локальной сети, закрыт.
  5. К папке «dsp» есть доступ со строго ограниченных IP.


Установка FreeNAS на сервер
  1. Загружаемся
  2. выбираем пункт 9 (Install/Upgrade to hard drive/flash device, etc)
  3. Выбираем пункт 3 (Install ‘full’ OS on HDD + DATA + SWAP partition)
  4. Подтверждаем выбор метода установки.
  5. Выбираем расположение дистрибутива откуда ставимся.
  6. Выбираем физическое устройство на которое устанавливаем OS.
  7. Начинается разбиение
а. Основная партиция OS (корень «/») (размер. Лично я предпочитаю не экономить. Если есть возможность, ставлю от 512 до 1024.. а если химичить потом, то и больше)
б. Подтверждаем создание SWAP (файл подкачки) (равен двум оперативам)
Система установлена. Инсталлятор сам создаст нужные слайсы, но подмонтирует только корень «/».
Разбиение диска будет следующее:
«/» (корень) - размер вами указанный
SWAP (файл подкачки) – размер вами указанный
DATA (под данные) – оставшееся место на диске
Внимание! При установке OS займёт всё указанное физическое устройство.
  1. Выходим из инсталлятора.
  2. Перезагружаем компьютер. Пункт 7 (Reboot system)
Установка OS завершена.

Первичная настройка одного из сетевых интерфейсов для работы по Web интерфейсу.

1.      После перезагрузки выбираем пункт 1 (Assign interfaces)
2.      Выбираем интерфейс по которому будете проводить дальнейшую настройку (подсказка: тот который подключён к какой то сети, помечен “(up)”)
3.      Выходим из этого конфигуратора выбрав «none Finish and exit configuration». Остальные интерфейсы потом из GUI настроим.
4.      Подтверждаем выбор интерфейса как интерфейса LAN.
5.      Нас возвращают в первичное меню.

Теперь настроим выбранный интерфейс.
1.      Выбираем пункт 2 (Set LAN IP Address) для настройки выбранного интерфейса.
2.      Запрос о DHCP. Отказываемся выбирая No
Если машина в локалке где есть DHCP можете выбрать. Настройка интерфейса будет сделана автоматически.
Но я рекомендую даже в этом случае отказаться от DHCP и настроить статически выбрав IP машины самостоятельно.
В этом случае IP можно выбрать «красивый» и при последующей работе сервера с клиентами вероятность сбоя ниже.

3.      Указываем IP адрес из нашей сети (к примеру 192.168.100.10) Жмём ввод (Enter)
4.      Указываем маску (по умолчанию 24)  Жмём ввод (Enter)
5.      Указываем IP шлюза локалки
6.      Указываем IP DNS сервера (потом, в GUI, остальные допишем)
7.      Запрос на конфигурацию IP6 рассматривать не будем. Отказывается: No
Кто знает что это такое, тот знает и нужно ли это ему.
8.      Немного ждём пока всё введённое нами пропишется.
9.      Нас возвращают в основное меню.
Перезагружаем машину и прощаемся с консолью. Далее всё можно делать из GUI и консоль нам понадобится только при форс-мажоре.

Настройка сервера

Настройка системы.
После перезагрузки в любом браузере набираем IP сервера (192.168.100.10). Появляется страничка с приглашением залогинится.
Данные для авторизации после установки:
Usernameadmin
Password - freenas
  1. Меняем пароль.
Если вы решили хоть немного серьёзно заняться «серверо-строительством», то вы должны «затвердить как отче наш» !ЕФОЛТНЫЕ ПАРОЛИ МЕНЯЮТСЯ СРАЗУ!! и не на qwerty или 1234, а на грамотный пароль. Что есть «грамотный пароль»? Это пароль из 10 и более знаков состоящий из цифернобуквенной комбинации. Желательно буквы в разном регистре. Внешне пароль должен быть бессмысленным. Такие пароли как «Basia12» так же не надёжны. Для создания пароля можно применить любую утилиту генерации паролей или OnLine сервис типа http://pasw.ru/
  1. Меняем язык интерфейса. (господа «*NIX-оиды», статья пишется не для вас. Вы и так всё знаете, и предполагаемая целевая аудитория может и не знать английского)

Итак, меняем пароль.
System – General – Password
В строке Old password вводим freenas (свой старый пароль, в данном случае дефолтный)
В строках Password вводим новый пароль
Жмём на «Save». Появляется надпись «The changes have been applied successfully».
Пароль сменён.

Меняем интерфейс на русский и проводим основные системные настройки

SystemGeneral
Имя компьютера / Hostname
Любая машина имеет DNS имя  в формате name.doman (как сайты office.oootupak)
Имя компьютера / Hostname – это понятно. Имя компа и есть (File к примеру)
Домен / Domain сложнее. На практике можно именем конторы (oootupak к примеру или оставляем local)
Настройки DNS / DNS settings
IPv4 DNS-серверы / IPv4 DNS servers  - это понятно ваши DNS сервера
IPv6 DNS-серверы / IPv6 DNS servers - ваши DNS сервера по IP6. Кто в курсе проставит. Мы оставляем пустыми
            Web-интерфейс / WebGUI
Имя пользователя / Username Username администратора при залогинивании. По дефолту admin. Меняем на желательное
Протокол / Protocol  можно (желательно) выбрать HTTPS
Порт / Port указываем порт по которому мы будем коннектится для администрирования сервера к примеру 89 (чтобы не занимать 80-й. Может Web сервер захотите запустить)
Язык / Language выбираем Russian
            Время / Time
Часовой пояс / Time zone – Часовой пояс, где находится машина
Системное время / System time – системное время на машине.
Включить NTP / Enable NTP – (Network Time Protocol) кто знает, тот знает, включать ему или нет. Мы оставляем выключенным по дефолту.
Жмём «Сохранить/Save»
Таким образом мы провели конфигурацию системы.
Перезагружаем компьютер для вступления в силу внесённых изменений.

Перезагрузка

Система/ System – перезарузка/Rebootподтвердить перезагрузку.

Теперь, если вы попробуете зайти на сервер http://192.168.100.10, то вас постигнет неудача.
Согласно нашим изменениям, входить теперь нужно https://192.168.100.10:89 Обратите внимание на добавленную s и указанный порт “:89”.
Некоторый браузеры могут не пустить.
К примеру IE8 «очень умный» и может посчитать «этот сайт опасным» из-за протокола HTTPS (Hypertext Transfer Protocol Secure) – на самом деле более это безопасный протокол чем http.
HTTPS поддерживает шифрование, на обмен ключами к которому (сертификаты) и ругаются «особоВумные браузеры».
В этом случае «объясните» IE, что вы знаете что делаете. Там всплывающее окошко выплывает.

Настройка и перенастройка сетевых карт (интерфейсов)

Все наши последующие действия будут «отложенными».
Все последующие изменения вступят в силу только после перезагрузки системы.
Рассмотрим вариант сервера с 2-мя сетевыми картами, что удобно и практично.
Настройка второй сетевой карты.
Сеть – Управление интерфейсами
Видим минитабличку
Интерфейс |  Сетевой порт
LAN             |  le0 (00:00:00:00:00:00)
Жмём крестик
В табличке появляется OPT1
Жмём «Сохранить»
Теперь обе сетевые карты подключены, но одна из них не настроена, а вторая настроена «не правильно».
На данный момент у вас основной интерфейс(сетевая карта) по которому машина ходит в Internet настроен на внутреннюю, локальную сеть. Нам же по идее надо, что бы он был повёрнут на прямую в Internet, а второй, дополнительный интерфейс, в локалку.

Перенастраиваем интефейсы.

Сеть – OPT1
Конфигурация IP4 – ставим галку «активировать»
Тип Static
Описание – можно оставить, но я переименовываю.
IP-адрес – вписываем IP вашей внутренней подсети 192.168.100.10 к примеру(да, да. Пока он совпадает с IP на LAN, не страшно).
Выставляем маску. Это выпадающее меню после “/”. Маски бывают разные, вам скорее всего нужна 24, что соответствует 255.255.255.0. Если нужна другая, посмотрите соответствия в Internent.
Конфигурация IPv6  и т.д. – не трогаем.
Жмём «Сохранить»

Сеть – LAN
Тип Static
IP-адрес – вписываем один из наших внешних адресов и соответствующую маску.
Шлюз – вписываем шлюз для наших внешних IP.
Жмём «сохранить»

Сеть – Управление интерфейсами
Видим минитабличку
Интерфейс |  Сетевой порт
LAN            |  le0 (00:00:00:00:00:00)
OPT1           |  le1 (00:00:00:00:00:00)
Использую выпадающие менюшки, меняем местами интерфейсы.
Жмём «сохранить»
Таким образом мы:
  1. Подключили второй интерфейс (сетевую карту)
  2. Провели настройку и перенастройку второго и первого интерфейсов, соответственно.
  3. Поменяли интерфейсы местами.
Ранее - интерфейс le0 был главным и смотрел в локальную сеть офиса. Весь трафик с него в интернет шёл через шлюз локальной сети, что нам не нужно.
Интерфейс  le1 был отключён.
Теперь - интерфейс le0 стал вторым, а le1 первым. Таким образом выход в интернет для этого сервера производится с интерфейса le1 напрямую в Internet со своим статическим IP адресом, а le0 служит для предоставления доступа к ресурсам из локальной сети офиса.

Перезагружаем сервер.
Система/ System – перезарузка/Reboot – подтвердить перезагрузку.
После перезагрузки логинимся по тому же IP или уже по внешнему. Это ваше дело.

Настройка FireWall

Сеть – Firewall
Видим табличку в которой уже есть ряд правил, но они не активны. Firewall так же выключен.
Жмём на серый крестик.
Обращаем внимание что «Правило Firewall» стоит галочка «включить».
Этой галочкой вы в последствии можете включать/отключать правила.
Правило Firewall - ставим галочку «включить»
Номер правила – не трогаем
Действие – переключаем на «запретить»
Интерфейс – ставим LAN
Протокол – ставим UDP
Направление – любое
Описание - UDP Internet Deny
Жмём «сохранить»
Этим правилом мы закрыли любое общение по UDP протоколу для интерфейса LAN, который у нас напрямую в Internet смотрит. Нечего там UDP делать.
Теперь закроем «Самбу» (SMB) на интерфейсе Internet
Жмём на серый крестик.
Правило Firewall - ставим галочку «включить»
Номер правила – не трогаем
Действие – переключаем на «запретить»
Интерфейс – ставим LAN
Протокол – ставим «все»
Порт назначения139
Направлениелюбое
Описание - Deny SMB from Internet (LAN)
Жмём «сохранить»
Так же создаём правило для порта 445

Так же настраиваем другие правила, которые вам нужны.
К примеру, можно закрыть все порты со стороны Internet, оставив только те, который вам нужны. 21 – FTP, 80 – HTTP, 89 – (ваш HTTPS для администрирования, а можете и его закрыть снаружи.), ….
Пример 1
Правило разрешающее работу FTP для/через/на интерфейсе LAN, который у нас в Internet смотрит.
Жмём на серый крестик.
Правило Firewall - ставим галочку «включить»
Номер правила – не трогаем
Действие – переключаем на «разрешить»
Интерфейс – ставим LAN
Протокол – ставим TCP
Порт назначения – 21
Направление – любое
Описание - Alloy FTP from Internet (LAN)
Жмём «сохранить»
Пример 2
Правило запрещающее любое общение по интерфейсу LAN.
Жмём на серый крестик.
Правило Firewall - ставим галочку «включить»
Номер правила – не трогаем
Действие – переключаем на «запретить»
Интерфейс – ставим LAN
Протокол – ставим «все»
Порт назначения – оставляем пустым
Направление любое
Описание – Deny All from Internet (LAN)
Жмём «сохранить»
Теперь по интерфейсу LAN вашей машины не существует.

Теперь влючаем Firewall
Firewallставим галочку «включить»
Жмём «применить изменения» и «сохранить и перезапустить»

Внимание!!
Обработка правил Firewall осуществляется по принципу «до первого совпадения».
Т.е. Если вы сначала поставите правило «закрыто» на 5555 порт, а потом откроете его, то 5555 порт останется закрытым.
Таким образом при настройке Firewall «всё закрыто, открыты только указанные порты» нужно сначала ставить разрешающие правила, а потом правило запрещающее всё.

Включаем SWAP и Монтируем DATA
Дополнительно – Команда
В строке «Команда» вводим fdisk и нажимаем «выполнить»
В результате выполнение получаем карту диска.
$ fdisk
******* Working on device /dev/da0 *******
parameters extracted from in-core disklabel are:
cylinders=512 heads=128 sectors/track=32 (4096 blks/cyl)
parameters to be used for BIOS calculations are:
cylinders=512 heads=128 sectors/track=32 (4096 blks/cyl)
Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 63, size 1044162 (509 Meg), flag 80 (active)
         beg: cyl 0/ head 1/ sector 1;
         end: cyl 64/ head 254/ sector 63
The data for partition 2 is:
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 1048635, size 220500 (107 Meg), flag 0
         beg: cyl 65/ head 70/ sector 1;
         end: cyl 78/ head 254/ sector 63
The data for partition 3 is:
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 1271844, size 816606 (398 Meg), flag 0
         beg: cyl 79/ head 43/ sector 1;
         end: cyl 129/ head 254/ sector 63
The data for partition 4 is:
<UNUSED>

Нас интересуют строки «The data for partition * is» и далее по каждой партиции.
The data for partition 1 is: - корень. 
The data for partition 2 is: - Data
The data for partition 3 is: - тот самый SWAP

Ориентироватся можно по размеру партиции. Вы же помните какой размер задавали корню и SWAP? Ну а третий оставшийся – DATA.
Система/ System – Дополнительно – Файл подкачки
Ставим галочку на «включить» 
«Тип» переводим на «устройство» 
«Устройство» указываем на основе полученной информации (Working on device /dev/da0 (устройство da0)  The data for partition 3 (3-я партиция) is: … получаем /dev/da0s3) /dev/da0s3 – нажимаем «Сохранить».
Должно появится сообщение «Изменения были применены успешно» / «The changes have been applied successfully».
Если пишет «Ошибка: Изменения не могут быть применены (код ошибки 1).», значит не правильно указали устройство
SWAP подключён.
Подключение и монтирование DATA.
Диски – Управление  
Крестик «добавить диск» 
«Диск» выбираем наш диск на котором стоит OS. 
«Уже имеющаяся файловая система» ставим UFS (GPT  and Soft Updates)
Жмём «Добавить» 
Жмём «применить изменения»  - в колонке «состояние» должно появится «OnLine»
Подключили. Теперь монтируем.
Диски – Точка монтирования 
Крестик «добавить …»
Тип – Диск
Диск – Выбрать нужный, с которым работаем на данный момент.
Тип разделаMBR
Номер раздела – 2
Файловая системаUFS
Имя точки монтированияdata (совет. Не пишите с заглавной буквы. Потом не нужно будет за регистром букв следить при наборе в командной строке, если что. Тут не Windows. Тут буквы “D” и “d” это разные буквы)
Описание – можно оставить пустым или что то написать.
Остальное не трогаем.
Жмём на «Добавить»
Жмём на «применить изменения»
В колонке «состояние» должно появится «Ok»
DATA подмонтирован.

Создание папок для организации сетевых ресурсов.

Дополнительно – Файловый менеджер.
Здесь нам придётся снова залогинится.
Username: root
Password: ваш пароль на «admin»
Language: можете выбрать любой.
Логинимся и попадаем в корень «/».
Переходим: mnt / data
В правом верхнем углу в выпадающем меню, выбираем «Directory / Каталог».
Рядом пишем «dsp» (без кавычек)
Жмём «Create / Создать»
Так же создаём папку «share», «users» и «shadow»

Создание базы пользователей.
Доступ – Пользователи и группы.
Крестик «добавить …» -
Имя – логин пользователя. (к примеру test)
Полное имя – ФИО пользователя. (к примеру Andrey Test)
Пароль – пароль пользователя.
Идентификатор пользователя – не трогаем. (гы.. не доросли ещё.. ;-))
Командная оболочка (shell)nologin (всё равно пользователя кроме как по самбе и FTP пускать не будем)
Основная группаstaff
Дополнительная группаftp (иначе по FTP не войдёт. Так уж FreeNAS настроен, можно и перенастроить, если хотите)
Домашний каталог – Каталог пользователя. Будьте осторожны. Указывайте  личный каталог, а не общую папку. 
Жмём на кнопку «…» Попадаем в /mnt. Входим в подмонтированный диск «data»(/mnt/data), входим в  /users (получается /mnt/data/users). Дописываем /test (получается /mnt/data/users/test)
Жмём «Ок».
Жмём «Сохранить».
Создаём таким образом всю базу пользователей.

Создаём пользователя dspdata
(для загрузки служебных документов в  папку «dsp» на сервере)
крестик «добавить …» -
Имя – логин пользователя. (dspdata)
Полное имя – описание (к примеру office admin)
Пароль – пароль пользователя.
Идентификатор пользователя – не трогаем.
Командная оболочка (shell) – nologin
Основная группаstaff
Дополнительная группаftp
Домашний каталог – Каталог пользователя.
Жмём на кнопку «…» Попадаем в /mnt. Входим в подмонтированный диск «data»(/mnt/data), входим в  /dsp (получается /mnt/data/dsp).
Жмём «Ок».
Жмём «Сохранить».

Создав все аккаунты, жмём на «применить изменения».
База создана.
Помните, пока не нажмёте «применить изменения» внесённые изменения не действительны и пользовательские папки не создаются.

Настройка служб (демонов, как их называют в среде *NIX)

Настройка SMB (Samba) позволяет обращаться к сетевым дискам на различных операционных системах по протоколу SMB/CIFS.
Службы - CIFS/SMB - ставим галочку на «включить»
Аутентификация – Локальный пользователь.
NetBIOS-имя – Имя сервера как оно будет видно в Сетевом Окружении Windows. К примеру Server
Рабочая группа – рабочая группа в которой будет значится сервер.
Описание – описание сервера.
Кодовая страница DOS - !! Внимание!! Ставим CP866
Кодовая страница Unix - !! Внимание!! Ставим UTF-8
Уровень журналирования – пока не трогаем
Локальный основной обозреватель сети – очень не простая настройка. Если у вас уже есть нормально и стабильно работающий локальный основной обозреватель сети, то ставим «Нет». Определяется просто. Все ли и ВСЕГДА видны машины в локальной сети. Если нет, то «локальный основной обозреватель сети» не один и в сети бардак! В этом случае можете поставить тут «Да». Может сильно помочь…. А может и не помоч
Сервер времени – тут как хотите.
Гостевая учетная запись – не трогаем
Размер буфера отправки – не трогаем
Размер буфера приема – не трогаем
Чтение/запись большими блоками – если в сети нет древних машин с 9* и NT4, то можно включить.
Использовать параметр 'sendfile' – оставляем.
Остальное тоже не трогаем.
Жмём «сохранить и перезапустить»
Видим сообщение «Изменения были применены успешно
Идём дальше.
Службы - CIFS/SMB - Общие ресурсы
крестик «добавить …»  (Тут мы вспоминаем данные созданных нами пользователей и заполняем соответственно)
Имя – имя ресурса как его будут видеть в Сетевом Окружении Windows. Вот тут уже можете писать хоть прописными, хоть строчными.
Комментарий – Комментарий кому принадлежит
Путь – путь к ресурсу. Жмём на кнопку «…» Попадаем в /mnt. Входим в /mnt/data/users/(созданная ранее папка пользователя).
Жмём «Ок».
Только чтение – ну это вам решать. Вдруг вы не хотите что бы пользователь мог писать в эту папку?
Просматриваемый – хитрый параметр. О его возможном использовании позже
Ну остальное пока оставляем.
Жмём «Добавить»
Создаём по образу остальные личные ресурсы пользователей.
!! Внимание!! В отличии от оболочки по созданию пользователей, эта НЕ МОЖЕТ сама создавать папки. Только использовать уже имеющиеся.
Создав все ресурсы, жмём «применить изменения». Не забываем! Иначе ничего не будет.

Создание ресурсов ДСП, Shadow и «файловой помойки».
Реализация ограничений на доступ к ресурсам пользователей.
Изменение владельца на некоторые папки.

В результате выше проведённых действий мы получили сетевые ресурсы пользователей с доступом к ним по личному логину/паролю.
Теперь нам нужно создать дополнительные ресурсы «shadow», «share» и «dsp», которые будут общими для всех сотрудников, но будут обладать разным уровнем доступа.
Службы - CIFS/SMB - Общие ресурсы
Создание ресурса «dsp»
крестик «добавить …» 
Имя – dsp
КомментарийDSP Data Folder
Путь – путь к ресурсу. Жмём на кнопку «…» Попадаем в /mnt. Входим в /mnt/data/dsp.
Жмём «Ок».
Жмём «Добавить»
Создание ресурса «share»
крестик «добавить …» 
Имяshare
КомментарийShare Folder
Путь – путь к ресурсу. Жмём на кнопку «…» Попадаем в /mnt. Входим в /mnt/data/share.
Жмём «Ок».
Жмём «Добавить»
Создание ресурса «shadow»
крестик «добавить …» 
Имя shadow
КомментарийShadow Folder
Путь – путь к ресурсу. Жмём на кнопку «…» Попадаем в /mnt. Входим в /mnt/data/share.
Просматриваемый – убираем галку. Таким образом этот ресурс будет существовать, функционировать, но не будет отображаться в сетевом окружении, что очень удобно.
Зайти на него можно будет прописав в строке файлового менеджера полный путь \\server\Shadow
Жмём «Ок».
Жмём «Добавить»
Жмём «применить изменения»

По умолчанию на этих ресурсах стоит ограничение «хозяин пишет и читает, другие только читают». Это не всегда нам подходит.
Смена прав на ресурсы

Меняем права доступа к ресурсам с целью добиться декларированной выше структуры файлового сервера.
А именно.
а. Все пользователи имеют полный доступ к личной папке. Для остальных пользователей личная папка означенного пользователя, недоступна.
б. Все пользователи имеют полный доступ к папке «share».файловая помойка» офиса)
в. Все пользователи имеют доступ на чтение к папке «dsp» и ограниченный круг на запись. (ресурс ДСП)
г. Все пользователи имеют полный доступ к папке «shadow». Папка скрыта.

Переходим в окно файлового менеджера
Дополнительно – Файловый менеджер
Папки пользователей
Идём в /mnt/data/users
Видим табличку вида файл – размер – тип – изменён – права доступа – действия
В колонке «права доступа» видим строчки типа «drwxr-xr-x».
По очереди кликаем мышкой на них и в появившемся окошке удираем все галочки кроме верхнего ряда «владелец».
Жмём «изменить».
Получаем «drwx------».

Общие папки
Идём в /mnt/data
Настраиваем  ресурс ДСП.
dsp - кликаем мышкой на drwxrwxr-x.
В появившемся окне убираем галочки с нижней строки «общий». Оставляем две галочки «r» и «x» убрав «w» в строке «группа». В строке «владелец» все три галочки должны стоять.
Жмём «изменить».
Получаем «drwxr-x---».
Настраиваем  ресурс share
share - кликаем мышкой на drwxrwxr-x.
В появившемся окне убираем галочки с нижней строки «общий», оставляем все галочки «r», «x» и «w» в строках «группа» и «владелец».
Жмём «изменить».
Получаем «drwxrwxrwx».

Настраиваем  ресурс shadow
shadow - кликаем мышкой на drwxrwxr-x.
В появившемся окне убираем галочки с нижней строки «общий», оставляем все галочки «r», «x» и «w» в строках «группа» и «владелец».
Жмём «изменить».
Получаем «drwxrwx---».

Смена владельцев.
Чуть выше мы сменили права на доступ, но этого мало.
Папки shadow,  share и dsp имеют владельца root, т.к. мы их создавали именно под этим пользователем.
Теперь нам необходимо сменить владельца этих папок для того, что бы наша структура «прав доступа» работала правильно.
К сожалению я не нашёл где и как в QuiXplorer это можно сделать.
Придётся делать это из командной строки.
!!!ВНИМАНИЕ!!! далее довольно опасная команда! Внимательно прописывайте путь (/mnt/data****). В противном случае можете угробить систему.
Гм. И вообще привыкайте. В *NIX угробить  систему можно практически любой консольной командой, если выполнить её не правильно.
Любой *NIX это иллюстрация поговорки «семь раз отмерь, один раз отрежь». Всегда нужно понимать что ты делаешь.

Дополнительно – Команда
В строке «Команда» вводим chown -R dspdata:staff /mnt/data/dsp  
Нажимаем «выполнить»
В строке «Команда» вводим chown -R dspdata:staff /mnt/data/share
Нажимаем «выполнить»
В строке «Команда» вводим chown -R dspdata:staff /mnt/data/shadow
Нажимаем «выполнить»
Для проверки сменился владелец или нет.
В строке «Команда» вводим lsl /mnt/data
Получаем рапорт в виде таблички
$ ls -l /mnt/data
total 16
drwxrwxr-x  2 root     operator  512 Apr 14 18:37 .snap
drwxr-x---  2 dspdata  staff     512 Apr 20 20:05 dsp
drwxrwxr-x  2 dspdata  staff     512 Apr 29 21:15 share
drwxr-xr-x  2 root     whell     512 Apr 14 21:26 users
drwxrwxr-x  2 dspdata  staff     512 Apr 29 21:15 shadow
Смотрим владельца и группу в третьей и четвёртой колонках. Если что то не так, пробуем опять.
Таким образом мы настроили доступ по CIFS/SMB для ресурсов нашего сервера.
(chown– команда смены владельца. R  - рекурсивно, т.е. включая все вложенные папки и файлы. dspdata:staffсоответственно пользовательруппа через двоеточие. /*** - путь откуда нужно  начинать работать в глубь.)


Обеспечиваем доступ к папке «share» непосредственно из папки пользователя
Удобно, практично, позволяет без проблем получиь доступ к «share» по FTP.
Сначала создаём в папках всех пользователей папку !-share.
Для этого  
Дополнительно – Файловый менеджер.
Здесь нам придётся снова залогинится.
Username: root
Password: ваш пароль на «admin»
Language: можете выбрать любой.
Логинимся и попадаем в корень «/».
Переходим: mnt/data/users/
Там по очереди заходим в нужные папки пользователей и создаём папки «!-share» 
В правом верхнем углу в выпадающем меню, выбираем «Directory / Каталог».
Рядом пишем «!-share»  (без кавычек)
Жмём «Create / Создать»
Переходим по очереди в папки других пользователей и так же создаём «!-share» .

Теперь создаём точки монтирования самой папки «share» во вновь созданные папки «!-share» .
Система – Дополнительно – Командные скрипты  
Нажимаем серый крестик
В строку «команда» вводим  mount_nullfs /mnt/data/share  mnt/data/users/***/!-share 
где *** - папка пользователя
В выпадающем меню «Тип» переключаем на «PostInit»
Нажимаем «Добавить».
Повторяем операцию меняя папку пользователя
Таким образом мы создаём точку монтирования папки «share» в корневых папках указанных пользователей и теперь они могут по FTP пользоваться папкой «share».
Если этого не сделать, то доступа к файловому обменнику «share» то FTP, не будет.
(Небольшое пояснение.
«софт линки», они же «мягкие ссылки», они же «symlink» в данном случае не годятся, т.к. в настройках FTP мы будем ставить «Использовать chroot() для всех, кроме root» запирая пользователей в каталоге. 
Так же нельзя использовать монтирование в fstab, т.к. FreeNAS просто не использует его. Это вот такая приколка от разработчиков)


Настройка FTP доступа.
Переходим к настройке доступа по FTP. Данный доступ будет осуществляться из любой точки Internet.
Службы – FTP
Ставим галочку «включить»
TCP-портпорт по которому будет осуществляться доступ. Оставляем как есть (21-й).
Количество клиентовкак хотите, для малого офиса 10 и хватит
Количество соединений с IP-адреса  не ставьте 1. Ставьте 2 или более. Но не слишком много. Я ставлю 2-3.
Максимум попыток входаставим 5 блондинко», это уже диагноз)
Таймаут - оставляем
Разрешать вход с учетной записью root никогда! Геморроя нам не нужно.
Только анонимные пользователиНам это не нужно. У нас же не анонимный паблик FTP.
Только локальные пользователи – Ставим галку.
Приветствие можно чтонибудь написать, можно нет. На работу не влияет.
Расширенные настройки
Создать маскухитрая настройка. Пока оставляем дефолт.
Маска каталогааналогично
FXPнам это не нужно. Не ставим. (кому это нужно, он об этом знает и знает зачем ему это нужно)
Возобновлениеставим галку.
Корневой каталог по умолчаниюставим галку.
Протокол идентификациине ставим.
Обратный поиск DNS, Маскарадный адрес, Номера портов в пассивном режимеэто всё не трогаем. Кто знает, тот сам знает.
Ограничение скорости локальных пользователейдумаем сами. Я редко ставлю. Но если пользователи не дисциплинированы, то нужно ставить.
SSL/TLSВ принципе это полезная и НУЖНАЯ вещь. Пока не ставим, но советую продумать это дело (почитайте в Internet).
Дополнительные параметрыВот тут широкое поле для деятельности.
Итак прежде всего пишем.
UseEncoding UTF-8 cp1251  # Обеспечение корректного отображения кириллицы как по FTP, так и по SMB
DenyFilter  \*.*/  # Параметр безопасности. Блокирует попытку «положить» сервер командами "ls */../*/../*/..." («хитрый» листинг каталогов)
Далее настраиваем ограничение доступа к ресурсу ДСП cо строго определенных IP. К примеру с удалённого офиса. Именно к папке «dsp».
Ко всем остальным (личным) папкам, доступ из любой точки internet.

<Directory /mnt/data/dsp/ >
<Limit ALL>
        Order allow,deny
       Allow from 192.168.100.0/24 # разрешение на доступ из вашей локальной сети. (обязательно) 
       Allow from 222.222.131.22 # разрешение на доступ с определенного IP (удалённый офис)
                     deny from all
                </Limit>
</Directory>

Жмём «сохранить и перезапустить».

Обеспечиваем регулярную чистку «файловой помойки»

            Как известно, общие ресурсы типа «файловая помойка» очень часто разрастаются, там скапливаются никому не нужные файлы, хозяева которых давно забыли об их существовании.
            Что бы предотвратить захламление ресурса Share  можно настроить регулярную очистку файлов и папок возраст которых будет превышать оговорённый.
            Затем вы можете оповестить сотрудников, что файлы в Share хранятся, к примеру 30 дней, а затем удаляются.
            Итак приступим.
    1. Создаём файл скрипта
      Дополнительно – Файловый менеджер.
Переходим в /mnt и создаём файл clean.sh
В правом верхнем углу в выпадающем меню, выбираем «File / Файл».
Рядом пишем «clean.sh»  (без кавычек)
Жмём «Create / Создать»
                        кликаем мышкой на drwxrwxr-x.
В появившемся окне убираем галочки со строк «общий» и «группа», ставим все галочки «r», «x» и «w» в строке «владелец».
Жмём «изменить».
Получаем «-rwx------». (последний «х» делает файл исполняемым)


    1. Приступаем к редактированию
      Дополнительно – Файловый редактор
Жмём на кнопочку в виде трёх точек «…»
Открывается всплывающее окошко.
В этом окне переходим в /mnt и кликаем по созданному файлу clean.sh
Жмём «Ок»
Возвращаемся в Файловый редактор и жмём «загрузить»
Пишем следующие строки:

#!/bin/sh

DIR=/mnt/data/share
find $DIR -mtime +30 -mindepth 1 –delete


Сее означает:
Первая строка – идентификатор языка скрипта
Вторая строка – переменная указывающая на папку которую нужно чистить
Третья строка – найти в пути все файлы старше 30 дней и удалить их.
Внимание!!! Во избежание сбоя в работе скрипта, НЕ КОПИРУЙТЕ «копипастом» текст в скрипт, а набирайте вручную.
Так называемые «не читаемые символы» у Windows и *NIX по разному читаются системой и при копипасте получите сбой в скрипте.  
Жмём «сохранить». Должно появится сообщение «Файл сохранен в /mnt/clean.sh»
    1. Прописываем сам запуск.
Система – Дополнительно – Cron
Нажимаем серый крестик
В строку «команда» вводим  /mnt/clean.sh
В выпадающем меню «Пользователь» ставим «root»
Описание – «clean share»
«Запланированное время» - Ставим:
Минуты – «0»
Часы – «0»
Дни, Месяцы, Дни недели – «Все»
Для проверки нажимаем «Выполнить сейчас». Должно появится сообщение «Задание Сron'а было выполнено успешно.»
Нажимаем «Добавить».
Теперь каждый день, в полночь (0 часов 0 минут), будет запускаться скрипт clean.sh


P.S.
В принципе сервер готов.
Можно ещё включить P2P обменник Torrent. Но об этом отдельно.
Кстати, как мудро было замечено одним из критиков статьи, под хранение данных нужно бы создать отдельный массив.
Об этом тоже отдельно.  
Почему ZFS или на чём собрать массив. 

Статья взята от сюда