কোনও নির্দিষ্ট সাব ডিরেক্টরিতে অ্যাক্সেস সহ ভার্ফুটপিডি-র ভার্চুয়াল ব্যবহারকারীদের কীভাবে সেটআপ করবেন?


24

আমাকে ভার্চুপিপিডিতে একটি ভার্চুয়াল ব্যবহারকারী যুক্ত করতে সক্ষম হতে হবে যা কেবলমাত্র একটি সাব ফোল্ডারে অ্যাক্সেস পায়। ভার্চুয়াল ব্যবহারকারীদের ব্যবহার করার কারণটি হ'ল আমি কেবলমাত্র সার্ভারে 1 জন প্রকৃত ব্যবহারকারী থাকতে চাই।

এফটিপি কাঠামোটি হ'ল:

  • www
    • website_name1
      • sub_folder1
    • website_name2
      • sub_folder2
      • sub_folder3
    • website_name3
    • website_name4

মূল অ্যাকাউন্টটিতে www ফোল্ডার এবং সমস্ত উপ ডিরেক্টরিতে অ্যাক্সেস রয়েছে এবং আমি একটি ভার্চুয়াল ব্যবহারকারী যুক্ত করতে চাই যা সাব_ফোল্ডার 1 এবং কেবল উপ_ফোল্ডার 1 এ অ্যাক্সেস পেতে পারে

কিছু বিভ্রান্তি এড়াতে আমার অন্য ব্যবহারকারীকে সাব_ফোল্ডার 3 এবং কেবলমাত্র সাব_ফোল্ডার 3 অ্যাক্সেস করতে হবে । আমার বক্তব্যটি হ'ল ব্যবহারকারী ভিত্তিতে কোন ফোল্ডার এবং সাব ফোল্ডারটি বেছে নিতে সক্ষম হওয়া প্রয়োজন choose

আমি পুরো স্ট্রুকট্রে বা সেটআপ ব্যবহারকারী নামক ফোল্ডারগুলি দেখতে উভয়কেই যুক্ত করার উপায় খুঁজে পেয়েছি যার দুটিই আমার কোনও ব্যবহারই নয়।

আমি এখানে অনুরূপ একটি প্রশ্ন পোস্ট করেছি:

নির্দিষ্ট ডিরেক্টরি যুক্ত সহ একাধিক ব্যবহারকারীর জন্য কীভাবে ভিএসএফটিপিডি সেটআপ করবেন

তবে এটি সুপারিশ করে proftpdযা আমি যদিও কম কম সুরক্ষিত ছিল।
নাকি আমি এখানে বিন্দু মিস করেছি?


যতক্ষণ না আমি এই সার্ভারফল্ট / কোয়েশনস / ৪৪০২০২৪/২ সন্ধান করি ততক্ষণ পর্যন্ত দীর্ঘকাল যাবত প্রমাণীকরণে আমার সমস্যা ছিল। পিএএম-এর MD5 হ্যাশ নিয়ে সমস্যা রয়েছে। এই গাইডটি সেই সমস্যাটি সমাধান করে।

উত্তর:


31

কিছুটা খেলার সাথে আমি একটি আধা সমাধান নিয়ে আসতে পেরেছি (নিখুঁত নয় তবে যথেষ্ট ভাল)

2707974 উত্তর এবং তথ্য ব্যবহার করে আমি অন্যটি অর্জন করেছি যেখানে আমার যা প্রয়োজন তা পেতে সক্ষম হয়েছি।

প্রথমে আপনার vsftp এবং PAM ইনস্টল করা দরকার

apt-get install vsftpd libpam-pwdfile

সম্পাদনা /etc/vsftpd.conf

nano /etc/vsftpd.conf

তারপরে নিম্নলিখিতটিতে পেস্ট করুন

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
local_root=/var/www
chroot_local_user=YES
allow_writeable_chroot=YES
hide_ids=YES

#virutal user settings
user_config_dir=/etc/vsftpd_user_conf
guest_enable=YES
virtual_use_local_privs=YES
pam_service_name=vsftpd
nopriv_user=vsftpd
guest_username=vsftpd

