it-swarm.asia

كيف يمكنني تغيير أذونات مجلد وكل مجلداته الفرعية وملفاته في خطوة واحدة في Linux؟

أرغب في تغيير أذونات أي مجلد وكل مجلداته الفرعية وملفاته في خطوة واحدة (الأمر) في Linux.

لقد جربت بالفعل الأمر أدناه لكنه يعمل فقط للمجلد المذكور:

chmod 775 /opt/lampp/htdocs

هل هناك طريقة لتعيين chmod 755 لـ /opt/lampp/htdocs وكافة محتوياته بما في ذلك المجلدات الفرعية والملفات؟

أيضًا ، في المستقبل ، إذا قمت بإنشاء مجلد أو ملف جديد داخل htdocs ، فكيف يمكن تعيين أذونات ذلك تلقائيًا إلى 755؟

لقد ألقيت نظرة على هذا الرابط أيضًا:

http://stackoverflow.com/questions/3740187/how-to-set-default-chmod-in-linux-terminal

1546
Adam

الإجابات الأخرى صحيحة ، حيث أن chmod -R 755 ستعين هذه الأذونات على جميع الملفات والمجلدات الفرعية في الشجرة. ولكن لماذا على الأرض تريد ؟ قد يكون من المنطقي بالنسبة للأدلة ، ولكن لماذا ضبط بت التنفيذ على جميع الملفات؟

أظن أن ما تريد فعله حقًا هو تعيين الأدلة إلى 755 وإما ترك الملفات بمفردها أو تعيينها على 644. لهذا ، يمكنك استخدام الأمر find. فمثلا:

لتغيير كل الدلائل إلى 755 (drwxr-xr-x):

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

لتغيير كل الملفات إلى 644 (-rw-r--r--):

find /opt/lampp/htdocs -type f -exec chmod 644 {} \;
2608
WombleGoneBad

تحقق من الخيار- R

chmod -R <permissionsettings> <dirname>

في المستقبل ، يمكنك توفير الكثير من الوقت عن طريق التحقق من الصفحة الأولى أولاً:

man <command name>

لذلك في هذه الحالة:

man chmod
709
Steve Robillard

إذا كنت ترغب في تعيين أذونات على جميع الملفات إلى a+r ، وجميع الأدلة إلى a+x ، والقيام بذلك بشكل متكرر من خلال شجرة الدليل الفرعي كاملة ، استخدم:

chmod -R a+rX *

يتم تجاهل X (الذي هو X ، وليس صغير x!) للملفات (ما لم تكن قابلة للتنفيذ لشخص ما بالفعل) ولكن يتم استخدامه للأدلة.

340
Pete

يمكنك استخدام -R مع chmod لاجتياز العودية لجميع الملفات والمجلدات الفرعية.

قد تحتاج إلى Sudo لأنه يعتمد على LAMP يتم تثبيته بواسطة المستخدم الحالي أو آخر:

Sudo chmod 755 -R /opt/lampp/htdocs
122
ravi ranjan

لتعيين جميع المجلدات الفرعية (بشكل متكرر) استخدم -R

chmod 755 /folder -R

واستخدم umask لتعيين الافتراضي إلى مجلدات/ملفات جديدة/umask 755

71
Topera

الأمر العودية الصحيح هو:

Sudo chmod 755 -R /opt/lampp/htdocs

-R: قم بتغيير كل مجلد فرعي بما في ذلك المجلد الحالي

60
Pramendra Gupta

سوف chmod 755 -R /opt/lampp/htdocs تعيين الأذونات بشكل متكرر. لا توجد طريقة لتعيين أذونات الملفات تلقائيًا في هذا الدليل فقط الذي تم إنشاؤه بعد تعيين الأذونات ، لكن يمكنك تغيير أذونات الملفات الافتراضية على مستوى النظام عن طريق تعيين umask 022.

49
sleepynate

قد ترغب في النظر هذه الإجابة التي قدمها nik على المستخدم الخارق واستخدام "chmod واحد" لجميع الملفات/المجلدات مثل هذا:

chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)
23
Iam Zesh

استعمال:

Sudo chmod 755 -R /whatever/your/directory/is

ومع ذلك ، كن حذرا مع ذلك. يمكن أن يؤذيك حقًا إذا قمت بتغيير أذونات الملفات/المجلدات غير الصحيحة.

20
Nate Starner

فيما يلي طريقة أخرى لتعيين الدلائل إلى 775 والملفات إلى 664.

find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)

قد يبدو طويلاً ، لكنه رائع لثلاثة أسباب:

  1. قم بمسح نظام الملفات مرة واحدة فقط بدلاً من مرتين.
  2. يوفر تحكمًا أفضل في كيفية الملفات تتم معالجتها مقابل كيفية الدلائل يتم التعامل معها. يكون هذا مفيدًا عند العمل مع أوضاع خاصة مثل sticky bit ، والتي ربما تريد تطبيقها على الدلائل وليس على الملفات.
  3. يستخدم تقنية مباشرة من صفحات man (انظر أدناه).

