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


39

আমি এমন একটি লিনাক্স কমান্ড খুঁজছি যা প্রদত্ত ব্যবহারকারীর সমস্ত ফাইলের মালিকানা, বিশেষত লক্ষ্যযুক্ত ডিরেক্টরিতে অন্য নির্দিষ্ট ব্যবহারকারীর কাছে পরিবর্তন করতে পারে।

আমার স্বপ্নের আদেশটি দেখতে এরকম কিছু হবে ...

chuser -R --olduser tom --newuser jerry

অথবা

chuser -R --olduser 1066 --newuser 1492

এটি আমার পরিস্থিতি ... এতে ব্যবহারকারী এবং গোষ্ঠী সম্পর্কিত তথ্য সহ আমার কাছে একটি ব্যাকআপ ফাইল (.tgz) আছে। এটি অ্যাপাচি এবং মাইএসকিউএল চলমান একটি ওয়েব সার্ভার থেকে নেওয়া হয়েছিল। ব্যাকআপের ফাইলগুলি সিস্টেম জুড়ে রয়েছে এবং এতে বিভিন্ন ব্যবহারকারী এবং বেশ কয়েকটি সিস্টেম টাইপ অ্যাকাউন্ট রয়েছে এবং এটি নতুন সার্ভারে পুনরুদ্ধার করলে সেটিংসটি হারিয়ে যায় না key সমস্যাটি হ'ল মেশিনে থাকা ব্যবহারকারীরা ফাইলগুলি ব্যাকআপ ফাইলের সাথে মেলে না বলে পুনরুদ্ধার করা হচ্ছে। উদাহরণস্বরূপ উভয় মেশিনের একটি মাইএসকিউএল ব্যবহারকারী ছিল তবে তাদের পৃথক ব্যবহারকারী আইডি রয়েছে এবং বিভিন্ন ব্যবহারকারীর আইডি রয়েছে যা উভয় মেশিনেই বিদ্যমান ছিল যা বিভিন্ন ব্যবহারকারীর অন্তর্ভুক্ত। এর অর্থ পুরানো মেশিনে থাকা নতুন মেশিনে ব্যবহারকারীদের সিঙ্ক করার কোনও উপায় নেই।

আমি এইভাবে ফাইন্ড কমান্ডের সাহায্যে সমস্ত ব্যবহারকারীর ফাইলগুলি খুঁজে পেতে পারি ...

find /decompressed-backup-dir -uid 1050

অথবা

find /decompressed-backup-dir -user tom

যদি আমার সন্দেহ হয় যে আমি একক কমান্ড দিয়ে যা চাই তার করার উপায় নেই তবে সম্ভবত মালিকানা পরিবর্তন পরিচালনার জন্য ফাইন্ড কমান্ডের ফলাফলগুলিকে অন্য কমান্ডে পাইপ করার কোনও উপায় আছে?

আমি এটি একটি পিএইচপি স্ক্রিপ্টের সাহায্যে করতে পারলাম তবে ব্যাকআপে 4 গিগাবাইট এবং কয়েক হাজার ফাইল রয়েছে যাতে আমি পিএইচপি বা পার্ল ব্যবহার করতে চাই না তবে শেল স্ক্রিপ্টটি খুশি হতে পারে যা এটি পরিচালনা করতে পারে।

উত্তর:



65

আমি মনে করি - chown কমান্ডের উপর থেকে পতাকা সম্ভবত সবচেয়ে সহজ উপায়।

chown --from=oldguy newguy * -R

3
সর্বোত্তম সমাধান, এটির সন্ধান করার দরকার নেই
টোবিয়াস হ্যাগেনবিক

2
অনুকূল সমাধান
কার্ল ফোরনার

1
ওএস এক্স এ আপনি brew install coreutilsএবং এর সাথে এটি করতে পারেন gchown
জোমো

এটি সঠিক এবং সেরা উত্তর।
জর্জ এম

আমি নিশ্চিত, এটি সেরা উত্তর হিসাবে চিহ্নিত করা উচিত।
সৌলীবনেউহ

7

