সমস্ত ফাইল এবং ফোল্ডারগুলিতে ব্যবহারকারীর অনুমতি দিন


9

আমি এমন একটি ব্যবহারকারী চাই যার সিস্টেমে সমস্ত ফাইল এবং ফোল্ডার অ্যাক্সেস রয়েছে। এটি একটি দূরবর্তী মেশিনটি ব্যাকআপ করার জন্য স্থানীয় মেশিনে আরএসওয়াইএনসি ব্যবহারের উদ্দেশ্যে।

এই মুহুর্তে আমরা ব্যবহারকারীর ব্যবহার করছি backupsএবং যদিও আমরা এই ব্যবহারকারীকে গ্রুপগুলিতে যুক্ত করেছি sudoএবং adminআরএসসিএনসি এখনও বার্তা দেয়:

rsync: opendir "/ অবস্থান / থেকে / ফোল্ডার" ব্যর্থ হয়েছে: অনুমতি অস্বীকার করা হয়েছে (13)

আরএসআইএনসি: সেন্ড ফাইলে "/ অবস্থান / ফাইল / ফাইল" খুলতে ব্যর্থ হয়েছে: অনুমতি অস্বীকার করা হয়েছে (13)

আমরা কীভাবে ব্যবহারকারীকে backupsসমস্ত কিছু অ্যাক্সেস করার অনুমতি দিই (কোনও ধারণা যে সমস্ত গোষ্ঠীতে ব্যবহারকারীকে সংযুক্ত করার সংক্ষিপ্ততা - আমরা যে রিমোট সার্ভারটি ব্যাকআপ নেওয়ার চেষ্টা করছি তা হ'ল একটি ডেডিকেটেড হোস্টিং সার্ভার যেখানে প্রতিটি অ্যাকাউন্টের সিস্টেমে তার নিজস্ব ব্যবহারকারী রয়েছে)।

কোন সাহায্যের জন্য ধন্যবাদ।


1
আপনি কি পথের উদাহরণ দিতে পারেন? এটা এর বেশী হলে /proc, /devআশা করা ইত্যাদি তারপর ত্রুটি আছে।
ফিল

ব্যবহারকারী যোগ backupsকরার sudoএবং adminকিছু পরিবর্তন করবেন না।
ফেভাদি

@ ফিল আমি পুরো / হোম ডিরেক্টরিটি ব্যাক আপ করার চেষ্টা করছি। যে ফাইল / ডিরেক্টরিগুলি ব্যর্থ হয় সেগুলি হ'ল এর /home/a/c/account/users/mail:usernameমতো অনুমতি drwx------এবং এর মালিকানা রয়েছে mail:4096। আমি ধরে নিয়েছি যে ব্যবহারকারী backupsগ্রুপে রয়েছে sudoবা adminএটি অ্যাক্সেস পাচ্ছে না কারণ গোষ্ঠীগুলির জন্য অ্যাক্সেসের অনুমতি নেই? আমি জানি না, তবে এটির মতো ফোল্ডার / ফাইলগুলিতে এটির ত্রুটি রয়েছে।
টমাস ক্লেসন

@ ফাওয়াদী আমি ইতিমধ্যে এটি করেছি ... এখনও কাজ করছে না।
টমাস ক্লেসন

আপনাকে rsyncকমান্ডটি sudo দিয়ে চালাতে হবে ।
ফিল

উত্তর:


6

ব্যবহারকারীকে কেবল backupsব্যবহারকারী দলের sudoসাথে যুক্ত করা সিস্টেমে সমস্ত ফাইলগুলিতে অ্যাকাউন্টটিকে অ্যাক্সেস দেয় না। এটি ব্যবহারকারীকে sudoকমান্ড চালানোর অনুমতি দেয় ।

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

আপনি ইতিমধ্যে কী এক্সচেঞ্জ করেছেন এবং যাচাই করা প্রমাণীকরণ সফল is ইন authorized_keysদূরবর্তী হোস্ট যে আপনার খুঁটির জোর কোথায় ফাইল /homeথেকে ডিরেক্টরির, আপনি একটি যোগ করতে পারেন command=কী ব্যবহারকারী দ্বারা ব্যবহৃত হয় ডিরেক্টিভের backups। এই নির্দেশটি কেবলমাত্র সেই আদেশটি চালানোর অনুমতি দেয় যখন সেই কীটি প্রমাণীকরণের জন্য ব্যবহৃত হয়। সুতরাং কীটির প্রথম ক্ষেত্রটি এর অনুরূপ হবে:

command="/path/to/sudo /path/to/rsync -az /home /local/folder" ssh-rsa AAAAB3NzaC1yblahblahblah

আপনি আরও এমনকি যান এবং যেমন চাবি আরো বিকল্প, যোগ করতে পারেন from=myhost,no-pty,no-X11-forwarding

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

অনেক ভাল তথ্য man sshd। আপনি বিশেষভাবে AUTHORIZED_KEYS ফর্ম্যাট বিভাগটি পড়তে চান।


ঠিক আছে, আমি অনুসরণ করি অনুমোদিত_কাইজ ফাইলটিতে সেই নির্দেশ যুক্ত করা আপনাকে কি সুপারসার অনুমতি সহ একটি রিমোট কমান্ড চালানোর অনুমতি দেবে? rsync -e ssh -az backups@domain.com:/home /location/of/local/folderদূরবর্তী মেশিনে সুপারভাইজার হিসাবে চালানোর নির্দেশ দেওয়ার জন্য আমি কীভাবে আদেশটি পরিবর্তন করব ? নাকি এটি আপনাআপনি করবে? আপনার সময় এবং সাহায্যের জন্য ধন্যবাদ. :)
টমাস ক্লেসন

