এমন কোনও সিস্টেমে এসএফটিপি কীভাবে ব্যবহার করতে হয় যার জন্য রুট অ্যাক্সেসের জন্য সুডো প্রয়োজন এবং এসএসএইচ কী ভিত্তিক প্রমাণীকরণ?


26

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

আমি এসএসএইচ কী ভিত্তিক প্রমাণীকরণ - স্মার্ট কার্ডে আরএসএ কী ব্যবহার করছি।

সিস্টেমটি যদি রুট লেভেল কমান্ডগুলি সম্পাদন করতে sudo দরকার হয় তবে আমি কীভাবে এটি পেতে পারি?

আমি কি কেবল এসএফটিপি-র জন্য সুডো বাইপাস করার একটি উপায় তৈরি করতে পারি?

সুডো ও কী প্রমাণীকরণ রাখার কোনও উপায় আছে কি?

আমি উবুন্টুতে সংযোগ রাখতে উইন্ডোজ ব্যবহার করছি। উবুন্টুতেও ম্যাক সংযোগের সাথে কাজ করার জন্য আমার এটি দরকার this

আমি বুঝতে পারি যে কীভাবে সিস্টেম পরিষেবাদি পরিচালনা করতে এসএসএইচ টানেলিং করা যায়। বর্তমানে, আমি সরাসরি রুট ব্যবহারকারী লগইন ব্যবহার করি তবে পাসওয়ার্ড লগইন অক্ষম করা হয়। আমি কীভাবে একই সাথে সুডো এবং এসএফটিপি ব্যবহার করব তা বুঝতে পারি না। কোনও অ-রুট ব্যবহারকারী হিসাবে লগইন করা এবং তারপরে সুডোর ব্যবহারের জন্য এটি সর্বোত্তম অনুশীলন বলে মনে হয় যেহেতু লগগুলি প্রতিটি কমান্ডের জন্য বর্ধিত সুযোগ-সুবিধা দেওয়া হয়েছিল তা রেকর্ড করবে।

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


2
আমি কেবল কী-ভিত্তিক প্রমাণীকরণের সাথে সরাসরি অ্যাকাউন্টটি ব্যবহার করব এবং এড়িয়ে যাব sudo
মার্টিন ভন উইট্টিচ

1
"নন-রুট ব্যবহারকারী হিসাবে লগইন করা এবং তারপরে সুডোর ব্যবহার করা সর্বোত্তম অনুশীলন বলে মনে হয় যেহেতু লগগুলি প্রতিটি কমান্ডের জন্য বর্ধিত সুযোগ-সুবিধাগুলি কে রেকর্ড করবে তা রেকর্ড করবে।" - তবে এটি খুব বেশি মূল্যবান নয়, কারণ যে কেউ রুট সুবিধাগুলি অর্জন করেছেন সে লগগুলিতে যেভাবেই छेলা করতে পারে।
মার্টিন ভন উইট্টিচ

কত ফাইল?
নিলস

1
কেবল উল্লেখ করার জন্য নীচে sftp -s "sudo / usr / lib / openssh / sftp-server" টার্গেটস্টস্ট.এফকিডিএন এর একটি সঠিক উত্তর রয়েছে। যদি sudo পাসওয়ার্ডের প্রয়োজন হয় তবে আপনি এই নির্দিষ্ট কমান্ডটি নোপাসউইডের জন্য শ্বেত তালিকাতে রাখতে পারেন।
মিক্কো ওহতামায়

উত্তর:


7

