সুডো করার সময় নির্দিষ্ট মালিক (ব্যবহারকারী / গ্রুপ) দিয়ে ফাইল এবং ডিরেক্টরি তৈরি করা


22

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

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

সমস্যাটি হ'ল: প্রক্রিয়াটিতে যা কিছু তৈরি করা হয় তা রুট বা সুডো ব্যবহারকারীর মালিকানাধীন। আমি যখন হয়ে যাই (এবং কখনও কখনও মাঝ পথে) তখন জিনিসগুলি সঠিক করার জন্য আমাকে একটি সিরিজ chmodএবং chownকমান্ড জারি করতে হবে।

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

উত্তর:


26

sudo -u username touch filenameআপনার স্ক্রিপ্ট হিসাবে কার্যকর করা হয় আপনি সর্বদা করতে পারেন root। এটি আপনার sudoersকনফিগারেশনের উপর নির্ভর করে সাধারণত কোনও পাসওয়ার্ডের প্রয়োজন হয় না ।

বিকল্পভাবে, চালান su username -c touch filename। অতিরিক্ত যুক্তি ব্যবহারকারীর শেলকে সরবরাহ করা হয় এবং শেলের -cবিকল্পটি কনভেনশন দ্বারা নির্দিষ্ট কমান্ডগুলি কার্যকর করে।


কিছু কমান্ড (যেমন mkdir) অনুমতিগুলি নির্দিষ্ট করার জন্য যুক্তিগুলি সমর্থন করে:

mkdir -m 0700 foo

ডিফল্টরূপে, ফাইল অপারেশনগুলি umaskশেলের জন্য সেটটিকে সম্মান করে । এটি নির্ধারণ করে যে কোন অনুমতিগুলি অস্বীকার করা হয়েছে । একজন umaskএর 0022উদাহরণস্বরূপ করে না গ্রুপ এবং অন্যদের জন্য লেখার অনুমতি সেট। 0077গোষ্ঠী এবং অন্যদের কোনও অনুমতি পেতে বাধা দিতে সেট করুন ।


আপনি সেট করতে পারেন setgidউত্তরাধিকারী তাদের গোষ্ঠী সদস্যতা মধ্যে নির্মিত সমস্ত ফাইল আছে ডিরেক্টরি করুন:

chmod g+s someDir

কিছু ইউনিক্স ( ) এর জন্য একই আচরণ সমর্থন করে তবে লিনাক্স নয়।setuidchmod u+s


1
আমি মনে করি এটি নিরাপদ যে আপনি যা জিজ্ঞাসা করছেন তার জন্য কোনও নিবেদিত সমর্থন নেই। কেবলমাত্র সুপার ব্যবহারকারীই chownআলাদা ব্যবহারকারীর কাছে ফাইল করতে পারে এবং ডিফল্ট সেট করার মতো ব্যবহারকারীর ভুল হওয়ার সম্ভাবনা থাকে, rootব্যবহারকারীকে উপলব্ধি না করেই তাদের অনুমতি দেয় giving
ড্যানিয়েল অঙ্গুলিনির্দেশ

10

আরও একটি উপায় আছে, আমি মনে করি বেশ মার্জিত। ইনস্টল ব্যবহার (1)

উদাহরণস্বরূপ, জ্যাবিক্স-এজেন্টদের / var / রানের অভ্যন্তরে একটি সাবফোল্ডার প্রয়োজন, তবে সাম্প্রতিক বিতরণগুলি / var / রানের জন্য tmpfs ব্যবহার করছে, সুতরাং ডিরেক্টরিটি পুনরায় বুট থেকে বাঁচতে পারে না। আমি এটিকে / etc / sysconfig / zabbix- এজেন্টযুক্ত ফাইল তৈরি করে সমাধান করেছি:

install -g zabbix -o zabbix -d /var/run/zabbix

1
-m 0700উদাহরণস্বরূপ যোগ করুন । উত্তর।
রিং Ø

3
নোটটি installডিরেক্টরিটি তৈরি করে এবং তারপরে মালিক / গোষ্ঠী পরিবর্তন করে। সুতরাং একটি সংক্ষিপ্ত সময় রয়েছে যেখানে ডিরেক্টরিটিতে নির্দিষ্ট মালিক / গোষ্ঠী নেই। কিছু প্রসঙ্গে এটি গুরুত্বপূর্ণ হতে পারে।
ব্যবহারকারী368507

এটি আলপাইন লিনাক্সে কাজ করে
মরিসিও সানচেজ

3

ইউনিক্সের মতো সিস্টেমে সদ্য নির্মিত ফাইল এবং ডিরেক্টরিগুলি প্রক্রিয়াটির মালিকের মালিকানাধীন যা সেগুলি তৈরি করেছে। স্ট্যান্ডার্ড ইউটিলিটিগুলির সাধারণত তৈরি ফাইলগুলির মালিক পরিবর্তন করার বিকল্প নেই।

মূল ব্যবহারকারীটির ইউআইডি এবং জিআইডি সহ ভেরিয়েবলগুলি

আপনি যদি কিছু আদেশ বারবার চালনা করেন তবে আপনি ভেরিয়েবলগুলি ব্যবহার করতে পারেন $SUDO_UIDএবং $SUDO_GIDযে ব্যবহারকারীকে অনুরোধ করেছিলেন তা উল্লেখ করতে পারেন sudo:

sudo sh -c "do_something ; chown -R \"\$SUDO_UID:\$SUDO_GID\" files and directories"

স্বয়ংক্রিয়ভাবে তৈরি ফাইল এবং ডিরেক্টরিগুলির তালিকা পাওয়া

আপনি যদি তৈরি (এবং সম্ভবত সংশোধিত) ফাইল এবং ডিরেক্টরিগুলির তালিকা পেতে চান তবে স্বয়ংক্রিয়ভাবে straceনজরদারি চালিয়ে আপনার কমান্ডগুলি চালিত করতে পারেন যা ptrace()সিস্কলের উপর ভিত্তি করে :

strace -qqfe open,creat,mkdir,link,symlink,mknod -o '|your_processing_of_strace_output' do_something

অথবা আপনি উদাহরণস্বরূপ ইনস্টলওয়াচ ব্যবহার করতে পারেন যা LD_PRELOADপ্রক্রিয়া ভিত্তিক ।

আরও কাজের জন্য ধারণা

উপরে উল্লিখিত পদ্ধতিগুলির উপর ভিত্তি করে একটি সরঞ্জাম তৈরি করা সম্ভব যা স্বয়ংক্রিয়ভাবে মালিককে পরিবর্তন করতে পারে এবং সম্ভবত তৈরি / পরিবর্তিত ফাইলগুলির অধিকার অ্যাক্সেস করতে পারে। ব্যবহার হিসাবে সহজ হতে পারে:

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