1
নির্দেশটি আপনাকে স্বয়ংক্রিয়ভাবে কমান্ডটি সুপারভাইজার হিসাবে চালানোর অনুমতি দেয় না। যখন নির্দিষ্ট কীটি প্রমাণীকরণের জন্য ব্যবহৃত হয়, এটি কেবলমাত্র নির্দিষ্ট কমান্ডটিতে ব্যবহারকারীকে সীমাবদ্ধ করে। সুপারুজারের অনুমতিগুলি "sudo" থেকে আসে। প্রযুক্তিগতভাবে, আপনি আপনার সম্পূর্ণ "rsync" কমান্ডটি অনুমোদিত_কিগুলি ফাইলটিতে রাখতে পারেন এবং কেবল ব্যাকআপ হোস্ট থেকে ssh সংযোগ শুরু করতে পারেন। প্রমাণীকরণ সম্পূর্ণ হওয়ার পরে পুরো প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে শুরু হবে। আমি "ssh ব্যাকআপ @ রিমোটহস্ট সুডো আরএসএনসি" এর মতো কিছু দিয়ে সংযোগটি শুরু করব
জর্জ এম এম

আপনার মস্তিষ্ককে চারপাশে গুটিয়ে রাখতে কিছুটা সময় নেয় না, তবে অবশেষে এটি ক্লিক করলে এবং আপনি কী করতে পারেন তা বুঝতে পেরে এটি দুর্দান্ত।
জর্জ এম

2

একটি বিকল্প হ'ল দূরবর্তী সিস্টেমে আরএসসিএনসি সার্ভার চালানো।

মূলত, একটি তৈরি rsync.confসঙ্গে uid=rootতারপর ব্যবহার rsync -az rsync://domain.com

উদাহরণস্বরূপ অন্য কেউ লিখেছেন এবং উবুন্টুতে সার্ভার সক্ষম করার কয়েকটি বেসিকের জন্য rsync ডিমন কনফিগার করেছেন http://pastebin.com/5hQx1mRV দেখুন ।