আপনার ব্যবহার করা অ্যাকাউন্ট থেকে সীমাবদ্ধতার সাথে এসএফটিপি হ'ল ফাইল অপারেশনে একটি কমান্ড অ্যাক্সেস। আপনাকে আরও প্রশাসনিক ক্রিয়াকলাপ করতে ssh ব্যবহার করতে হবে, একই সাথে অসম্পূর্ণ ব্যবহার sudo এবং SFTP তৈরি করতে হবে। আপনার যদি এসএফটিপি ব্যবহার করে কোনও সীমাবদ্ধতা ছাড়াই পুরো ডিস্কে অ্যাক্সেসের প্রয়োজন হয় তবে এটি রুট অ্যাকাউন্ট ব্যবহার করে করুন। যাইহোক আপনি দুটি পৃথক সেশন ব্যবহার করে অবশ্যই sftp এবং ssh এ রুট দিয়ে লগইন করতে পারেন।

সুরক্ষা কীগুলি সুরক্ষা উন্নত করে এবং লগিংকে আরও সহজ করে তোলে, কীবোর্ড ইনপুটের প্রয়োজন হয় না। শুধুমাত্র লগইন করতে সহায়তা করে, আপনার প্রতিটি অ্যাকাউন্ট ব্যবহারকারীর জন্য বেশ কয়েকটি পাসওয়ার্ড থাকতে পারে এবং একই প্রভাব থাকতে পারে।

সম্পাদনা: আমি ভুলে গিয়েছি: আপনি যদি ব্যবহারকারী আইডিকে 0 তে নির্ধারণ করেন তবে আপনি রুটের চেয়েও একই প্রভাবের সাথে অন্য অ্যাকাউন্ট তৈরি করতে পারেন, তবে একইভাবে বিপজ্জনক হওয়ায় কোনও ধারণা নেই sense কেউ যদি মূলের মতো লগইন করতে চেষ্টা করে তবে কিছুটা দ্বিধা প্রকাশ করতে পারে, তবে এগুলি ছাড়াও, খুব বেশি জ্ঞান ছিল না।


12

সুডোর সাথে সাবসিস্টেম কল করা আমার পক্ষে কাজ করেছে।

উবুন্টু হোস্টের উদাহরণস্বরূপ:

sftp -s "sudo /usr/lib/openssh/sftp-server" targethost.fqdn

2
এটি কেবল তখনই কাজ করে যদি আপনার এটির জন্য পাসওয়ার্ডের প্রয়োজন হয় না বা যদি আপনার ইতিমধ্যে একটি সুডোর টিকিট থাকে এবং tty_tket অক্ষম থাকে। বেশিরভাগ আধুনিক ইনস্টলগুলিতে কোনওটিই ডিফল্ট নয়।
চিতা

এটি ডিফল্ট অ্যামাজন লিনাক্স সিস্টেমে সংযোগের জন্য উপযুক্ত, যেখানে আপনি ব্যবহারকারী ইক্য 2 ব্যবহারকারী হিসাবে সংযুক্ত হন এবং আপনি পাসওয়ার্ড ছাড়াই sudo ব্যবহার করতে পারেন। +1, ধন্যবাদ! (দ্রষ্টব্য যে অ্যামাজন লিনাক্সে, কমান্ডটি কিছুটা পৃথক:। sudo /usr/libexec/openssh/sftp-server)
মার্নিক্স ক্লাস্টার রিইনস্টেটমোনিকা

আমি এই সমাধানটি অন্য ব্যবহারকারী হিসাবে লগইন করতে ব্যাপকভাবে ব্যবহার করি যেখানে সরাসরি লগইন অক্ষম করা হয় (নিরীক্ষণ এবং লগিংয়ের উদ্দেশ্যে)। এটি একটি ক্ষুদ্র বিষয় যা পিপড়ার মতো সরঞ্জামগুলি এই উপ-সিস্টেমটি প্রকাশ করে না। যাইহোক, আমি কখনও রুট থেকে sudo করার পরামর্শ দেব না , তবে আপনার প্রয়োজন মতো করার জন্য যথেষ্ট সুযোগ-সুবিধা সহ অন্য কোনও ব্যবহারকারীকে পরামর্শ দিন। সমস্যাটি হ'ল সমস্যাটি হ'ল সমস্ত ইউনিক্স পরিবেশ একরকম নয় এবং sftp সাবসিস্টেমটি বিভিন্ন স্থানে অবস্থিত হতে পারে @ মার্নিক্সক্লুস্টারের দ্বারা উল্লিখিত হিসাবে
YoYo

