Câu hỏi Làm cách nào để đặt chmod cho một thư mục và tất cả các thư mục con và tệp của nó? [đã đóng]


Có cách nào để đặt không chmod 755 cho /opt/lampp/htdocs và tất cả nội dung của nó bao gồm cả thư mục con và tệp?

Ngoài ra, trong tương lai, nếu tôi tạo thư mục hoặc tệp mới bên trong htdocs, các quyền có thể tự động được đặt thành 755?

Tác vụ này, nhưng chỉ dành cho thư mục này:

chmod 775 /opt/lampp/htdocs

1299
2017-09-18 02:31


gốc


Bạn đang cố gắng để kịch bản lệnh? Có lẽ bash, csh hay zsh? - jww
Bạn có định viết chmod 75 /opt/lampp/htdocs hoặc điều đó thực sự là chmod 755 /opt/lampp/htdocs? - HelloGoodbye
Thực tế là câu hỏi được bình chọn cao thứ 4 về Linux là "đóng cửa như chủ đề ngoài" là vui nhộn. Ai nhưng một lập trình viên sẽ quan tâm đến chmod? Làm thế nào là off-topic này? Tại sao "quyền", "thư mục" và "cmod" thậm chí là thẻ nếu chúng không có chủ đề? - Arthur Dent
@ArthurDent, bởi vì câu hỏi này (trong khi hoàn toàn hợp lệ và hữu ích) là phù hợp hơn với một trang web tập trung vào hệ thống SE, chẳng hạn như SuperUser hoặc ServerFault. Nó không liên quan rõ ràng đến lập trình. - timelmer
@timelmer Chắc chắn, nhưng tôi hỏi lại, tại sao thẻ "quyền", "thư mục" và "cmod"? Khi nào cmod sẽ được sử dụng 'rõ ràng' cho lập trình? - Arthur Dent


Các câu trả lời:


Các câu trả lời khác là chính xác, trong đó chmod-R 755 sẽ thiết lập này như là quyền cho tất cả các tập tin và thư mục trong cây. Nhưng tại sao bạn muốn? Nó có thể có ý nghĩa đối với các thư mục, nhưng tại sao thiết lập bit thực thi trên tất cả các tệp?

Tôi nghi ngờ những gì bạn thực sự muốn làm là thiết lập các thư mục để 755 và hoặc là để lại các tập tin một mình hoặc đặt chúng vào 644. Đối với điều này, bạn có thể sử dụng find chỉ huy. Ví dụ:

Để thay đổi tất cả các thư mục thành 755 (drwxr-xr-x):

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

Để thay đổi tất cả các tệp thành 644 (-rw-r--r--):

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

2261
2017-07-16 20:42



Bất cứ ai quan tâm để giải thích những gì {} \; vào cuối dòng có nghĩa là gì? - Nilzor
@Nilzor chmod 644 {} \; chỉ định lệnh sẽ được thực hiện bởi findcho mỗi tệp. {} được thay thế bởi đường dẫn tệp và dấu chấm phẩy biểu thị kết thúc của lệnh (được thoát, nếu không nó sẽ được diễn giải bởi trình bao thay vì find). - tobbez
"nhưng tại sao đặt bit thực thi trên tất cả các tệp" Tại sao không? Tôi mới dùng Ubuntu / Linux ... - FlavorScape
@FlavorScape Womble đang thiết lập bit thực thi độc quyền trên các thư mục được trả lại bằng cách tìm. Sự cho phép thực hiện trên một thư mục cho phép một lớp người dùng liệt kê các nội dung của thư mục đó và đến cd vào nó. Nói chung bạn muốn cả hai r và x trên một thư mục cho nó để có thể truy cập cho bạn, mặc dù có thể có trường hợp cạnh kỳ lạ, nơi bạn muốn thiết lập chỉ có một hay khác. Xem hướng dẫn này để biết thêm thông tin: nixsrv.com/llthw/ex23 - Alexandr Kurilin
Ngoại trừ sleepynate, mọi phản hồi bị bỏ qua để giải quyết khía cạnh của câu hỏi của anh ta liên quan đến việc thiết lập quyền cho các tệp / thư mục được tạo trong Tương lai. - JGarrido


