NAS520 Can't activate FTP-Server
All Replies
-
You added a line to vsftpd_start.sh? How? That file is supposed to be read-only.0
-
Of course, you're right, I have tried so many things.
Actually I enabled the Tweak, then changed "pure-ftpd" by adding the lines:-
echo `date` " : Start of $0 " >>/i-data/2ce21ab4/Public/Mark.txt
chmod 666 /i-data/2ce21ab4/Public/Mark.txtat the start of the script.
Manually running vsftpd_start_sh generates the output, whereas enbling FTPD via the admin web I/F, generates nothing.
(I wanted to try something simple before I made the changes you detailed above, just to make sue that that script was actually being called - and it seems that it is not)
There is another copy of pure-ftpd in ram_bin. This appears to be the original Binary - How can this be changed to use the tweaks script version??
0 -
There is another copy of pure-ftpd in ram_bin. This appears to be the original Binary - How can this be changed to use the tweaks script version??
That's not how it works. There is some big file /firmware/mnt/sysdisk/sysdisk.img containing an ext2 filesystem, which is loopmounted on /ram_bin/. Then /ram_bin/usr/ is mounted on /usr/. So the binary in /ram_bin/usr/ is the same one as the binary in /usr/.
The Tweaks package mounts a (writable) script on /usr/local/sbin/pure-ftpd, to catch all calls to the binary. After the script has done it's job (passing some commandline arguments), if passes execution to the original binary in /ram_bin/usr/local/sbin/pure_ftpd.
So if you would hook this one, all filesystem existences of pure_ftpd are shadowed, and it's no longer possible to execute it.
According to grep the script /usr/local/sbin/vsftpd_start.sh is called from /usr/local/apache/web_framework/models/ftp_main_model.pyc. I used uncompyle6 to make that readable, to see if there are any obvious blocking conditions.
Not as far as I can see. It just reads some database, to generate the arguments file, and to see if the ftp service is enabled at all.
You can create a small python script ftp.py to see if your database is damaged:
<p>import ftp_main_model</p><p>info = ftp_main_model.get_ftp_info()</p><p>print info</p>
Execute it:
<p>PYTHONPATH=/usr/local/apache/web_framework/models/ /usr/bin/python ftp.py<br></p><p></p>
On my box the output is
<p>{'anonymous_dl_speed': '0', 'cmd_port': '21', 'normal_dl_speed': '0', 'client_charset': 'SHIFT_JIS', 'conn_limit': '20', 'active': 'true', 'idle_timeout': '15', 'normal_up_speed': '0', 'with_encrypt': 'false', 'data_port_max': '65535', 'data_port_min': '1024', 'allow_anonymous': 'n', 'data_port_range_set': 'auto', 'anonymous_up_speed': '0'}</p><p></p>
Here the 'active': 'true' defines that the service should be active. It's actually the 'enabled' flag.
You can also try to start it with 'ftp_main_model.ftp_srv_start()'. I attached the decompyled script for reference.
0 -
Running the python script gets the same structure as your box, but all values say "None"
{'anonymous_dl_speed': None, 'cmd_port': None, 'normal_dl_speed': None, 'client_charset': None, 'conn_limit': None, 'active': None, 'idle_timeout': None, 'normal_up_speed': None, 'with_encrypt': None, 'data_port_max': None, 'data_port_min': None, 'allow_anonymous': None, 'data_port_range_set': None, 'anonymous_up_speed': None}
This is getting a bit beyond my experiences. I am used to normal UNIX systems, but not this type of box.
0 -
Running the python script gets the same structure as your box, but all values say "None"In that case it's clear. The database is damaged. I did some research, and I think the database is located in /etc/zyxel/py_conf. (A flash partition containing user settings is mounted on /etc/zyxel/, so the search was rather limited).
That is a flat textfile, on my box it contains<div>[system]</div><div> hostname = NAS540</div><div> [[fw_upgrade]]</div><div> auto_check = false</div><div> [[service]]</div><div> [[[http]]]</div><div> port = 80</div><div> additional_port = -1</div><div> virtual_port = -1</div><div><snip></div><div> [[[ftp]]]</div><div> active = true</div><div> with_encrypt = false</div><div> conn_limit = 20</div><div> idle_timeout = 15</div><div> cmd_port = 21</div><div> allow_anonymous = n</div><div> data_port_range_set = auto</div><div> data_port_min = 1024</div><div> data_port_max = 65535</div><div> normal_up_speed = 0</div><div> normal_dl_speed = 0</div><div> anonymous_up_speed = 0</div><div> anonymous_dl_speed = 0</div><div> srv_charset = utf-8</div><div> client_charset = SHIFT_JIS</div><div> [[[printer]]]</div><div><snip></div><br>
So have a look if your file has the same structure.
A factory reset should solve this, as it erases the whole flash partition. So this file should be replaced.This is getting a bit beyond my experiences. I am used to normal UNIX systems, but not this type of box.This has nothing to do with Unix, or Linux, or whatever. It's just the way ZyXEL decided to write their webinterface backend. Could also have been a Windows server.0 -
Below is a snippet from my py_conf file.
The FTP bits look Ok, but Active is False. This is because whenever I enable it, re-sets itself.
[system]
hostname = ""
domainname = ""
description = ""
[[console]]
name = ""
speed = ""
[[domain]]
name = ""
timeout = ""
retry = ""<<SNIP>>
[[service]]
[[[http]]]
port = 80
[[[https]]]
active = false
force_https = false
port = 443
[[[ftp]]]
[[[[ftp_allow_user]]]]
[[[[ftp_deny_user]]]]
[[[[ftp_trust_addr]]]]
name = ftp
port = 21
active = no
connlimit = 10
timeout = 15
anonymous = no
ZldFtpFileManage = yes
cert = default
orig_cert = ""
tls = no
auth = default
cli_charset = utf-8
srv_charset = utf-8
firstport = 1024
lastport = 65535
pasv = no
normal_upload_bandwidth = 0
normal_download_bandwidth = 0
anonymous_upload_bandwidth = 0
anonymous_download_bandwidth = 0
<<SNIP>>How do I carry out a factory reset? without losing all my settings? - Is that even possible?
BTW - I appreciate your help with this, Looks like you've spent a lot of time on this for me
0 -
[[[ftp]]]
[[[[ftp_allow_user]]]]
[[[[ftp_deny_user]]]]
[[[[ftp_trust_addr]]]]
name = ftp
port = 21
active = noReally? In that case the 'active' is on the wrong level, it's inside [[[[ftp_trust_addr]]]]. Looking at the file each section is closed by a section of the same level, or a lower level. (Lower as in nearer to the root).
So you can try to put the 3 '4-deep' sections at the end of the [[[ftp]]] section, and run the ftp_info script again, to see if the 'None's are gone.
BTW, you have a lot more ftp settings than I do. Isn't that strange?
How do I carry out a factory reset? without losing all my settings? - Is that even possible?No, that's not possible. A factory reset is wiping all user settings. But not the user data. You can perform a factory reset in the Control Panel->Configuration Backup menu.I appreciate your help with thisYou're welcome.0 -
Moving those lines makes no difference. The script still shows "None" for everything. Attempting to Enable FTP via the web I/F, re-creates the FTP section in this py_conf and puts the 3 lines back.
I will do some more playing with this and if all else fails (which I suspect it will), then I will do a reset.
Will post my end result and method.
0 -
Just one more question on this....
My Nas has 2 4Gb disks installed as RAID 1 - mirrored (lets call them A and . My thoughts are....
1) Remove disk B so that the NAS will still function with disk A (In degraded mode).
2) Factory Reset as suggested
3) See if that has fixed the problem.If all was fixed, I could then re-install the disk B and recover the Raid volumes. - Job done
My real question is.....
If The reset made no difference, Could simply swap disk A (the newly updated one) with disk B (The original unchanged one) and bring the NAS up. ?? This ought to leave me where I first started, although degraded.Then I could add back the removed disk A, and the NAS would re-build this to mirror disk B
Does this sound like it will work??
If the HDD's themselves contain all the config information, then this should be Ok, but I am just concerned that something may be updated in the flash memory relating to the disk config etc which would prevent this from working.
I do have backups to another NAS, but would like to avoid the headache of using that option.
What are your thoughts?
0 -
The script /usr/local/btn/reset_and_reboot.sh is called when you perform a factory reset by the reset button, and it's content is this:
What are your thoughts?
#!/bin/sh
if [ -e /etc/zyxel/pkg_conf/status ]; then
cp -a /etc/zyxel/pkg_conf/status /i-data/.system/zy-pkgs/status.packageinstinfo
sync
sleep 1
fi
rm -rf /i-data/.media/twonkymedia
rm -rf /etc/zyxel/conf
rm -rf /etc/zyxel/webdav
rm -rf /etc/zyxel/storage/*
umount /etc/zyxel
ubirmvol /dev/ubi3 -N ubi_config
ubidetach -m 3
rm -rf /etc/zyxel/
#remove desktop config by hazel
[ -e "/i-data/.system/guicfg" ] && rm -rf /i-data/.system/guicfg
reboot
So what does it do? It erases the directories twonkymedia and guicfg on the primary ('system') data partition, and it erases the content of the ubi3 flash partition. By fiddling with the disks before performing a factory reset you can save your twonkymedia and guicfg partition. The first one contains (I think) a database of your media files, the 2nd one the configuration of your (web)gui desktop. Why bother?0
Categories
- All Categories
- 415 Beta Program
- 2.4K Nebula
- 151 Nebula Ideas
- 98 Nebula Status and Incidents
- 5.7K Security
- 277 USG FLEX H Series
- 277 Security Ideas
- 1.4K Switch
- 74 Switch Ideas
- 1.1K Wireless
- 42 Wireless Ideas
- 6.4K Consumer Product
- 250 Service & License
- 395 News and Release
- 85 Security Advisories
- 29 Education Center
- 10 [Campaign] Zyxel Network Detective
- 3.6K FAQ
- 34 Documents
- 34 Nebula Monthly Express
- 85 About Community
- 75 Security Highlight