অ্যামাজন লিনাক্সের জন্য পুরো কমান্ডটি হ'ল: "sftp -s 'sudo / usr / lixec / openssh / sftp-server' targetthost.fqdn"
johntellsall

7

উপরের মন্তব্যে @ মার্টিনভনভিটিক যা পরামর্শ দিয়েছে তার বাইরে আপনি কেবল এই ক্রিয়াকলাপের জন্য একটি ডেডিকেটেড এসএসএইচ কী জুড়ি সেটআপ করতে পারেন এবং তাদের স্কোপকে/root/.ssh/authorized_keys কেবল একটি কমান্ডের মধ্যে সীমাবদ্ধ করে রুট ব্যবহারকারীর ফাইলে যুক্ত করতে পারেন ।

# User backup's $HOME/.ssh/authorized_keys file
command="/usr/libexec/openssh/sftp-server" ssh-dss AAAAC8ghi9ldw== backup@host

এটি রুট হিসাবে এই সিস্টেমে এই জোড়ার সাথে সম্পর্কিত কী সহ অন্য সিস্টেমকে এসএফটিপিতে অনুমতি দেবে। আপনার syslogএবং / অথবা secure.logফাইলগুলিতে এই সংযোগের রেকর্ড এখনও রয়েছে (আপনার ডিস্ট্রো এই স্তরের লগিং সরবরাহ করে।

দ্রষ্টব্য: এই পদ্ধতিতে যার যার সার্ভার অ্যাক্সেস করে কার্টের ব্লাঞ্চে অ্যাক্সেস থাকতে পারে, তাই এটি বিজ্ঞতার সাথে ব্যবহার করুন। আরও ভাল পড়া চালিয়ে যাওয়া এবং এই ক্ষমতাটি ক্রুট এবং কেবল পঠনের অ্যাক্সেসের সাথে একত্রিত করে, কঠোর বিধিনিষেধ তৈরি করতে এবং মূল হিসাবে নির্দিষ্ট অবস্থানে লক্ষ্যযুক্ত অ্যাক্সেস তৈরি করতে।

ক্রুট এবং পঠনযোগ্য

আপনি যে অন্য কৌশলটি এখানে কাজে লাগাতে পারবেন তা হ'ল এসএফটিপি সংযোগটি সীমাবদ্ধ করা যাতে এটি নির্দিষ্ট স্থানে রুট হিসাবে ক্রোয়েটেড হয়, যার ভিত্তিতে এসএসএইচ কী ব্যবহৃত হয়েছিল। এই উত্তর ও উত্তর প্রশ্নোত্তর শিরোনামে আমার উত্তর দেখুন: আরও তথ্যের জন্য " এসএফটিপি দিয়ে পাসওয়ার্ড-কম ব্যাকআপ সীমাবদ্ধ করুন "।

আপনি sftp-serverএর সুইচগুলি -Rএবং এর মাধ্যমেও নিয়ন্ত্রণ করতে পারেন -d

 -d start_directory
         specifies an alternate starting directory for users.  The pathname 
         may contain the following tokens that are expanded at runtime: %%
         is replaced by a literal '%', %h is replaced by the home directory
         of the user being authenticated, and %u is replaced by the user‐
         name of that user.  The default is to use the user's home 
         directory.  This option is useful in conjunction with the 
         sshd_config(5) ChrootDirectory option.

 -R      Places this instance of sftp-server into a read-only mode.  
         Attempts to open files for writing, as well as other operations 
         that change the state of the filesystem, will be denied.

হুঁ, তবে কমান্ডটি সীমাবদ্ধ করে রাখলে sftp-serverএটি কোনও নিরাপদ হয় না, তাই না? যদি কোনও আক্রমণকারী এই অ্যাকাউন্টে অ্যাক্সেস অর্জন করে তবে তিনি সহজেই এসএফটিপি ব্যবহার করে নিজেকে একটি রুট শেল দিতে পারেন। সুতরাং সুরক্ষা দৃষ্টিকোণ থেকে কমান্ড সীমাবদ্ধতাটি বেশ অযথা :)
মার্টিন ভন উইট্টিচ