Kiểm tra tùy chọn -R

chmod -R <permissionsettings> <dirname>

Trong tương lai, bạn có thể tiết kiệm rất nhiều thời gian bằng cách kiểm tra trang người đàn ông trước:

man <command name>

Vì vậy, trong trường hợp này:

man chmod

638
2017-09-18 02:36



đó là gì man? - Adam
nó là viết tắt của trang hướng dẫn sử dụng và là một lệnh linux hiển thị trang người dùng cho một lệnh (hầu hết các lệnh linux đều có một trang hướng dẫn). hãy thử người đàn ông hoặc người đàn ông. - Steve Robillard
Điều này đã không làm việc cho tôi trong Terminal trong Mac OS X. Có tôi đã làm "chmod -R <permissionsettings> <dirname> *" và nó hoạt động. - Einar Ólafsson
Tôi nghĩ rằng bây giờ, nó thực sự nhanh hơn để đăng ở đây hoặc sử dụng Google hơn là sử dụng man. Đặc biệt cho một cái gì đó như grep nếu bạn mới man có thể mất rất nhiều thời gian để tìm các ví dụ trong tài liệu, nhưng Google hoặc SO cung cấp các ví dụ trong vòng vài giây. - ely
Đối với hồ sơ, những người không quen thuộc với Linux có thể không quen thuộc với con người. Tôi chỉ biết về sự tồn tại của nó, nhưng cố gắng tìm ra cách sử dụng nó sẽ yêu cầu một cuộc phiêu lưu google trong và của chính nó. Có thể là một liên doanh đáng giá, nhưng bạn nên nhận ra rằng tôi đã tìm thấy bài viết này RẤT qua google và nó trả lời câu hỏi EXACT tôi đã hỏi. Tài nguyên, bạn của tôi. Tài nguyên là vô giá. Và bạn có thể nghĩ rằng điều này là vô nghĩa và rằng anh ta nên chỉ cần kiểm tra người đàn ông, nhưng điều này đã giúp tôi và hàng trăm người khác (nghìn thậm chí). Vì vậy, hãy xem xét điều đó. - Soundfx4


Nếu bạn muốn đặt quyền trên tất cả các tệp a+rvà tất cả thư mục đến a+xvà thực hiện điều đó một cách đệ quy thông qua cây thư mục con hoàn chỉnh, sử dụng:

chmod -R a+rX *

Các X (đó là vốn X, không nhỏ x!) được bỏ qua cho các tập tin (trừ khi chúng được thực thi cho một ai đó đã có) nhưng được sử dụng cho các thư mục.


288
2018-01-31 20:39



Câu trả lời chính xác. Chỉ cần lưu ý rằng * sẽ không khớp với các tệp ẩn (tên bắt đầu bằng dấu chấm). Nó có thể có ý nghĩa hơn, sau đó, để sử dụng. (cho thư mục hiện tại). - Aaron Adams
Đây là câu trả lời chính xác. Đối với trường hợp của tôi, tôi muốn đặt tất cả các thư mục thành 775 và tất cả các tệp 664. @ Câu trả lời tuyệt vời của Pete đã dẫn tôi đến chmod tài liệu, nơi tôi đã tìm ra tôi có thể sử dụng chmod -R g+wX .. Bravo! - chadoh
Điều này sẽ không xóa x trên các tệp nếu chúng đã có. - Benoit Duffez
Trong trường hợp nó không hoàn toàn rõ ràng, chữ hoa X có nghĩa là "làm cho tất cả các thư mục thực thi" (nhưng không phải tập tin). - Matt Browne
@BenoitDuffez nếu mục tiêu của bạn cũng là xóa bit thực thi khỏi tệp, bạn có thể kết hợp các chỉ thị, như "a-x + rX" để xóa "x" khỏi mọi thứ và sau đó đặt "r" thành mọi thứ và "x" thành chỉ các thư mục . - nunks


