Informations système:
Linux ravi-Inspiron-N5010 3.13.0-46-generic #79-Ubuntu SMP Tue Mar 10
20:08:14 UTC 2015 i686 i686 i686 GNU/Linux
Utiliser Ubuntu 14.04.2 LTS.
Je me bats pour exécuter tftp localhost.
A tenté:
root@ravi-Inspiron-N5010:/home/ravi/Desktop# service tftpd-hpa restart
tftpd-hpa stop/waiting
tftpd-hpa start/running
root@ravi-Inspiron-N5010:/home/ravi/Desktop# service tftpd-hpa status
tftpd-hpa start/running
Maintenant je reçois une erreur:
root@ravi-Inspiron-N5010:/home/ravi/Desktop# tftp 127.0.0.1
tftp> put test
Error code 2: Access violation
tftp>
la permission du fichier que j'essaye de mettre est:
root@ravi-Inspiron-N5010:/home/ravi/Desktop# ls -ld test
-rwxrwxrwx 1 ravi ravi 0 Mar 21 20:09 test
Autorisation du dossier/tftpboot:
root@ravi-Inspiron-N5010:/# ls -ld tftpboot/
drwxrwxrwx 2 nobody root 4096 Mar 15 15:34 tftpboot/
Informations complémentaires
root@ravi-Inspiron-N5010:/home/ravi/Desktop# nano /etc/xinetd.d/tftp
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot -s
disable = no
}
S'il te plaît, aide-moi à résoudre ce problème.
Le fichier que vous souhaitez placer via tftp doit exister dans le répertoire de destination et disposer des autorisations lui permettant d'être écrasé. Pour votre instance, test
doit exister dans /tftpboot
.
Vous pouvez voir la raison dans la section BUGS de la page de manuel de tftp.
Je ne parviens pas à trouver comment mettre un nouveau fichier via tftp, mais je ne sais toujours pas comment.
Cochez syslog
et vous verrez que:
tftpd: serving file from /srv/tftp
En gros, il y a un bogue et dans votre cas, vous devrez déplacer tous les fichiers du dossier /tftpboot
vers le /srv/tftp
(créer le dossier /srv/tftp
s'il n'existe pas) et vous assurer que vous accordez les autorisations 777, ainsi que tous les fichiers qu'il contient, redémarrez xinetd
et le ça marche!
Comme le mentionne leondgarse, vous ne pouvez pas télécharger de nouveaux fichiers directement avec vos paramètres. Mais vous pouvez ajouter "-c" à server_args, comme ceci:
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = -c -s /tftpboot
disable = no
}
Pour plus de détails, vous pouvez voir la page de manuel de "in.tftpd":
--create, -c
Allow new files to be created. By default, tftpd will only allow upload of files that already exist. Files are created with default permissions allow‐
ing anyone to read or write them, unless the --permissive or --umask options are specified.
Cela peut être dû au fait que 14.04 a un paramètre de serveur tftp
dans /etc/inetd.conf
:
#BOOT: TFTP service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers."
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp
vous pouvez commenter cette ligne et réessayer.
J'ai eu ça d'ici: http://www.beer.org/blog/tftpd-and-xinetd-on-ubuntu.html
Dépannage du serveur TFTPD sur Ubuntu 14.0.4 par Dayanand Ambawade
Étape 1: Éditez /etc/inetd.conf
tftp dgram udp attendre personne/usr/sbin/tcpd /usr/sbin/in.tftpd/srv/tftpboot
Étape 2: Écriture du script pour tftpd
Sudo nano /etc/xinetd.d/tftp
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /srv/tftpboot -s
disable = no
}
Étape 3: Créer un répertoire et définir les autorisations
Sudo mkdir /srv/tftpboot
Sudo echo "Test TFTP Server" > /srv/tftpboot/test.txt
Sudo chmod 777 -R /srv/tftpboot
Sudo chown -R nobody.root /srv/tftpboot
Étape 4: Démarrer le service
Sudo service xinetd restart
Sudo service inetutils-inetd restart
Étape 5: serveur de test
echo "get test.txt" | tftp 127.0.0.1
cat test.txt
Test TFTP Server
Espérons que cela résoudra le problème. Cordialement
Je ne sais pas si cela ressemble à la conception de TFTP, mais lorsqu’il est mis, cela ne vous permet pas de créer un fichier.
Solution:
Créez le fichier avant et donnez 777 droits. Exécutez à nouveau le transfert et cela devrait fonctionner.
S'il vous plaît vérifier les bits de mode de fichiers.
Dans mon cas, le répertoire racine de tftp est /opt/tftpboot/
À l'aide de la commande ls -l
, je pouvais voir que le mode de fichier était 600. Par conséquent, lorsque j'essaie d'accéder à tftp pour obtenir ce fichier avec anonyme, il signale une violation d'accès.
Cela peut être la cause de cette erreur. Mais il peut y avoir une autre raison pour cela.