@ মার্টিনভনভিটিক - আমি যে উদাহরণটি অন্তর্ভুক্ত করেছি তার মধ্যে নেই। সম্ভাবনা দেখানোর জন্য এটি আরও ছিল। সঠিক ব্যবহারের কেসগুলি না জেনে একটি সত্যিকারের বিশ্বের উদাহরণ দেখানো কঠিন। rootযে কোনও আকারে এসএফটিপি প্রবেশাধিকার দেওয়া কেবল সমস্যা, বিশেষত যখন এটি আঁকানো থাকে না।
SLM

3

সহজ পদ্ধতি আমি অনুসৃত শুধু SFTP ছিল এবং একটি পর্যায়ে এলাকায় ফাইল (করা mkdirSSH আবার সঙ্গে গন্তব্যে সেখান থেকে ফাইল স্থানান্তর করার জন্য নতুন ডিরেক্টরি আপনি সার্ভারে অনুমতি যেখানে) এবং তারপর sudo cpবা sudo mv


1

আমার একই রকম সমস্যা ছিল যে আমি বেশিরভাগ অনুরূপ হোস্টের একটি গ্রুপে কনফিগারেশন ফাইলগুলি সম্পাদনা করতে vimdiff ব্যবহার করতে চেয়েছিলাম, সিএসএস এবং সুডো সহ এবং আপনি আমার সমাধানটি আপনার ওয়ার্কফ্লোতে অভিযোজিত করতে সক্ষম হতে পারেন।

sudoedit (sudo এর অংশ) আপনাকে যে কোনও সম্পাদককে নিয়মিত ব্যবহারকারী হিসাবে কোনও ফাইল সম্পাদনা করতে ব্যবহার করতে দেয় যার জন্য আপনার লেখার অনুমতি নেই এবং আপনি পরিবেশ পরিবর্তনশীল সহ সম্পাদককে নির্দিষ্ট করতে পারেন। sudoedit ফাইল (গুলি) অনুলিপি করে, অনুলিপি (গুলি) এর নামের সাথে সম্পাদককে অনুরোধ করে এবং সম্পাদকটি প্রস্থান করার জন্য অপেক্ষা করে, তারপরে পরিবর্তিত অনুলিপিটি যেখানে ছিল সেখানে অনুলিপি করে। সুতরাং আমি এমন একটি 'সম্পাদক' তৈরি করেছি যা সম্পাদনা করে না, কেবলমাত্র পরে ব্যবহারের জন্য ফাইলটি নোট করে এবং অপেক্ষা করে এবং ভিমারডিফের চারপাশে একটি মোড়ক ব্যবহার করে যা সেই চিহ্নিতকারীটিকে ব্যবহার করে।

প্রথম ফাইলটি ~ / .bin / redit red

#!/usr/bin/perl -w
use strict;
use warnings;
use Sys::Hostname;
my $file = $ENV{HOME}.'/.var/redit/'.hostname();
sub cmkdir($){
    my $_=shift;
    mkdir $_ unless -d $_;
}
cmkdir $ENV{HOME}.'/.var/';
cmkdir $ENV{HOME}.'/.var/redit/';
foreach (@ARGV){
    my $fh;
    open $fh, '>', $file.'na' or warn;
    print {$fh} $_;
    close $fh;
    symlink $_, $file or die;
    print;
    <STDIN>;
    unlink $file or die;
    unlink $file.'na' or die;
}

দ্বিতীয়টি ~ / .bin / redit1