Bạn có thể dùng -R với chmod cho truyền tải đệ quy của tất cả các tệp và thư mục con.

Bạn có thể cần sudo vì nó phụ thuộc vào ĐÈN đang được cài đặt bởi người dùng hiện tại hoặc một người dùng khác:

sudo chmod 755 -R /opt/lampp/htdocs

103
2018-04-19 15:43



Bằng cách nào đó, sudo chmod 755 -R /directory không làm việc nhưng sudo chmod -R 755 /directory đã làm. Kỳ dị. Tôi đang sử dụng Mac os x bằng cách này. - Sélom
Điều này là chính xác trong kinh nghiệm của tôi. Cờ phải xuất hiện trực tiếp sau chmod, không phải bất cứ nơi nào trong chuỗi. - orionrush
Lệnh viết trên là sai. Lệnh đệ quy chính xác là: sudo chmod -R 755 / opt / lampp / htdocs Lưu ý: -R phải là trước 755 - Sandip Patel - SM
Giải pháp này đang làm việc tốt cho Redhat. Cảm ơn! - Lavande


Để đặt thành tất cả các thư mục con (đệ quy) sử dụng -R

chmod 755 /folder -R

Và sử dụng umask để đặt mặc định thành thư mục / tệp mới     cd / thư mục     umask 755


65
2017-09-18 02:35



KHÔNG đặt umask tại 755! Bạn sẽ không thể liệt kê, đọc hoặc sử dụng bất kỳ tệp hoặc thư mục nào mà bạn tạo! - sleepynate
Ý của bạn là umask 022? - Xkeeper
điều này đặt tất cả là 755, bao gồm cả tệp.! - Patrick Mutwiri
@sleepynate Tại sao? - Nic Hartley
@sleepynate Bạn đang nói về cái quái gì vậy? 755 có nghĩa là chủ sở hữu có thể đọc, viết và thực hiện, và tất cả những người dùng khác có thể đọc và thực thi, nhưng không ghi vào đối tượng - svin83


chmod 755 -R /opt/lampp/htdocs sẽ đệ quy thiết lập quyền. Không có cách nào để đặt quyền cho tệp tự động chỉ trong thư mục này được tạo sau khi bạn đặt quyền, nhưng bạn có thể thay đổi quyền truy cập tệp mặc định trên toàn hệ thống bằng cách đặt umask 022.


46
2017-09-18 02:38



câu trả lời của sleepynate là câu trả lời đúng. Các poster hỏi hai câu hỏi: 1) Làm thế nào để sửa chữa các điều khoản trên các tập tin và thư mục, và 2) làm thế nào để tôi thay đổi mặc định (có nghĩa là "tương lai" tập tin). Như nate đã nói, đầu tiên là với "chmod", và thứ hai là với "umask". Tôi cũng thêm rằng không có cách nào để thay đổi umask chỉ trên 1 thư mục ... umask là "tất cả hoặc không có gì" cho mỗi người dùng. Tuy nhiên không có gì ngăn bạn tạo ra một người dùng mới, những người chia sẻ các nhóm với bạn, để bạn chỉ có thể 'sudo -u someuser [tạo tập tin] ". Đó là suy nghĩ bên ngoài hộp một chút, nhưng đó là một cách giải quyết tốt. - Crossfit_and_Beer
Tôi nghĩ bạn đúng, nhưng không thể inherit là một giải pháp cho nhiều trường hợp hoặc nó sẽ làm việc với NTFS-3G độc quyền? - Sebastian Schlicht


Lệnh đệ quy đúng là:

sudo chmod 755 -R /opt/lampp/htdocs

-R: thay đổi mọi thư mục con bao gồm thư mục hiện tại


41
2017-09-18 02:40



hi bạn chắc chắn về thư mục hiện tại bạn là một mặc dù con đường? - shareef