ভার্চুয়াল ব্যবহারকারীদের জন্য সবচেয়ে গুরুত্বপূর্ণ বিটটি ভার্চুয়াল ব্যবহারকারী সেটিংস মন্তব্য করার পরে আপনার যথাযথ প্রয়োজনগুলিতে সম্পাদনা করুন

ব্যবহারকারী তৈরি করা হচ্ছে

আপনি হয় একটি ডেটাবেস ব্যবহার করতে পারেন বা htpasswdআমি htpasswdব্যবহার করতে আরও দ্রুত এবং সহজ পেয়েছি ।

আপনার ব্যবহারকারীদের সঞ্চয় করার জন্য একটি ডিরেক্টরি তৈরি করুন

mkdir /etc/vsftpd
htpasswd -cd /etc/vsftpd/ftpd.passwd user1

অতিরিক্ত ব্যবহারকারী যুক্ত করা বাদ দিন -c

htpasswd -d /etc/vsftpd/ftpd.passwd user2

আমি কেবল এটি সিআরওয়াইপিটি ব্যবহার করেই কাজটি পরিচালনা করতে সক্ষম হয়েছি যা 8 টির বেশি সীমাবদ্ধ করে 8 টিরও বেশি চর ব্যবহার করে সরাসরি এইচটিপ্যাসওয়ুইডে একটি সামঞ্জস্যপূর্ণ হ্যাশ এবং পাইপ তৈরি করতে ওপেনসেল ব্যবহার করে

htpasswd -c -p -b /etc/vsftpd/ftpd.passwd user1 $(openssl passwd -1 -noverify password)

আপনার ব্যবহারকারী তৈরি হয়ে গেলে আপনি এখন আপনার প্যাম কনফিগারেশন ফাইলটি পরিবর্তন করতে পারবেন

nano /etc/pam.d/vsftpd

এবং এই ফাইলের ভিতরে থাকা সমস্ত কিছুই মুছে ফেলুন এবং নিম্নলিখিতটি দিয়ে প্রতিস্থাপন করুন

auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so

এটি আপনার ভার্চুয়াল ব্যবহারকারীদের জন্য সংজ্ঞাযুক্ত /etc/vsftpd/ftpd.passwdএবং স্থানীয় ব্যবহারকারীদের অক্ষম করবে login

এরপরে আমাদের এই ভার্চুয়াল ব্যবহারকারীদের ব্যবহারের জন্য একটি ব্যবহারকারী যুক্ত করতে হবে। এই ব্যবহারকারীদের শেলের অ্যাক্সেস থাকবে না এবং তাদের কল করা হবেvsftpd

useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

ব্যবহারকারীর অবশ্যই guest_username=vsftpdvsftpd কনফিগ ফাইলে মিলবে

ডিরেক্টরি অ্যাক্সেস সংজ্ঞায়িত করা হচ্ছে

এখানে গুরুত্বপূর্ণ লাইনটি নিম্নলিখিত

user_config_dir=/etc/vsftpd_user_conf

এর অর্থ এটি যখন user1লগ ইন করে নিচের ফাইলটি সন্ধান করবে

/etc/vsftpd_user_conf/user1

এই ফাইলটি একই হিসাবে vsftpd.confআপনি একটি নতুন সংজ্ঞা দিতে পারেনlocal_root

যে প্রশ্নটিতে আমরা user1কেবল অ্যাক্সেস রাখতে চাই তাতে ফিরে যাওয়া var/www/website_name1/sub_folder1, সুতরাং আমাদের vsftpd_user_confফোল্ডারটি তৈরি করতে হবে :

mkdir /etc/vsftpd_user_conf

এখন ব্যবহারকারী ফাইলটি তৈরি করুন:

nano /etc/vsftpd_user_conf/user1

এবং নিম্নলিখিত লাইন লিখুন

local_root=/var/www/website_name1/sub_folder1

এখন vsftp পুনরায় চালু করুন

service vsftpd restart

আপনার এখন ব্যবহারকারী 1 হিসাবে লগইন করতে সক্ষম হওয়া উচিত যারা কেবল এটি দেখতে সক্ষম হবে var/www/website_name1/sub_folder1এবং এর মধ্যে কোনও ফোল্ডার এবং ফাইল থাকতে পারে।

