Hur man fixar root-access på Buffalo LS220D
Testad upp till firmware 1.78 (18 januari 2022)
En del av Buffalo LS220 – BAMP – Buffalo Apache MySQL PHP
Om acp_commander vägrar fungera – stäng temporärt av brandväggen på datorn som används att patcha med:
Starting authentication procedure... Sending Discover packet... A SocketTimeoutException usually indicates bad firewall settings. Check especially for *UDP* port 22936 and make sure that the connection to your LS is working. ERROR: Exception: SocketTimeoutException (Receive timed out) [ACP Send/Receive (Packet:8020 = ACP_Discover)]
Från ny till root-access
Starta och ställ in lösenord för ‘admin’
Uppdatera firmware om det finns någon ny
Aktivera default-sharen “share” (‘advanced’ från startsidan, sedan ‘folder setup’, read/write och stäng av ‘folder restrictions’ att börja med)
Du behöver fungerande java installerat på datorn som patchningen ska ske från (java-kommandot i path eller inte, bara du vet var det är).
Nytt för i år är att nas-central.org är trasigt. Har du gjort det här tidigare, så kanske du har filerna nedladdade och sparade nånstans. Annars kan du ta mina sparade filer…
https://tech.webit.nu/Buffalo/
ACP_commander är det javaprogram som används för patchningen, finns att hämta på acp_commander.jar
Från datorn att patcha ifrån:
java -jar acp_commander.jar -t 192.168.0.10 -ip 192.168.0.10 -pw Password -c "(echo newrootpass;echo newrootpass)|passwd" java -jar acp_commander.jar -t 192.168.0.10 -o -addons java -jar acp_commander.jar -t 192.168.0.10 -ip 192.168.0.10 -pw Password -c "sed -i 's/SFTP=0/SFTP=1/g' /etc/nas_feature" java -jar acp_commander.jar -t 192.168.0.10 -ip 192.168.0.10 -pw Password -c "sed -i 's/#PermitRootLogin/PermitRootLogin/g' /etc/sshd_config" java -jar acp_commander.jar -t 192.168.0.10 -ip 192.168.0.10 -pw Password -c "/etc/init.d/sshd.sh restart"
Om det av någon anledning efter detta inte fungerar att logga in via SSH, kolla att du i kommandona ovan ersatt “Password” med ditt admin-lösenord, “newrootpass” med det lösenord du vill använda för root användaren och IP-adressen 192.168.0.10 med IP till din LS220.
Skulle det ändå inte fungera, ladda ner addons.tar, lägg filen i samma låda som acp_commander ligger i. Kör sedan alla kommandona på nytt.
Behålla root-access efter omstart
Detta görs inloggad som ‘root’ på Buffalon. Medföljande texteditor är ‘vi’.
Eftersom Buffalons operativsystem är så trasigt som det är, så förstör den inställningarna vid omstart, eller om man ändrar i konfigurationen via web-gui, eller om man kopplar in en USB-disk eller ett USB-minne i den.
Lösningen är att köra ett script som lagar de inställningar BuffaloOS har sönder av kända och okända anledningar. Skapa files /mnt/array1/buffalo_fix.sh med följande innehåll:
#!/bin/sh root_entry='ROOT-LINE-FROM-ETC-SHADOW' # make sure root password has not changed if ! cat /etc/shadow | grep $root_entry > /dev/null 2>&1; then sed -i 's|root:.*::::::|'"$root_entry"'|' /etc/shadow fi # reset SUPPORT_SFTP if need to if ! cat /etc/nas_feature | grep SFTP=1 > /dev/null 2>&1; then sed -i 's/SFTP=0/SFTP=1/g' /etc/nas_feature fi # Restart sshd if broken (which it will be after mounting/unmounting USB, or changning anything in web admin exec 6<>/dev/tcp/127.0.0.1/22 2>&1>/dev/null || /etc/init.d/sshd.sh restart
Glöm inte att ersätta ‘ROOT-LINE-FROM-ETC-SHADOW’ med root-raden i /etc/shadow och sedan köra chmod 700 på scriptet.
Jag har grävt fram det ställe jag tyckte det passade minst dåligt att köra scriptet ifrån:
/etc/init.d/syslog_user_setup.sh som körs var 5:e minut av /etc/cron/cron.d/logrotate via cron.
Lägg in som rad 2 i /etc/init.d/syslog_user_setup.sh (alltså på den tomma raden, gör en ny tom under om du vill):
/mnt/array1/buffalo_fix.sh
Början av filen ska efter modifiering se ut så här:
#!/bin/sh /mnt/array1/buffalo_fix.sh . /etc/melco/info . /etc/nas_feature . /usr/local/lib/libsys TARGET_LOGS="linkstation.log file.smb xferlog" LOG_FOLDER_NAME="system_log" LOG_FOLDER=${syslog_user_folder}/${LOG_FOLDER_NAME}
Om du inte missat nånting nu, så ska du kunna testa att scriptet gör det det ska genom att ändra lösenord för ‘root’.
Kolla att klockan inte är för nära en jämn 5-minut först, så du får tid att testa.
Då du ändrat lösenordet, logga in som ‘root’ med det nya lösenordet i ett annat terminalfönster.
Vänta tills 5-minuten inträffat och gör ett till försök med det tidigare satta lösenordet.
Från uppdaterad till root-access
Efter en uppdatering slutar inloggningen via SSH att fungera. Du kommer också förlora eventuella filer sparade i /root, så låt bli att göra det. Saker du är rädd om ska alltid läggas på lämpligt ställe (någon share) under /mnt/array1.
Vill du ändå riskera inställningar och ev förlorad root-access så görs det fortfarande (aug 2023) nya versioner av firmware att ladda ner:
https://www.buffalotech.com/support/downloads/linkstation-200-series
Från datorn att patcha ifrån:
java -jar acp_commander.jar -t 192.168.0.10 -ip 192.168.0.10 -pw Password -c "(echo newrootpass;echo newrootpass)|passwd" java -jar acp_commander.jar -t 192.168.0.10 -ip 192.168.0.10 -pw Password -c "sed -i 's/SFTP=0/SFTP=1/g' /etc/nas_feature" java -jar acp_commander.jar -t 192.168.0.10 -ip 192.168.0.10 -pw Password -c "sed -i 's/#PermitRootLogin/PermitRootLogin/g' /etc/sshd_config" java -jar acp_commander.jar -t 192.168.0.10 -ip 192.168.0.10 -pw Password -c "/etc/init.d/sshd.sh restart"
(dvs. allt behöver göras om utom raden med ‘-addons’)
Efter det här ska det gå logga in som ‘root’ för att göra ändringen i /etc/init.d/syslog_user_setup.sh
Som tidigare, lägg bara till ‘/mnt/array1/buffalo_fix.sh’ på den tomma rad 2 i filen, så ska det inte bli något längre avbrott på åtkomsten än 5 minuter.
Om det inte fungerar (connection refused)
Skulle det inte fungera att SSH:a in efter att du följt guiden, prova då köra ‘sshd.sh restart’ en gång till.
Jag har några gånger fått det här svaret från acp_commander:
Using random connID value = CEDA5122F200 Using target: BUFFALO-1/192.168.0.241 Starting authentication procedure... Sending Discover packet... Found: BUFFALO-1 (/192.168.0.241) LS220D(SANJO) (ID=004813) mac: 74:03:BD:0C:80:C7 Firmware= 1.670 Key=37BA1BC0 Trying to authenticate EnOneCmd... ACP_STATE_OK Trying to authenticate with admin password... ACP_STATE_OK A SocketTimeoutException usually indicates bad firewall settings. Check especially for *UDP* port 22936 and make sure that the connection to your LS is working. ERROR: Exception: SocketTimeoutException (Receive timed out) [ACP Send/Receive (Packet:8A10 = ACP_CMD)]
‘sshd.sh restart’ ska, om det fungerar ge ett svar liknande det här:
Using random connID value = B0EC8F0D4B6D Using target: BUFFALO-1/192.168.0.241 Starting authentication procedure... Sending Discover packet... Found: BUFFALO-1 (/192.168.0.241) LS220D(SANJO) (ID=004813) mac: 74:03:BD:0C:80:C7 Firmware= 1.670 Key=747CA520 Trying to authenticate EnOneCmd... ACP_STATE_OK Trying to authenticate with admin password... ACP_STATE_OK >/etc/init.d/sshd.sh restart load_info ItemValue = off LoadConfFileStringEx:key=[ad_dns] not found in /etc/melco/info. LoadConfFileOnOffEx:key=[info_visible] not found in /etc/melco/info. LoadConfFileOnOffEx:key=[recycle_admin] not found in /etc/melco/info. file:/etc/sftponly_config userinfo finished groupname guest groupname admin groupname hdusers file:/etc/pam.d/sshd Changeing IP: ACP_STATE_PASSWORD_ERROR Please note, that the current support for the change of the IP is currently very rudimentary. The IP has been set to the given, fixed IP, however DNS and gateway have not been set. Use the WebGUI to make appropriate settings.
Jag har vid den senaste uppdateringen av alla mina LS220 upptäct att “sshd restart” fungerar först på 3e försöket.
Hej!
Tack för det här!! Har du eller någon annan lyckats få igång NFS på en LS220?