প্রতীকী লিঙ্কগুলি থেকে মালিকানা কীভাবে পরিবর্তন করবেন?


47

আমি সফট লিঙ্কগুলি তৈরি করে কিছু সমস্যার মুখোমুখি। নিম্নলিখিতটি মূল ফাইলটি।

$ ls -l /etc/init.d/jboss
-rwxr-xr-x 1 askar admin 4972 Mar 11  2014 /etc/init.d/jboss

লিঙ্ক তৈরি ফাইলের মালিকের জন্য কোনও অনুমতি ইস্যুতে ব্যর্থ হচ্ছে:

ln -sv  jboss /etc/init.d/jboss1
ln: creating symbolic link `/etc/init.d/jboss1': Permission denied

$ id
uid=689(askar) gid=500(admin) groups=500(admin)

সুতরাং, আমি লিঙ্কটি sudo সুবিধাগুলি সহ তৈরি করেছি:

$ sudo ln -sv  jboss /etc/init.d/jboss1
`/etc/init.d/jboss1' -> `jboss'

$ ls -l /etc/init.d/jboss1
  lrwxrwxrwx 1 root root 11 Jul 27 17:24 /etc/init.d/jboss1 -> jboss

পরবর্তী আমি নরম লিঙ্কটির মালিকানাটি মূল ব্যবহারকারীর সাথে পরিবর্তন করার চেষ্টা করেছি।

$ sudo chown askar.admin /etc/init.d/jboss1

$ ls -l /etc/init.d/jboss1
lrwxrwxrwx 1 root root 11 Jul 27 17:24 /etc/init.d/jboss1 -> jboss

তবে নরম লিঙ্কের অনুমতি পরিবর্তন হচ্ছে না।

লিঙ্কটির অনুমতি পরিবর্তন করতে আমি এখানে কী মিস করছি?


আপনি কোন অপারেটিং সিস্টেম ব্যবহার করছেন?
mjturner

$ বিড়াল / ইত্যাদি / রেডহিট-রিলিজ রেড হ্যাট এন্টারপ্রাইজ লিনাক্স সার্ভার 6.6 (সান্টিয়াগো)
জামা কুইজ

উত্তর:


68

একটি লিনাক্স সিস্টেমে প্রতীকী লিঙ্কটির মালিকানা ব্যবহার করে chown, ডিফল্টরূপে এটি প্রতীকী লিঙ্কের লক্ষ্য পরিবর্তন করে (যেমন, প্রতীকী লিঙ্কটি যা দেখায় ))

আপনি যদি নিজেরাই লিঙ্কটির মালিকানা পরিবর্তন করতে চান তবে আপনাকে এই -hবিকল্পটি ব্যবহার করতে হবে chown:

-h, --no-dereferences কোনও রেফারেন্সযুক্ত ফাইলের পরিবর্তে প্রতিটি প্রতীকী লিঙ্ককে প্রভাবিত করে (কেবলমাত্র এমন সিস্টেমে দরকারী যা একটি সিমলিংকের মালিকানা পরিবর্তন করতে পারে)

উদাহরণ স্বরূপ:

$ touch test
$ ls -l test*
-rw-r--r-- 1 mj   mj   0 Jul 27 08:47 test
$ sudo ln -s test test1
$ ls -l test*
-rw-r--r-- 1 mj   mj   0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test
$ sudo chown root:root test1
$ ls -l test*
-rw-r--r-- 1 root root 0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test

নোট করুন যে লিঙ্কটির লক্ষ্য এখন রুটের মালিকানাধীন।

$ sudo chown mj:mj test1
$ ls -l test*
-rw-r--r-- 1 mj   mj   0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test

এবং আবারও, লিঙ্কটি test1এখনও testপরিবর্তিত হলেও মূলের মালিকানাধীন ।

$ sudo chown -h mj:mj test1
$ ls -l test*
-rw-r--r-- 1 mj mj 0 Jul 27 08:47 test
lrwxrwxrwx 1 mj mj 4 Jul 27 08:47 test1 -> test

এবং শেষ পর্যন্ত আমরা -hবিকল্পটি ব্যবহার করে লিঙ্কটির মালিকানা পরিবর্তন করি ।


হতাশাবোধক স্পর্শকাতর হিসাবে: নির্দিষ্ট ব্যবহারকারী / গোষ্ঠীর সাথে সরাসরি cp -asবা তাত্পর্য তৈরি করতে পারে installনা ln
উলিচ শোয়ার্জ

7

সিমলিঙ্কগুলিতে অভিনয় করার সময়, আপনাকে অবশ্যই বেশিরভাগ সরঞ্জামগুলি (ডাউন, chmod, ls ...) লিঙ্কটিকে অবজ্ঞা না করার জন্য অবশ্যই বলতে হবে -h: ম্যানপেজে বর্ণিত হিসাবে আপনাকে অবশ্যই প্যারামিটারটি যুক্ত করতে হবে :

-h, --no-dereference
          affect symbolic links instead of any referenced file (useful only on systems that can change the ownership of a symlink)

সুতরাং চেষ্টা কর : sudo chown -h askar.admin /etc/init.d/jboss1


1
সবচেয়ে সংক্ষিপ্ত উত্তর। বেশিরভাগ লোকেরা এখানে আসেন কারণ এটি নিজের দ্বারা আবদ্ধ হয়ে কাজ করে না - "-h" এটিকে ঠিক করে।
আইটোকটপাস

4

আপনি যে ত্রুটিটি উপরে দিয়েছেন তাও নোট করুন

ln: creating symbolic link `/etc/init.d/jboss1': Permission denied

মূল ফাইলটির মালিক ব্যতীত অন্য কেউ সিমলিংকের মালিক হওয়ার কারণে নয়। এটি ব্যবহারকারী সম্ভবত ডিরেক্টরিতে লেখার অ্যাক্সেস না থাকার কারণে হয়ে থাকে /etc/init.d


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