এটি এখন আপনি যতগুলি ব্যবহারকারী হিসাবে চান যোগ করতে পারেন এবং আপনার ইচ্ছামত যে কোনও ফোল্ডারে সীমাবদ্ধ করতে পারেন।

আপনি যদি কোনও ব্যবহারকারী কনফার্ট ফাইল তৈরি না করেন তা মনে রাখা গুরুত্বপূর্ণ এটি রুট হিসাবে var / www ফোল্ডারে ডিফল্ট হবে (উপরের উদাহরণে)

যদি সাবফোল্ডারটি ব্যবহারকারী কর্তৃক পরিবর্তনযোগ্য হতে পারে, তবে ভাগ করা সাবফোল্ডারটির মালিককে পরিবর্তন করা প্রয়োজন:

chown vsftpd:nogroup /var/www/website_name1/sub_folder1

এটি কিছু সংশোধন করে কাজ করে: 1) নিখুঁত পাথগুলি ব্যবহার করুন ("var /" থেকে "/ var" দিয়ে শুরু হওয়া পাথগুলি প্রতিস্থাপন করুন 2) উবুন্টু 12.04-এ রয়েছে vsftpd 2.3.5 অনুমতি_writable_chroot বিকল্প সমর্থন করে না, আপনি প্যাচ ইনস্টল করে সমাধান করতে পারেন বনফুটপিডি
গাদেলাট

হ্যালো, এসএসএল পাসওয়ার্ডের সাহায্যে আমরা কি আবার -c দিয়ে -c বাদ দিতে পারি বা কেবল বাদ দিতে পারি? দ্বিতীয় নোটে, আমরা কী পাসওয়ার্ড পরিবর্তন করতে কোয়েরিটি আবার চালু করি? বা অন্য কোন পদ্ধতি আছে। ধন্যবাদ
mdixon18

আপনি কেন ইউরোরড - হোম দিয়ে একটি হোম ডিরেক্টরি তৈরি করতে হবে? এটা জরুরি?
ই তথ্য 128

1
অতিরিক্ত: সুরক্ষিত টিএলএস সংযোগ সক্ষম করুন।
ডিজিটালসোশন

1
কিছু সংস্থার জন্য অ্যাপাচি 2-ইউজসগুলির প্রয়োজন হতে পারে কারণ আমি এটি উত্তরগুলিতে অন্তর্ভুক্ত করি না কারণ এটি সবার জন্য প্রাসঙ্গিক নয়।
অ্যাভিনিট

12

এই ম্যানুয়াল দিয়ে চেষ্টা করুন। হতে পারে আপনার জন্য কাজ করবে।

এটা কিভাবে করতে হবে

Vsftpd এবং একটি PAM গ্রন্থাগার ইনস্টল করুন

সম্পাদনা করুন /etc/vsftpd.confএবং/etc/pam.d/vsftpd

কাস্টম ডিরেক্টরি সহ ইউজার আউটআউটগুলি তৈরি করুন (উদাহরণস্বরূপ / var / www / এ)

সঠিক chmodএবং সহ ডিরেক্টরি সেট করুনchown

সার্ভারে সম্পূর্ণ অ্যাক্সেস সহ একজন প্রশাসক ব্যবহারকারী তৈরি করুন

  1. ভার্চুয়াল ব্যবহারকারী তৈরি করতে vsftpd(খুব সুরক্ষিত এফটিপি ডিমন) ইনস্টল করুনlibpam-pwdfile

আমি এফটিপি ব্যবহারকারী তৈরি করতে চেয়েছিলাম কিন্তু আমি স্থানীয় ইউনিক্স ব্যবহারকারীদের (শেল অ্যাক্সেস, কোনও হোম ডিরেক্টরি ইত্যাদি) যুক্ত করতে চাইনি। একটি প্যাম (প্লাগেবল প্রমাণীকরণ মডিউল) আপনাকে ভার্চুয়াল ব্যবহারকারী তৈরি করতে সহায়তা করবে।

sudo apt-get install vsftpd libpam-pwdfile

  1. সম্পাদন করা vsftpd.conf

প্রথমে আপনাকে মূল ফাইলটি ব্যাক আপ করতে হবে

sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak

তারপরে একটি নতুন তৈরি করুন

