سؤال

هل يواجه SCP مشكلة في تعيين أذونات الملفات أو هل أخطأت في تكوين الخادم الخاص بي؟

تم التحديث (19/مارس/09):في الحقيقة:لا توجد مشكلة - لقد أسأت فهم طريقة عمل الأذونات - فهي لا تتغير عندما تتغير محتويات الملف

حالة الاستخدام:

يوجد ملف على الخادم أريد تحريره يسمى "importantFile.txt".يحتوي الملف على مالك ومجموعة "رئيسية":

ls -l importantFile.txt:
-rw-rw-r--  1 master master     7 Mar 18 08:11 importantFile.txt

يُدعى "العبد" ولكن لحسن الحظ، أنا في المجموعة "السيد" حتى أتمكن من تعديل الملف كما أراه مناسبًا.ومع ذلك، أنا عبد كسول ولا أستطيع أن أزعج نفسي بتحرير الملف على الخادم، أفضل تحرير الملف على جهازي المحلي وإرساله إلى الخادم:

echo "bored slave info" > importantFile.txt
scp importantFile.txt slave@theServerAddress:/pathToFile/importantFile.txt

إذا قمت بذلك، فسيتم تحميل محتويات الملف على الخادم بشكل جيد ويتم تحديث الطابع الزمني للملف ولكن أذونات الملف لا تتغير، ولا يزال الملف مملوكًا لـ "الرئيسي".هذه مشكلة لأنه إذا قام "العبد" بتحميل محتوى سيئ، فلن يعرف أحد أن "العبد" هو الذي تسبب في المشكلة، وسيبدو "السيد" مذنبًا.

ربما لا بد لي من تعيين umask؟إذا كان الأمر كذلك حيث؟لقد قمت بتجربة .bash_profile دون نجاح ولم أجد أي شيء على Google حول umask في /etc/ssh/sshd_config.

هل كانت مفيدة؟

المحلول

لا يوجد شيء خاص بخصوص scp - حاول تسجيل الدخول إلى الخادم كعبد، وتحرير الملف باستخدام محرر النصوص المفضل لديك...ستجد نفس السلوك يحدث...الكتابة إلى ملف لا تجعلك مالك الملف.


مثال:

كجذر

#cd /tmp
#mkdir fubar
#chgrp vboxusers fubar
#cd fubar/
#touch testfile
#chgrp vboxusers testfile 
#chmod g+w . testfile
#ls -al
total 16
drwxrwxr-x  2 root vboxusers  4096 2009-03-19 10:30 .
drwxrwxrwt 15 root root      12288 2009-03-19 10:29 ..
-rw-rw-r--  1 root vboxusers     0 2009-03-19 10:30 testfile
#echo foo > testfile 
#ls -al
total 20
drwxrwxr-x  2 root vboxusers  4096 2009-03-19 10:30 .
drwxrwxrwt 15 root root      12288 2009-03-19 10:29 ..
-rw-rw-r--  1 root vboxusers     4 2009-03-19 10:30 testfile

كمستخدم (في مجموعة vboxusers)

>cd /tmp/fubar
>ls -al
total 20
drwxrwxr-x  2 root vboxusers  4096 2009-03-19 10:30 .
drwxrwxrwt 15 root root      12288 2009-03-19 10:29 ..
-rw-rw-r--  1 root vboxusers     4 2009-03-19 10:30 testfile
>echo bar >> testfile 
>ls -al
total 20
drwxrwxr-x  2 root vboxusers  4096 2009-03-19 10:30 .
drwxrwxrwt 15 root root      12288 2009-03-19 10:29 ..
-rw-rw-r--  1 root vboxusers     8 2009-03-19 10:31 testfile
>vim testfile
>ls -al
total 20
drwxrwxr-x  2 root vboxusers  4096 2009-03-19 10:31 .
drwxrwxrwt 15 root root      12288 2009-03-19 10:31 ..
-rw-rw-r--  1 root vboxusers    12 2009-03-19 10:31 testfile
>cat testfile 
foo
bar
baz

نصائح أخرى

يجب عليك حذف الملف للكتابة فوقه.يعتمد ما إذا كنت قادرًا على القيام بذلك على أذونات الدليل وملكيته.لا يمكن الاستيلاء على ملكية ملف موجود بالفعل.يتم تطبيق إذن الكتابة الذي لديك فقط على محتويات الملف.

يبدو أنه يمكنك تكوين كيفية تعامل Emacs مع هذا من خلال backup-by-copying-when-mismatch متغير (راجع دليل Emacs أو اكتب C-h-v backup-by-copying-when-mismatch في ايماكس).

لقد قدمت في الواقع أ تقرير الشوائب حول هذا، لأنني اعتقدت أنه كان خطأ في الصعلوك.

لقد أساءت فهم طريقة عمل الملفات، فتعديل محتويات الملف لا يغير الملكية أو المجموعة.

لماذا الارتباك؟ إيماكس - كلما كنت أقوم بتحرير ملف كنت أستخدم Emacs ويقوم Emacs بتغيير المالك والمجموعة إلى المستخدم الحالي.يقوم بذلك لأنه يقوم بإنشاء ملف نسخة احتياطية في الوقت المناسب عن طريق نقل "اسم الملف" إلى "اسم الملف ~" وإنشاء ملف جديد يسمى "اسم الملف" - لأنه ملف جديد، فهو يتمتع بأذونات ملف المستخدمين الحاليين.أعتقد أن هذا هو 1up إلى VI المشجعين؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top