#!/usr/bin/perl -w
use strict;
use warnings;
use Sys::Hostname;
my $h=hostname();
@ARGV=qw(host1 host2 host3 host4) unless @ARGV;
print join " ", qw(gvimdiff), $ENV{HOME}.'/.var/redit/'.$h, map {'scp://'.$_.'/.var/redit/'.$_} grep {$_ ne $h} @ARGV;
exec qw(gvimdiff), $ENV{HOME}.'/.var/redit/'.$h, map {'scp://'.$_.'/.var/redit/'.$_} grep {$_ ne $h} @ARGV;

আমি তাদের যেভাবে ব্যবহার করি তা হ'ল আমি চারটি হোস্টের সাথে সংযোগ খোলার জন্য সিএসএস ব্যবহার করি এবং তারপরে একটি কমান্ড ব্যবহার করি EDITOR=~/.bin/redit sudoedit /etc/conf/fileএবং তারপরে ভিন্ন উইন্ডোতে চালানো ~/.bin/redit1, আমার পরিবর্তনগুলি করা, সংরক্ষণ এবং প্রস্থান করা, CSS এ ফিরে যেতে এবং পরিবর্তনগুলি সম্পাদন করতে এন্টার টিপুন এবং প্রস্থান করুন প্রস্থান করুন (যদি না আমি একাধিক ফাইল সম্পাদনা করি তবে যদি তালিকার পরবর্তী ফাইলটিতে redit অগ্রসর হয় এবং আপনি পরবর্তী ফাইলের জন্য আবার redit1 চালান))

যেহেতু আপনি যা করছেন তা কম জটিল তাই শুধুমাত্র একটি রিমোট হোস্টের সাথে কাজ করার কারণে আপনার redit1 এর প্রয়োজন নেই, আপনি কেবল হোস্টে আপনার sftp সম্পাদকটি নির্দেশ করতে পারেন: .var / redit / ਮੇਜ਼ਬਾਨ বা সমতুল্য।


1

আমি যা করি তা (গুলি) sudo su -এফটিটিপির পরিবর্তে স্কেপ ব্যবহার করা এবং উইনসিসিপিতে শেলটি পরিবর্তন করা এটি অ্যাডভান্সড \ এসসিপি \ শেলের মধ্যে রয়েছে তবে এটি কেবল স্কিপি প্রোটোকল দিয়েই কাজ করে।


0

Sftp এর জন্য: আপনার যদি ssh শেল সুডো অ্যাক্সেস থাকে তবে আপনি নিজের ব্যবহারকারীর নামটি / etc / গ্রুপের মূল ব্যবহারকারী গোষ্ঠীতে যুক্ত করতে পারেন এবং তারপরে যে গোষ্ঠীটি আপনি অ্যাক্সেস করতে চান তাতে rx অনুমতি দিতে পারেন।


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

0

আপনি সার্ভারের পাশে আপনার sshd_config ফাইলটিতে সন্নিবেশ করতে পারেন:

Subsystem sftp sudo -n true && sudo -n /usr/lib/openssh/sftp-server || /usr/lib/openssh/sftp-server

এইভাবে যার কাছে NOPASSWD সুডো ডান আছে তিনি একটি মূলের এসএফপি এক্সেস পাবেন get


হুকুম কি Subsystem? উবুন্টু 16.04-এ, আমি "কমান্ড খুঁজে পাইনি" পেয়েছি
অনুপ্রেরণা

এটি কোনও কমান্ড নয় বরং একটি এন্ট্রি / ইত্যাদি / এসএসএস / এসএসডি_কনফিগ
জোনস

0

/ Etc / ssh / sshd_config এ এই লাইনটি যুক্ত করা আমার পক্ষে ঠিক ছিল এবং বিদ্যমান সাবসিস্টেম লাইনে মন্তব্য করুন Subsystem sftp sudo -n true && sudo -n /usr/lib/openssh/sftp-server || /usr/lib/openssh/sftp-server

তারপর sudo systemctl sshd restart

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