sudo vim /etc/vsftpd.conf

নিম্নলিখিত লাইনগুলি অনুলিপি করুন এবং আটকান। ফাইলটিতে কেবল এই লাইন থাকা উচিত:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
nopriv_user=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/var/www/$USER
chroot_local_user=YES
hide_ids=YES
guest_username=vsftpd
  1. ভার্চুয়াল ব্যবহারকারীদের নিবন্ধন করুন

আপনার ব্যবহারকারীর নিবন্ধন করতে htpasswd, তাই আমি ধরে নিই যে আপনি apache2আপনার সার্ভারে কাজ করছেন। একটি vsftpdফোল্ডার তৈরি করুন তারপরে কনফিগারেশন ফাইলগুলি রাখুন।

sudo mkdir /etc/vsftpd

তারপর

sudo htpasswd -cd /etc/vsftpd/ftpd.passwd user1

-সি এর অর্থ হ'ল আমরা ফাইলটি তৈরি করব যদি এটি এমডি 5-এর বিদ্যমান না থাকে তবে আপনার এটি উবুন্টু 12.04 এ প্রয়োজন, কেবল সর্বদা এটি ব্যবহার করুন

কমান্ডটি একটি পাসওয়ার্ডের জন্য অনুরোধ জানাবে।

আপনি যদি নতুন ব্যবহারকারীদের পরে যুক্ত করতে চান:

sudo htpasswd -d /etc/vsftpd/ftpd.passwd user2

  1. পিএএম ইন কনফিগার করুন /etc/pam.d/vsftpd

আবার, আপনাকে অরাইনাল ফাইলটি ব্যাক আপ করতে হবে

sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

এবং একটি নতুন তৈরি করুন

sudo vim /etc/pam.d/vsftpd

এই 2 টি লাইন অনুলিপি করুন এবং আটকান (এটি কেবলমাত্র সামগ্রীতে হওয়া উচিত)। আমি কেবল এই 2 টি লাইনকেই জোর দিয়েছি, মূলগুলি রাখার জন্য আমি অনেক সময় নষ্ট করেছি এবং এইগুলি যুক্ত করেছি।

auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so
  1. শেল অ্যাক্সেস ছাড়াই স্থানীয় ব্যবহারকারী তৈরি করুন

sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

আপনি এটি পরীক্ষা করতে পারেন যে এটি আইডি কমান্ড: আইডি vsftpd দ্বারা তৈরি করা হয়েছে। চেক_শেল প্যারামিটারের কারণে আমরা ব্যবহারকারীকে / বিন / মিথ্যা শেল দিয়ে সংজ্ঞায়িত করি (আপনি এটি ব্যবহার না করেও)। শেষ ব্যবহারকারী যখন এফটিপি সার্ভারের সাথে সংযুক্ত হয়, তখন সেগুলি অধিকার এবং মালিকানার জন্য ব্যবহৃত হবে:

chmodএবং chown

  1. আবার শুরু vsftpd

সাধারণ উপায়টি সমস্ত ডিমনর মতো init.d ব্যবহার করছে

sudo /etc/init.d/vsftpd restart

sudo service vsftpd restart

  1. ডিরেক্টরি তৈরি করুন

কনফিগারেশন অনুসারে সমস্ত ব্যবহারকারীকে এই ফোল্ডারে: / var / www / user1 এ স্থাপন করা হবে।

আপনার এগুলি নির্দিষ্ট অধিকার সহ তৈরি করতে হবে: রুট ফোল্ডারটি লিখনযোগ্য হতে পারে না!

 / [root = /var/www/user1] => 555
www [ /var/www/user1/www ] => 755
docs [ /var/www/user1/docs ] => 755

দ্রষ্টব্য: ব্যবহারকারী রুট ডিরেক্টরিতে ফাইল বা ফোল্ডার তৈরি করতে পারে না।

ইন vsftpd.confআমরা আছে chroot_local_user=YESতাই ব্যবহারকারী তার ফোল্ডার কিছু বাহিরে দেখতে পাবে না। তার কাছে, সার্ভারটি দেখতে এমন দেখাচ্ছে:

সুতরাং এই আদেশগুলি চালান:

