{"id":96707,"date":"2025-02-09T13:09:43","date_gmt":"2025-02-09T09:39:43","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/%db%8c%da%a9-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa-%db%8c%da%a9-%da%a9%d9%84%db%8c%da%a9-%d8%a8%d8%b1%d8%a7%db%8c-%d8%aa%d9%86%d8%b8%db%8c%d9%85-ftp-%d8%b4%d8%ae%d8%b5%db%8c-%d8%b1%d9%88%db%8c\/"},"modified":"2025-02-09T13:09:43","modified_gmt":"2025-02-09T09:39:43","slug":"%db%8c%da%a9-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa-%db%8c%da%a9-%da%a9%d9%84%db%8c%da%a9-%d8%a8%d8%b1%d8%a7%db%8c-%d8%aa%d9%86%d8%b8%db%8c%d9%85-ftp-%d8%b4%d8%ae%d8%b5%db%8c-%d8%b1%d9%88%db%8c","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/%db%8c%da%a9-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa-%db%8c%da%a9-%da%a9%d9%84%db%8c%da%a9-%d8%a8%d8%b1%d8%a7%db%8c-%d8%aa%d9%86%d8%b8%db%8c%d9%85-ftp-%d8%b4%d8%ae%d8%b5%db%8c-%d8%b1%d9%88%db%8c\/","title":{"rendered":"\u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u06cc\u06a9 \u06a9\u0644\u06cc\u06a9 \u0628\u0631\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645 FTP \u0634\u062e\u0635\u06cc \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0627\u0628\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633"},"content":{"rendered":"<div data-article-id=\"2265582\" id=\"article-body\">\n<p>\u067e\u0633 \u0627\u0632 \u062a\u062d\u0642\u06cc\u0642 \u060c \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u06a9\u0647 \u0628\u06cc\u0634\u062a\u0631 \u0627\u0641\u0631\u0627\u062f \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc Linux FTP \u0631\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u0633\u0627\u062f\u0647 \u067e\u06cc\u062f\u0627 \u0645\u06cc \u06a9\u0646\u0646\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u060c \u0628\u0631 \u0627\u0633\u0627\u0633 \u062a\u062c\u0631\u0628\u0647 \u0634\u062e\u0635\u06cc \u0645\u0646 \u060c \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0622\u0633\u0627\u0646\u06cc \u0646\u0628\u0648\u062f. \u0628\u0631\u0627\u06cc \u067e\u0631\u062f\u0627\u062e\u062a\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u060c \u0645\u0646 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u06cc\u06a9 \u06a9\u0644\u06cc\u06a9 \u0628\u0627 \u0645\u0646\u0628\u0639 \u0628\u0627\u0632 \u0648 \u06a9\u0627\u0645\u0644\u0627\u064b \u0645\u0633\u062a\u0646\u062f \u0628\u0627 \u0646\u0638\u0631\u0627\u062a \u062c\u0627\u0645\u0639 \u0628\u0631\u0627\u06cc \u062a\u0633\u0647\u06cc\u0644 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0648 \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0622\u06cc\u0646\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0627\u0645.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/%db%8c%da%a9-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa-%db%8c%da%a9-%da%a9%d9%84%db%8c%da%a9-%d8%a8%d8%b1%d8%a7%db%8c-%d8%aa%d9%86%d8%b8%db%8c%d9%85-ftp-%d8%b4%d8%ae%d8%b5%db%8c-%d8%b1%d9%88%db%8c\/#%D8%A7%D9%82%D8%AF%D8%A7%D9%85%D8%A7%D8%AA_%D8%A7%D9%85%D9%86%DB%8C%D8%AA%DB%8C\" >\u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/%db%8c%da%a9-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa-%db%8c%da%a9-%da%a9%d9%84%db%8c%da%a9-%d8%a8%d8%b1%d8%a7%db%8c-%d8%aa%d9%86%d8%b8%db%8c%d9%85-ftp-%d8%b4%d8%ae%d8%b5%db%8c-%d8%b1%d9%88%db%8c\/#%D8%A8%D8%A7%D8%B1%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C_%D9%88_%D8%A8%D8%A7%D8%B1%DA%AF%DB%8C%D8%B1%DB%8C_SCP\" >\u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0648 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc SCP<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/%db%8c%da%a9-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa-%db%8c%da%a9-%da%a9%d9%84%db%8c%da%a9-%d8%a8%d8%b1%d8%a7%db%8c-%d8%aa%d9%86%d8%b8%db%8c%d9%85-ftp-%d8%b4%d8%ae%d8%b5%db%8c-%d8%b1%d9%88%db%8c\/#%D8%B4%D8%B1%D9%88%D8%B9\" >\u0634\u0631\u0648\u0639<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/%db%8c%da%a9-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa-%db%8c%da%a9-%da%a9%d9%84%db%8c%da%a9-%d8%a8%d8%b1%d8%a7%db%8c-%d8%aa%d9%86%d8%b8%db%8c%d9%85-ftp-%d8%b4%d8%ae%d8%b5%db%8c-%d8%b1%d9%88%db%8c\/#%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%A8%DB%8C%D8%B4%D8%AA%D8%B1\" >\u0633\u0641\u0627\u0631\u0634\u06cc \u0633\u0627\u0632\u06cc \u0628\u06cc\u0634\u062a\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/%db%8c%da%a9-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa-%db%8c%da%a9-%da%a9%d9%84%db%8c%da%a9-%d8%a8%d8%b1%d8%a7%db%8c-%d8%aa%d9%86%d8%b8%db%8c%d9%85-ftp-%d8%b4%d8%ae%d8%b5%db%8c-%d8%b1%d9%88%db%8c\/#%D8%B1%D9%85%D8%B2_%D9%85%D9%86%D8%A8%D8%B9\" >\u0631\u0645\u0632 \u0645\u0646\u0628\u0639<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D9%82%D8%AF%D8%A7%D9%85%D8%A7%D8%AA_%D8%A7%D9%85%D9%86%DB%8C%D8%AA%DB%8C\"><\/span>\n<p>  \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\n<strong>\u0645\u062d\u062f\u0648\u062f\u06cc\u062a IP<\/strong>: \u0627\u06af\u0631\u0686\u0647 \u062d\u0645\u0644\u0627\u062a \u0628\u06cc \u0631\u062d\u0645\u0627\u0646\u0647 FTP \u0627\u0632 \u062a\u0644\u0627\u0634 \u0647\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 SSH \u06a9\u0645\u062a\u0631 \u0627\u0633\u062a \u060c \u0627\u0645\u0627 \u0647\u0646\u0648\u0632 \u0647\u0645 \u0645\u062d\u062a\u0627\u0637\u0627\u0646\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 IP \u0639\u0645\u0648\u0645\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0628\u06cc\u0634\u062a\u0631 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc<\/strong>: \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0628\u0647 \u0641\u0647\u0631\u0633\u062a \u0645\u0634\u062a\u0631\u06a9 \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u062f\u0633\u062a\u0631\u0633\u06cc \u0622\u0646\u0647\u0627 \u0628\u0647 \u0633\u0627\u06cc\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0647\u0627 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0646\u06cc\u062f \u060c \u0628\u0627 \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0648 \u0646\u0648\u0634\u062a\u0646.<\/li>\n<li>\n<strong>\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0633\u0641\u0627\u0631\u0634\u06cc<\/strong>: \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0634\u06cc\u0648\u0647 \u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0627\u0631\u0628\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\n<strong>\u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc IP<\/strong>: IP \u0645\u0634\u062a\u0631\u06cc \u0627\u06a9\u0646\u0648\u0646 \u0627\u0632 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0645\u062d\u0644\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc \u0634\u0648\u062f \u0648 \u062e\u0637\u0631 \u0633\u0631\u062f\u0631\u06af\u0645\u06cc IP \u0631\u0627 \u0627\u0632 \u0646\u0638\u0627\u0631\u062a \u067e\u0648\u0631\u062a SSH \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc \u0628\u0631\u062f.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%D8%A7%D8%B1%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C_%D9%88_%D8%A8%D8%A7%D8%B1%DA%AF%DB%8C%D8%B1%DB%8C_SCP\"><\/span>\n<p>  \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0648 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc SCP<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 SCP \u0628\u0631\u0627\u06cc \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0648 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a \u060c \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0627\u0645\u0639 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0627\u06cc\u062f\u0647 \u0622\u0644 \u0646\u06cc\u0633\u062a. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646 \u060c \u0645\u0628\u062a\u062f\u06cc\u0627\u0646 \u062f\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0627 \u067e\u0627\u0646\u0644 \u0647\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0645\u0627\u0646\u0646\u062f Aapanel \u06cc\u0627 Zfile \u0622\u0634\u0646\u0627 \u0646\u0628\u0627\u0634\u0646\u062f. \u0647\u062f\u0641 \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u06cc\u06a9 \u06a9\u0644\u06cc\u06a9 \u060c \u06a9\u0645\u06a9 \u0628\u0647 \u062a\u0627\u0632\u0647 \u0648\u0627\u0631\u062f\u0627\u0646 \u0627\u0632 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0645\u0634\u06a9\u0644\u0627\u062a \u0645\u0634\u062a\u0631\u06a9 \u0627\u0633\u062a.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B4%D8%B1%D9%88%D8%B9\"><\/span>\n<p>  \u0634\u0631\u0648\u0639<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u062f\u0631\u06a9 \u0646\u0642\u0634\u0647 \u0628\u0631\u062f\u0627\u0631\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0645\u062c\u0627\u0632\u06cc \u060c \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a FTP \u06cc\u0627 \u0627\u0635\u0648\u0644 \u0645\u0627\u0698\u0648\u0644 PAM \u0646\u06cc\u0633\u062a. \u0641\u0642\u0637 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645 FTP \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">sudo <\/span>bash <span class=\"nt\">-c<\/span> <span class=\"s2\">\"<\/span><span class=\"si\">$(<\/span>curl <span class=\"nt\">-fL<\/span> https:\/\/ghfast.top\/https:\/\/raw.githubusercontent.com\/Excalibra\/scripts\/refs\/heads\/main\/d-shell\/lite_vsftpd.sh<span class=\"si\">)<\/span><span class=\"s2\">\"<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0633\u0631\u0627\u0646\u062c\u0627\u0645 \u060c \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u067e\u0648\u0631\u062a 21000 \u062f\u0631 \u06af\u0631\u0648\u0647 \u0627\u0645\u0646\u06cc\u062a\u06cc \u0633\u0631\u0648\u0631 Alibaba Cloud Server \u06cc\u0627 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 Tencent Cloud \u0628\u0627\u0632 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0628\u0635\u0631\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n<p><strong>\u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0627\u0645\u0646\u06cc\u062a\u06cc \u0627\u0628\u0631<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxl03e9dr1sgdzkbo2ptu.png\" alt=\"\u0634\u0631\u062d \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"383\" height=\"422\" title=\"\"><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%A8%DB%8C%D8%B4%D8%AA%D8%B1\"><\/span>\n<p>  \u0633\u0641\u0627\u0631\u0634\u06cc \u0633\u0627\u0632\u06cc \u0628\u06cc\u0634\u062a\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0627\u06cc \u06a9\u0633\u0627\u0646\u06cc \u06a9\u0647 \u0639\u0644\u0627\u0642\u0647 \u0645\u0646\u062f \u0628\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u0633\u0627\u0632\u06cc \u0639\u0645\u06cc\u0642 \u062a\u0631 \u0648 \u062a\u062d\u0642\u06cc\u0642 \u0647\u0633\u062a\u0646\u062f \u060c \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u067e\u0631\u0648\u0646\u062f\u0647 \u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n<ul>\n<li>\u0641\u0647\u0631\u0633\u062a \u0645\u0634\u062a\u0631\u06a9: <code>\/var\/ftp\/share<\/code>\n<\/li>\n<li>\u067e\u0631\u0648\u0646\u062f\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc: <code>\/etc\/security\/access.conf<\/code>\n<\/li>\n<li>\u067e\u0631\u0648\u0646\u062f\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc FTP: <code>\/etc\/vsftpd\/vsftpd.conf<\/code>\n<\/li>\n<li>\u0641\u0627\u06cc\u0644 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u0627\u0698\u0648\u0644 FTP: <code>\/etc\/pam.d\/vsftpd<\/code>\n<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B1%D9%85%D8%B2_%D9%85%D9%86%D8%A8%D8%B9\"><\/span>\n<p>  \u0631\u0645\u0632 \u0645\u0646\u0628\u0639<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight powershell\"><code><span class=\"c\">## For future use, consider this tool for configuring web-based cloud storage sharing: [Zfile on GitHub](https:\/\/github.com\/zfile-dev\/zfile)<\/span><span class=\"w\">\n\n<\/span><span class=\"c\">#********* Cloud Documentation Reminder ***************************<\/span><span class=\"w\">\n<\/span><span class=\"c\">#<\/span><span class=\"w\">\n<\/span><span class=\"c\"># FTP can connect and transfer data with client machines in both active and passive modes.<\/span><span class=\"w\">\n<\/span><span class=\"c\"># Due to firewall settings on most client machines and the inability to obtain real IPs, it is recommended to set up the FTP service in passive mode.<\/span><span class=\"w\">\n<\/span><span class=\"c\"># The following modifications are for setting up passive mode. If you prefer active mode, please refer to the guide for setting up FTP active mode.<\/span><span class=\"w\">\n<\/span><span class=\"c\">#<\/span><span class=\"w\">\n<\/span><span class=\"c\"># In simple terms, the difference between active and passive modes is:<\/span><span class=\"w\">\n<\/span><span class=\"c\"># - **Active Mode**: The server connects to the client's port for data transfer (client opens the data port).<\/span><span class=\"w\">\n<\/span><span class=\"c\"># - **Passive Mode**: The client connects to the server's port for data transfer (server opens the data port).<\/span><span class=\"w\">\n<\/span><span class=\"c\">#****************************************************<\/span><span class=\"w\">\n\n\n<\/span><span class=\"c\">#----------- Download, Install, Create Dedicated User, and Restrict Directory ------------<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># Add a user. Regular users do not have SSH login permissions by default, which is fine.<\/span><span class=\"w\">\n<\/span><span class=\"c\"># For completeness, use `usermod -s \/sbin\/nologin ftpuser`.<\/span><span class=\"w\">\n\n<\/span><span class=\"n\">yum<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nt\">-y<\/span><span class=\"w\"> <\/span><span class=\"nx\">vsftpd<\/span><span class=\"w\">\n<\/span><span class=\"n\">yum<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">lsof<\/span><span class=\"w\"> <\/span><span class=\"nt\">-y<\/span><span class=\"w\">\n<\/span><span class=\"n\">sudo<\/span><span class=\"w\"> <\/span><span class=\"nx\">systemctl<\/span><span class=\"w\"> <\/span><span class=\"nx\">enable<\/span><span class=\"w\"> <\/span><span class=\"nx\">vsftpd<\/span><span class=\"w\">\n<\/span><span class=\"c\"># Start the service successfully. Anonymous access is enabled by default but without permission to modify or upload.<\/span><span class=\"w\">\n<\/span><span class=\"c\"># Start it early to avoid errors during configuration.<\/span><span class=\"w\">\n<\/span><span class=\"n\">sudo<\/span><span class=\"w\"> <\/span><span class=\"nx\">systemctl<\/span><span class=\"w\"> <\/span><span class=\"nx\">start<\/span><span class=\"w\"> <\/span><span class=\"nx\">vsftpd<\/span><span class=\"w\">\n\n<\/span><span class=\"n\">sudo<\/span><span class=\"w\"> <\/span><span class=\"nx\">groupadd<\/span><span class=\"w\"> <\/span><span class=\"nx\">ftpusers<\/span><span class=\"w\">\n<\/span><span class=\"c\"># Accept user input and create a user in the ftpusers group<\/span><span class=\"w\">\n<\/span><span class=\"n\">read<\/span><span class=\"w\"> <\/span><span class=\"nt\">-p<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"Enter the username for FTP sharing: \"<\/span><span class=\"w\"> <\/span><span class=\"nx\">user_name<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">sudo<\/span><span class=\"w\"> <\/span><span class=\"nx\">useradd<\/span><span class=\"w\"> <\/span><span class=\"nt\">-g<\/span><span class=\"w\"> <\/span><span class=\"nx\">ftpusers<\/span><span class=\"w\"> <\/span><span class=\"nv\">$user_name<\/span><span class=\"w\">\n\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"User <\/span><span class=\"nv\">$user_name<\/span><span class=\"s2\"> has been created. \\n\"<\/span><span class=\"w\">\n\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"\u26a0\ufe0f  Note: Linux initial password rules require passwords to include uppercase, lowercase, and special characters. \u203c\ufe0f\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"If you have configured password policies, you can ignore this message.\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"\u25c9 Note: The password will be displayed in plain text for verification. \\n\"<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># -s: Hide input for sensitive information<\/span><span class=\"w\">\n<\/span><span class=\"n\">read<\/span><span class=\"w\"> <\/span><span class=\"nt\">-p<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"Enter the password: \"<\/span><span class=\"w\"> <\/span><span class=\"nx\">pass_word<\/span><span class=\"w\"> \n\n<\/span><span class=\"c\"># Pass the password to `passwd` via stdin<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nv\">$pass_word<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"n\">passwd<\/span><span class=\"w\"> <\/span><span class=\"nt\">--stdin<\/span><span class=\"w\"> <\/span><span class=\"nv\">$user_name<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># Restrict login terminal<\/span><span class=\"w\">\n<\/span><span class=\"n\">sudo<\/span><span class=\"w\"> <\/span><span class=\"nx\">usermod<\/span><span class=\"w\"> <\/span><span class=\"nt\">-s<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/sbin\/nologin<\/span><span class=\"w\"> <\/span><span class=\"nv\">$user_name<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># Create a specific directory for FTP sharing<\/span><span class=\"w\">\n<\/span><span class=\"n\">sudo<\/span><span class=\"w\"> <\/span><span class=\"nx\">sudo<\/span><span class=\"w\"> <\/span><span class=\"nx\">mkdir<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/var\/ftp\/share<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"hello world \"<\/span><span class=\"w\"> <\/span><span class=\"err\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/var\/ftp\/share\/test.txt<\/span><span class=\"w\">\n<\/span><span class=\"c\"># Grant permissions -R recursively; owner:group <\/span><span class=\"w\">\n<\/span><span class=\"n\">sudo<\/span><span class=\"w\"> <\/span><span class=\"nx\">chown<\/span><span class=\"w\"> <\/span><span class=\"nt\">-R<\/span><span class=\"w\"> <\/span><span class=\"nx\">ftpuser:ftpusers<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/var\/ftp\/share<\/span><span class=\"w\">\n\n<\/span><span class=\"c\">#---------- Backup vsftpd.conf File and Obtain Public IP -----------<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># Configuration modifications are for passive mode.<\/span><span class=\"w\">\n<\/span><span class=\"c\"># Modify: Find and replace. Test with `sed` without parameters first, then add comments for clarity.<\/span><span class=\"w\">\n<\/span><span class=\"c\"># Backup the original vsftpd.conf file<\/span><span class=\"w\">\n<\/span><span class=\"n\">cp<\/span><span class=\"w\"> <\/span><span class=\"nt\">-rp<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/etc\/vsftpd\/vsftpd.conf<\/span><span class=\"p\">{,<\/span><span class=\"o\">.<\/span><span class=\"nf\">bak<\/span><span class=\"p\">}<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># Obtain the public IP of the Linux machine<\/span><span class=\"w\">\n<\/span><span class=\"n\">linux_public_ip<\/span><span class=\"o\">=<\/span><span class=\"err\">$<\/span><span class=\"p\">(<\/span><span class=\"n\">curl<\/span><span class=\"w\"> <\/span><span class=\"nt\">-s<\/span><span class=\"w\"> <\/span><span class=\"nx\">https:\/\/ipinfo.io\/<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"n\">grep<\/span><span class=\"w\"> <\/span><span class=\"s1\">'class=\"fz24\"'<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"n\">awk<\/span><span class=\"w\"> <\/span><span class=\"nt\">-F<\/span><span class=\"w\"> <\/span><span class=\"s1\">'&gt;|&lt;'<\/span><span class=\"w\"> <\/span><span class=\"s1\">'{print$3}'<\/span><span class=\"p\">)<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># This method of obtaining IP is risky due to potential SSH interference, so it's commented out<\/span><span class=\"w\">\n<\/span><span class=\"c\"># get_my_ip=$(netstat -n|grep -i :22|awk '{print $5}'|cut -d\":\" -f1|sed -n '1p')<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># New method to obtain the client IP (Windows or Mac)<\/span><span class=\"w\">\n<\/span><span class=\"n\">get_my_ip<\/span><span class=\"o\">=<\/span><span class=\"err\">$<\/span><span class=\"p\">(<\/span><span class=\"n\">who<\/span><span class=\"o\">|<\/span><span class=\"n\">awk<\/span><span class=\"w\"> <\/span><span class=\"s1\">'{print $5}'<\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"n\">cut<\/span><span class=\"w\"> <\/span><span class=\"nt\">-d<\/span><span class=\"w\"> <\/span><span class=\"s1\">'('<\/span><span class=\"w\"> <\/span><span class=\"nt\">-f2<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"n\">cut<\/span><span class=\"w\"> <\/span><span class=\"nt\">-d<\/span><span class=\"w\"> <\/span><span class=\"s1\">')'<\/span><span class=\"w\"> <\/span><span class=\"nt\">-f1<\/span><span class=\"o\">|<\/span><span class=\"n\">sed<\/span><span class=\"w\"> <\/span><span class=\"nt\">-n<\/span><span class=\"w\"> <\/span><span class=\"s1\">'1p'<\/span><span class=\"p\">)<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># cut<\/span><span class=\"w\">\n<\/span><span class=\"c\"># -d specifies a custom delimiter<\/span><span class=\"w\">\n<\/span><span class=\"c\"># -f2 selects the second part of the split output<\/span><span class=\"w\">\n<\/span><span class=\"c\"># -f1 selects the first part of the split output<\/span><span class=\"w\">\n\n<\/span><span class=\"c\">#------------------------------------------------------<\/span><span class=\"w\">\n\n\n<\/span><span class=\"c\">#************************ Explanatory Documentation ***************************************<\/span><span class=\"w\">\n<\/span><span class=\"c\">#<\/span><span class=\"w\">\n<\/span><span class=\"c\"># local_enable=YES         # Allow local users to log in<\/span><span class=\"w\">\n<\/span><span class=\"c\"># chroot_local_user=YES    # Restrict all users to their home directory<\/span><span class=\"w\">\n<\/span><span class=\"c\"># chroot_list_enable=YES   # Enable a list of exception users<\/span><span class=\"w\">\n<\/span><span class=\"c\"># chroot_list_file=\/etc\/vsftpd\/chroot_list  # Specify the user list file; users in this list are not restricted to their home directory<\/span><span class=\"w\">\n<\/span><span class=\"c\">#<\/span><span class=\"w\">\n<\/span><span class=\"c\">#*********************************************************************<\/span><span class=\"w\">\n\n\n<\/span><span class=\"c\">#----------- Configure Basic User Policies: Disable Anonymous Access, Restrict Access to Specified Directory, IPv4 -----------<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># Replace line 12 globally with `anonymous_enable=NO`<\/span><span class=\"w\">\n<\/span><span class=\"n\">sed<\/span><span class=\"w\"> <\/span><span class=\"nt\">-i<\/span><span class=\"w\"> <\/span><span class=\"s1\">'12canonymous_enable=NO'<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/etc\/vsftpd\/vsftpd.conf<\/span><span class=\"w\">\n\n<\/span><span class=\"c\">## Uncomment lines 100, 101, and 103 to configure chroot as above.<\/span><span class=\"w\">\n<\/span><span class=\"n\">sed<\/span><span class=\"w\"> <\/span><span class=\"nt\">-i<\/span><span class=\"w\"> <\/span><span class=\"s1\">'100,101s\/^#\/\/'<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/etc\/vsftpd\/vsftpd.conf<\/span><span class=\"w\">\n<\/span><span class=\"n\">sed<\/span><span class=\"w\"> <\/span><span class=\"nt\">-i<\/span><span class=\"w\"> <\/span><span class=\"s1\">'103s\/^#\/\/'<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/etc\/vsftpd\/vsftpd.conf<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># Replace `Listen=NO` with `Listen=YES`<\/span><span class=\"w\">\n<\/span><span class=\"n\">sed<\/span><span class=\"w\"> <\/span><span class=\"nt\">-i<\/span><span class=\"w\"> <\/span><span class=\"s1\">'s\/listen=NO\/listen=YES\/'<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/etc\/vsftpd\/vsftpd.conf<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># Comment out line 123 to disable IPv6 sockets<\/span><span class=\"w\">\n<\/span><span class=\"n\">sed<\/span><span class=\"w\"> <\/span><span class=\"nt\">-i<\/span><span class=\"w\"> <\/span><span class=\"s1\">'123s\/^\/# \/'<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/etc\/vsftpd\/vsftpd.conf<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># Uncomment line 52 to enable logging<\/span><span class=\"w\">\n<\/span><span class=\"n\">sed<\/span><span class=\"w\"> <\/span><span class=\"nt\">-i<\/span><span class=\"w\"> <\/span><span class=\"s1\">'52s\/^#\/\/'<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/etc\/vsftpd\/vsftpd.conf<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># Enable passive mode: `pasv_enable=YES`<\/span><span class=\"w\">\n<\/span><span class=\"c\"># Set the minimum and maximum ports for passive connections<\/span><span class=\"w\">\n<\/span><span class=\"c\"># Configuring the minimum and maximum ports to the same value opens a fixed port<\/span><span class=\"w\">\n<\/span><span class=\"c\"># `allow_writeable_chroot=YES` allows writing within the restricted directory<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"\nlocal_root=\/var\/ftp\/share\nallow_writeable_chroot=YES\npasv_enable=YES\npasv_address=<\/span><span class=\"nv\">$linux_public_ip<\/span><span class=\"s2\">\npasv_min_port=21000\npasv_max_port=21000\n\"<\/span><span class=\"w\"> <\/span><span class=\"err\">&gt;&gt;<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/etc\/vsftpd\/vsftpd.conf<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># Create a file; otherwise, users cannot log in even if they exist. No additional permissions are needed; ftpuser does not access this file.<\/span><span class=\"w\">\n<\/span><span class=\"c\"># It is speculated that the program logic relies on this \"small file\" for policy decisions. If the feature is enabled but the file is missing, it causes issues.<\/span><span class=\"w\">\n<\/span><span class=\"n\">touch<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/etc\/vsftpd\/chroot_list<\/span><span class=\"w\">\n<\/span><span class=\"c\">## `chroot_list_file=\/etc\/vsftpd\/chroot_list` enables the restricted user list file configuration.<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># Comment out line 4: `auth required pam_shells.so` module authentication.<\/span><span class=\"w\">\n<\/span><span class=\"n\">sudo<\/span><span class=\"w\"> <\/span><span class=\"nx\">sed<\/span><span class=\"w\"> <\/span><span class=\"nt\">-i<\/span><span class=\"w\"> <\/span><span class=\"s1\">'4s\/^\/#\/'<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/etc\/pam.d\/vsftpd<\/span><span class=\"w\">\n\n<\/span><span class=\"c\">#------ `pam_access.so` is a module that calls the configuration file `\/etc\/security\/access.conf` ------<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># `\/etc\/pam.d\/vsftpd` (module configuration file)<\/span><span class=\"w\">\n<\/span><span class=\"c\">## Backup `\/etc\/pam.d\/vsftpd`<\/span><span class=\"w\">\n<\/span><span class=\"n\">cp<\/span><span class=\"w\"> <\/span><span class=\"nt\">-rp<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/etc\/pam.d\/vsftpd<\/span><span class=\"p\">{,<\/span><span class=\"o\">.<\/span><span class=\"nf\">bak<\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><span class=\"c\"># Insert the module before line 7<\/span><span class=\"w\">\n<\/span><span class=\"n\">sudo<\/span><span class=\"w\"> <\/span><span class=\"nx\">sed<\/span><span class=\"w\"> <\/span><span class=\"nt\">-i<\/span><span class=\"w\"> <\/span><span class=\"s1\">'7i\\account    required     pam_access.so'<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/etc\/pam.d\/vsftpd<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># `access.conf`<\/span><span class=\"w\">\n<\/span><span class=\"c\">## Backup the `access.conf` file<\/span><span class=\"w\">\n<\/span><span class=\"n\">cp<\/span><span class=\"w\"> <\/span><span class=\"nt\">-rp<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/etc\/security\/access.conf<\/span><span class=\"p\">{,<\/span><span class=\"o\">.<\/span><span class=\"nf\">bak<\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><span class=\"c\">## Define the last rule as \"deny all,\" meaning only explicitly allowed exceptions are permitted<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\">  <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"\n+:ftpusers:<\/span><span class=\"nv\">$get_my_ip<\/span><span class=\"s2\">\n-:ALL:ALL\n\n\"<\/span><span class=\"w\"> <\/span><span class=\"err\">&gt;&gt;<\/span><span class=\"w\"> <\/span><span class=\"nx\">\/etc\/security\/access.conf<\/span><span class=\"w\">\n\n<\/span><span class=\"c\">#---------------------------------------------------<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># Start the FTP service.<\/span><span class=\"w\">\n<\/span><span class=\"n\">sudo<\/span><span class=\"w\"> <\/span><span class=\"nx\">systemctl<\/span><span class=\"w\"> <\/span><span class=\"nx\">restart<\/span><span class=\"w\"> <\/span><span class=\"nx\">vsftpd<\/span><span class=\"w\">\n\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"*** Debugging Code ***\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"s1\">'scp \/Users\/user1\/Desktop\/1.sh root@101.xxx.xxx.xxx:${HOMEPATH}'<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"rm -rf ~\/.ssh\/known_hosts &amp;&amp; rm -rf ~\/.ssh\/known_hosts.old\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"View all user information: cat \/etc\/passwd\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"Create a new user and add to the FTP sharing group: useradd -G ftpusers <username>\"<\/username><\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"Add an existing user to the FTP sharing group: usermod -a -G ftpusers <username>\"<\/username><\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"***************** \\n\"<\/span><span class=\"w\">\n\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"\\n **************** FTP Overview and Basic Information ******************** \\n\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"FTP dedicated user created: <\/span><span class=\"nv\">$user_name<\/span><span class=\"s2\">; Password: <\/span><span class=\"nv\">$pass_word<\/span><span class=\"s2\">\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"FTP shared directory location: cat \/var\/ftp\/share\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"Important \u203c\ufe0f: Ensure port 21000 is open in your cloud security group or cloud server firewall.\"<\/span><span class=\"w\">\n\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"\\nFTP setup is complete. Below is a brief overview of FTP configurations:\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"View FTP access history: \/var\/log\/xferlog\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"Core configuration file: vi \/etc\/vsftpd\/vsftpd.conf\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"FTP user and IP access control file: vi \/etc\/security\/access.conf\\n\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"Windows users can access via File Explorer for uploads and downloads.\"<\/span><span class=\"w\">\n<\/span><span class=\"n\">echo<\/span><span class=\"w\"> <\/span><span class=\"nt\">-e<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"Mac users are recommended to use Cyberduck, FileZilla, or ForkLift, as Finder's FTP support is limited.\\n\"<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># Delete itself<\/span><span class=\"w\">\n<\/span><span class=\"n\">rm<\/span><span class=\"w\"> <\/span><span class=\"nt\">-rf<\/span><span class=\"w\"> <\/span><span class=\"nv\">$0<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># This explanation might be distracting for beginners<\/span><span class=\"w\">\n<\/span><span class=\"c\"># echo -e \"User access restriction configuration file: \/etc\/vsftpd\/chroot_list\"<\/span><span class=\"w\">\n<\/span><span class=\"c\"># echo -e \"To allow unrestricted access, add the username to this file, one username per line.\\n\"<\/span><span class=\"w\">\n\n<\/span><span class=\"c\">#**************** Interlude ***********************************<\/span><span class=\"w\">\n\n<\/span><span class=\"c\">## Check user groups: `groups ftpuser`. Create a group: `groupadd ftpusers`.<\/span><span class=\"w\">\n<\/span><span class=\"c\">## Create a new user and add to a specified group as the primary group (each user has only one primary group).<\/span><span class=\"w\">\n<\/span><span class=\"c\">## Create a new user and associate with a group:<\/span><span class=\"w\">\n<\/span><span class=\"c\">## `useradd -g <groupname> <username>`<\/username><\/groupname><\/span><span class=\"w\">\n<\/span><span class=\"c\">## Or, create a new user and add to a supplementary group (a user can belong to multiple supplementary groups):<\/span><span class=\"w\">\n<\/span><span class=\"c\">## `useradd -G <groupname> <username>`<\/username><\/groupname><\/span><span class=\"w\">\n<\/span><span class=\"c\">## For existing users:<\/span><span class=\"w\">\n<\/span><span class=\"c\">## `-a` stands for append, used with `-G` to add the user to a new group without leaving existing groups.<\/span><span class=\"w\">\n<\/span><span class=\"c\">## `usermod -a -G <groupname> <username>`<\/username><\/groupname><\/span><span class=\"w\">\n\n<\/span><span class=\"c\">## Google Cloud enables SELinux by default. Domestic servers typically disable internal firewalls.<\/span><span class=\"w\">\n<\/span><span class=\"c\">## If you enable a firewall on your server, you need to configure policies on both ends.<\/span><span class=\"w\">\n\n<\/span><span class=\"c\"># By default, it should not protect already open ports. Whether a port is open depends on the service or application running.<\/span><span class=\"w\">\n<\/span><span class=\"c\"># These services or applications open ports that were previously closed. The firewall only protects these ports when enabled.<\/span><span class=\"w\">\n<\/span><span class=\"c\"># For example, port 80 is only opened when a web application like IIS is running. The firewall may protect port 80,<\/span><span class=\"w\">\n<\/span><span class=\"c\"># preventing external users from accessing it. When the firewall is disabled, the protection is removed, and access is allowed.<\/span><span class=\"w\">\n<\/span><span class=\"c\"># Therefore, the firewall is not the root cause of opening port 80.<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u067e\u0633 \u0627\u0632 \u062a\u062d\u0642\u06cc\u0642 \u060c \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u06a9\u0647 \u0628\u06cc\u0634\u062a\u0631 \u0627\u0641\u0631\u0627\u062f \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc Linux FTP \u0631\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u0633\u0627\u062f\u0647 \u067e\u06cc\u062f\u0627 \u0645\u06cc \u06a9\u0646\u0646\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u060c \u0628\u0631 \u0627\u0633\u0627\u0633 \u062a\u062c\u0631\u0628\u0647 \u0634\u062e\u0635\u06cc \u0645\u0646 \u060c \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0622\u0633\u0627\u0646\u06cc \u0646\u0628\u0648\u062f. \u0628\u0631\u0627\u06cc \u067e\u0631\u062f\u0627\u062e\u062a\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u060c \u0645\u0646 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u06cc\u06a9 \u06a9\u0644\u06cc\u06a9 \u0628\u0627 \u0645\u0646\u0628\u0639 \u0628\u0627\u0632 \u0648 \u06a9\u0627\u0645\u0644\u0627\u064b \u0645\u0633\u062a\u0646\u062f \u0628\u0627 \u0646\u0638\u0631\u0627\u062a \u062c\u0627\u0645\u0639 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":96708,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/media2.dev.to\/dynamic\/image\/width=1000,height=500,fit=cover,gravity=auto,format=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1n50h8ypthh48somsj7n.png","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-96707","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/96707","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=96707"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/96707\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/96708"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=96707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=96707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=96707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}