لاحظ أنني لم أؤكد فرق الأداء (إن وجد) بين هذا الحل وبين استخدام أمرَي find find (كما في حل Peter Mortensen). ومع ذلك ، رؤية مثال مماثل في الدليل أمر مشجع.

مثال من صفحة man find:

find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)

Traverse the filesystem just once, listing setuid files and  direc‐
tories into /root/suid.txt and large files into /root/big.txt.

في صحتك

19
chrisfargen

يعمل chmod -R 755 directory_name ، ولكن كيف يمكنك الاحتفاظ بملفات جديدة إلى 755 أيضًا؟ تصبح أذونات الملف هي الإذن الافتراضي.

11
Sanchit Gupta

تريد التأكد من أن الملفات والدلائل المناسبة هي chmod-ed/أذونات تلك المناسبة. لجميع الدلائل التي تريدها

find /opt/lampp/htdocs -type d -exec chmod 711 {} \;

ولجميع الصور ، JavaScript ، CSS ، HTML ... حسنًا ، يجب ألا تنفذها. لذلك استخدم

chmod 644 img/* js/* html/*

ولكن بالنسبة إلى كل رمز المنطق (على سبيل المثال PHP الكود) ، يجب عليك تعيين أذونات بحيث لا يمكن للمستخدم رؤية هذا الرمز:

chmod 600 file
10
NikolaiDante

بالنسبة لنظام التشغيل Mac OS X 10.7 (Lion) ، يكون:

chmod -R 755 /directory

ونعم ، كما يقول الآخرون ، كن حذرًا عند القيام بذلك.

7
wmartin

أعتقد أن آدم كان يسأل عن كيفية تغيير قيمة umask لجميع العمليات التي ترتبط بالعمل على دليل /opt/lampp/htdocs.

يستخدم قناع وضع إنشاء ملف المستخدم (umask) لتحديد إذن الملف للملفات التي تم إنشاؤها حديثًا. يمكن استخدامه للتحكم في إذن الملف الافتراضي للملفات الجديدة.

لذلك ، إذا كنت ستستخدم نوعًا من برنامج ftp لتحميل الملفات إلى /opt/lampp/htdocs ، فأنت بحاجة إلى تكوين خادم ftp الخاص بك لاستخدام umask الذي تريده.

إذا تم إنشاء ملفات/أدلة على سبيل المثال بواسطة php ، فأنت بحاجة إلى تعديل كود php

<?php
umask(0022);
// other code
?>

إذا كنت ستقوم بإنشاء ملفات/مجلدات جديدة من جلسة bash ، فيمكنك تعيين قيمة umask في ملف تعريف Shell الخاص بك ~/.bashrc أو يمكنك إعداد umask في ملف /etc/bashrc أو /etc/profile لجميع المستخدمين. أضف ما يلي إلى الملف: umask 022

Sample umask Values and File Creation Permissions
If umask value set to   User permission     Group permission     Others permission
000                         all              all                   all
007                         all              all                   none
027                         all          read / execute            none

ولتغيير أذونات الملفات التي تم إنشاؤها بالفعل ، يمكنك استخدام find. أتمنى أن يساعدك هذا.

6
Viktor

هناك إجابتان لإيجاد الملفات وتطبيق chmod عليها. أول واحد هو find الملف وتطبيق chmod كما يجد (كما هو مقترح بواسطةWombleGoneBad).

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

الحل الثاني هو إنشاء قائمة بجميع الملفات باستخدام الأمر find وتزويد هذه القائمة بالأمر chmod (كما هو مقترح بواسطةlamgesh).

chmod 755 $(find /path/to/base/dir -type d)

يعمل كلا الإصدارين في Nice طالما أن عدد الملفات التي يتم إرجاعها بواسطة الأمر find صغير. الحل الثاني يبدو رائعا للعين وأكثر قابلية للقراءة من الحل الأول. إذا كان هناك عدد كبير من الملفات ، فسوف يعرض الحل الثاني خطأ: Argument list too long.

لذلك اقتراحي هو

  1. استخدم chmod -R 755 /opt/lampp/htdocs إذا كنت تريد تغيير أذونات جميع الملفات والدلائل مرة واحدة.
  2. استخدم find /opt/lampp/htdocs -type d -exec chmod 755 {} \; إذا كان عدد الملفات التي تستخدمها كبيرًا جدًا. يبحث الخيار -type x عن نوع محدد من الملفات فقط ، حيث يتم استخدام d للعثور على الدليل و f للملف و l للرابط.
  3. استخدم chmod 755 $(find /path/to/base/dir -type d) خلاف ذلك
  4. من الأفضل استخدام أول واحد في أي حالة
4
Prabhu

انه بسيط جدا.

في محطة الذهاب إلى مدير الملفات. مثال: Sudo nemo. انتقل /opt/ ثم انقر فوق خصائص → إذن . ثم أخرى . أخيرًا ، قم بالتغيير لإنشاء وحذف وحفظ الملف للقراءة والكتابة والنقر فوق زر تطبيق ... والعمل.

2
Debian.