mkdir /var/www/user1`
chmod -w /var/www/user1
mkdir www/user1/www
chmod -R 755 /var/www/user1/www
chown -R vsftpd:nogroup /var/www/user1

/var/www/user1ফোল্ডারের অস্তিত্ব আছে বা সংযোগ ব্যর্থ হবে।

এই মুহুর্তে আপনি আপনার এফটিপি-র সাথে সংযোগ স্থাপনের চেষ্টা করতে পারেন

  1. পুরো সার্ভার অ্যাক্সেস করতে একটি প্রশাসক ব্যবহারকারী তৈরি করুন

প্রশাসক ব্যবহারকারী তৈরি করতে আমাদের সাথে একটি নতুন ব্যবহারকারী নিবন্ধিত করতে হবে htpasswd

আমরা এটি করার আগে, আমি আপনাকে সেই /etc/ftpusersফাইলটি যাচাই করে নেওয়ার পরামর্শ দেব যা নির্দিষ্ট ব্যবহারকারীদের সংজ্ঞা দেয় যা ftp এর সাথে সংযোগ স্থাপন করার অনুমতি নেই। আমি মনে করি এটি কেবল স্থানীয় ব্যবহারকারীদের জন্য এবং ভার্চুয়াল ব্যবহারকারীদের জন্য নয় তবে কেবলমাত্র যদি এই ফাইলটিতে থাকা কোনও নাম চয়ন না করেন।

sudo htpasswd -d /etc/vsftpd/ftpd.passwd theadmin

এখন আমাদের একটি নতুন লাইন যুক্ত করতে হবে /etc/vsftpd.conf

chroot_list_enable=YES

এর অর্থ হ'ল আপনার ব্যবহারকারীকে তাদের ফোল্ডারে (জেল হিসাবে) এক্সেসপটি ব্যবহারকারীরা / ইত্যাদি / এ স্থাপন করবেন

vsftpd.chroot_list

আসুন এই ফাইলটি তৈরি করুন এবং আমাদের ব্যবহারকারী যুক্ত করুন, ফাইলটি একটি সাধারণ লাইন যা "theadmin" ধারণ করে। প্রতি লাইনে একজন ব্যবহারকারী যুক্ত করুন। এর অর্থ আপনার কোনও /var/www/theadminফোল্ডার তৈরি করার দরকার নেই , ব্যবহারকারী লগইন করে প্রবেশ করতে পারবেন /home/vsftpd

সার্ভারটি পুনরায় আরম্ভ করুন এবং আপনি শেষ করেছেন!


এটি ইতিমধ্যে এটি অত্যন্ত জটিলতার চেষ্টা করেছে যেহেতু এটি স্থানীয়_রূট = / ভার / www / $ ব্যবহারকারীকে প্রয়োগ করে। এটি আমাকে ব্যবহারকারী বা ব্যবহারকারীদের জন্য একটি একক ডিরেক্টরি নির্দিষ্ট করার অনুমতি দেয় না। এই ডিরেক্টরিটির সাধারণত ক্লায়েন্টের উপর নির্ভর করে বিভিন্ন উদ্দেশ্য এবং অবস্থান থাকে। যদিও প্রতিক্রিয়া জন্য ধন্যবাদ।
অ্যাভিনিট

0

হ্যাঁ আপনি করতে পারেন, এবং নমনীয়তার জন্য একটি ইউজারকনফিগ ডির এবং ফাইল তৈরি mkdir /var/www/userconfsকরতে পারেন বা আপনি যেভাবে ইউজারকনফের নাম পরিবর্তন করতে চান তা নির্দিষ্ট ফাইল তৈরি করুন

vi /var/www/userconfigs/ftpuseraccount

অভ্যন্তর প্রকার, local_root=/var/www(বা আপনি dir দ্বারা অ্যাক্সেস করতে চান যাই হোক না কেন) guest_username=www-data(ফাইল শীর্ষ সম্পাদনার উবুন্টু মালিক

আপনি vsftpd.conf আপডেট করার পরে যোগ করে user_config_dir=/var/www/userconfigs(বা যা আপনি এটির বদলে দিয়েছেন যাইহোক, এই অ্যাকাউন্টটি sdir yo নির্দিষ্ট করে যা অ্যাক্সেস করবে)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.