মনে রাখবেন যে আপনাকে এটির সুরক্ষা বিবেচনা করতে হবে। দূরবর্তী সিস্টেমটিকে আপনার স্থানীয় সিস্টেমে চাপ দেওয়া সম্ভবত আরও ভাল পদ্ধতির approach


দেখতে বেশ সুন্দর লাগছে ধন্যবাদ। এরপরে কি /backup/lcরিমোট সার্ভারের ফোল্ডার থেকে সমস্ত কিছু আরএসসি করবে ? কাজটি করার pathজন্য কি আমি কিছুটা পরিবর্তন করব /home?
টমাস ক্লেসন

ডেট এডিট করার জন্য ধন্যবাদ। এর সাথে একমাত্র সমস্যা হ'ল আমরা যেখানে আছি সেখানে একটি স্থির আইপি ঠিকানার গ্যারান্টি দিতে পারি না এবং আমরা ক্রোন এর মাধ্যমে এটি করতে চাই যাতে এটি সর্বদা ঘটে। যদি আমরা "চাপ" দিই তবে আমাদের আইপি ঠিকানা পরিবর্তন হলে এটি কাজ করা বন্ধ করতে পারে। : /
থমাস ক্লেসন

@ থমাসক্লেসন: গতিশীল ডিএনএস এর জন্য এটি। :)
ওয়ারেন ইয়ং

1

অন্তর্নিহিত ফাইল সিস্টেম সমর্থন করে তবে আপনি সম্ভবত এসিএল ব্যবহার করতে পারেন।

আপনার প্রতিটি ফাইল এবং ডিরেক্টরিগুলির এসিএলে গ্রুপ ব্যাকআপ যুক্ত করা উচিত। তবে নতুনভাবে তৈরি করা ফাইল এবং ডিরেক্টরিগুলির জন্য স্বয়ংক্রিয়ভাবে যুক্ত হওয়ার জন্য আপনাকে প্রথমে সমস্ত বিদ্যমান ডিরেক্টরিতে ডিফল্ট এসিএল সেট করা উচিত। রিমোট সার্ভারে তাই:

sudo find /home -type d -print0 | xargs -0 setfacl -d -m group:backup:r-x

তারপরে আপনার সমস্ত বিদ্যমান ডিরেক্টরিগুলির জন্য rx অনুমতি থাকা উচিত এবং ফাইলগুলির জন্য পড়তে হবে। আপনি এটি 2 টি কমান্ড দিয়ে করতে পারেন (এইবার -d ছাড়াই)

sudo setfacl -R -m group:backup:r-- /home
sudo find /home -type d -print0 | xargs -0 setfacl -m group:backup:r-x

এটি আপনাকে প্রতিটি ফাইলের মালিকানাধীন বিদ্যমান ব্যবহারকারী এবং গোষ্ঠী পরিবর্তন না করে গ্রুপ ব্যাকআপে ফাইলগুলি পড়ার অতিরিক্ত অনুমতি দেবে।

দ্রষ্টব্য: অনুসন্ধান ত্বরান্বিত করতে xargs কমান্ড আপনি xargs কমান্ডে নিম্নলিখিত বিকল্পটি যুক্ত করতে পারেন: -P nসমান্তরাল প্রক্রিয়াটির n এর সাথে। আপনি আপনার মেশিনে থাকা সিপিইউতে এটি সেট করতে পারেন +1।


সমান্তরাল xargs এই ক্ষেত্রে জিনিসগুলিকে গতি বাড়িয়ে তুলবে না, কারণ বাধাটি I / O, সিপিইউ নয়।
মাইকেল

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

আমি সবেমাত্র এখানে সুপারইউসার.com/a/422954/53206 পড়েছি যা আপনি সহজেই ব্যবহার করতে পারেন: sudo setfacl -Rm d:group:backup:r-X,group:backup:r-X /home:) অনেক সহজ!
হিউজেনস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.