যোগ করা হচ্ছে SiteKickr দ্বারা উত্তর , chgrpনেই --fromযুক্তি, কিন্তু আপনি সঙ্গে একই অর্জন করতে পারেন chownব্যবহারকারী বাদ দ্বারা।

উদাহরণ:

chown -R --from=:currentgroup :newgroup /some/directory

6

findঅন্য কেউ পোস্ট হিসাবে আপনি এটি করতে ব্যবহার করতে পারেন chown

তবে আপনার নিজের tarজিনিসগুলির যত্ন নেওয়ার দরকার নেই।

উদাহরণস্বরূপ, যদি আপনি একটি করতে tarউপর machine Aযেখানে ব্যবহারকারী tomহয় uid 500এবং তারপর untarফাইল machine Bযেখানে ব্যবহারকারী tomহয় uid 505, tarডান জিনিস কি করতে হবে এবং এটির মালিক ফাইল করা uid 505


আকর্ষণীয় জোয়ার, আমি এই সম্পর্কে অবগত ছিল না। সুতরাং টার কেবল ইউআইডি সঞ্চয় করে না তবে ইউআইডের সাথে যুক্ত নামটিও রাখে।
নিকলি

3
মূল ট্যার ফর্ম্যাটটি কেবল সংখ্যার তথ্য সংরক্ষণ করে। 80 এর দশকের শেষের দিকে পসিক্স দ্বারা প্রবর্তিত ইউএসটার ফর্ম্যাট নামগুলি যুক্ত করে। এই দিনগুলিতে আপনার মুখোমুখি হওয়া কোনও টার সঠিক কাজটি করে।
সিক্লামিনো

1

উত্তর উভয় ব্যবহারকারী এবং গ্রুপ সেট করে:

find /decompressed-backup-dir -uid 1050 -exec chown newuser:newgroup {} +

তবে আপনি যদি কিছু ব্যবহারকারীর অন্তর্ভুক্ত ফাইলগুলির কেবলমাত্র গ্রুপটি পরিবর্তন করতে চান তবে আপনি ব্যবহার করতে পারবেন না chown(যতদূর আমি জানি), তবে পরিবর্তে ব্যবহার করুন chgrp:

find /decompressed-backup-dir -uid 1050 -exec chgrp newgroup {} +

এবং কেবলমাত্র কয়েকটি গ্রুপের অন্তর্ভুক্ত ফাইলগুলির কেবলমাত্র গ্রুপটি পরিবর্তন করতে আপনাকে যেমন: ব্যবহার করতে হবে .:

find /decompressed-backup-dir -gid 400 -exec chgrp newgroup {} +

শুধু জ্ঞান যুক্ত করতে।


1
আসলে, আপনি কেবল newuserঅংশটি ছেড়ে দিতে পারেন । ম্যান পৃষ্ঠাটি বলে: "যদি কোলন এবং গোষ্ঠী দেওয়া হয় তবে মালিক বাদ দেওয়া হয় তবে কেবলমাত্র ফাইলগুলির গ্রুপটি পরিবর্তিত হয়; chownএক্ষেত্রে, একই ফাংশন সম্পাদন করে chgrp" "
বেন ভয়েগ্ট

0

যদি আপনাকে একই /etc/passwdব্যবহারকারীকে পুনরায় সমাধান করতে পুরানো / নতুন মালিকানা আইডিগুলি ম্যাপ করতে হয় ,

(যা আপনি সার্ভারে এলডিএপি প্রবর্তনের পরে এবং /etc/passwdপ্রতিটি ব্যবহারকারী এবং গোষ্ঠীর জন্য নকল এন্ট্রি করার পরে ঘটতে পারে ),

আপনি এই স্ক্রিপ্টটি ব্যবহার করতে পারেন আমি লিখেছি: https://gist.github.com/siers/ded0a4158c900495f04c3ad965f4a544

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


-2

তুমি ব্যবহার করতে পার chown - R /directory/file

এই কমান্ডটি ডিরেক্টরিটির সমস্ত উদাহরণের অনুমতি পরিবর্তন করবে chown - R /directory

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