Sao chép quyền của chủ sở hữu tệp vào quyền của nhóm


25

Làm cách nào tôi có thể sao chép quyền của người dùng / chủ sở hữu tệp sang quyền của nhóm?

Ví dụ: nếu quyền là 755 tôi muốn chúng trở thành 775.

Làm rõ: 755 -> 775 123 -> 113 abc -> aac

Tiền thưởng nếu tôi có thể làm điều này đệ quy cho tất cả các tệp trong một thư mục.

(Nghĩa là, đối với mỗi tệp, quyền của người nợ được sao chép vào quyền của nhóm. Mỗi tệp có thể có quyền khác nhau.)


Tôi không chắc chắn để hiểu. Bạn muốn thay đổi quyền trên thư mục / tệp để cho phép nhóm giống như chủ sở hữu? Nếu vậy, sau đó chỉ chơi xung quanh với chmod. Tôi có thể chỉ cho bạn một ví dụ rõ ràng hơn trong câu trả lời của tôi nếu bạn muốn.
Anarko_Bizounours

Trong câu trả lời của bạn, nó thay đổi tất cả các tệp thành 775. Điều gì xảy ra nếu một trong các tệp ban đầu có quyền 123? Sau đó, nó phải được đổi thành 113 chứ không phải 775. Sự cho phép tôi sử dụng trong câu hỏi (755) chỉ là một ví dụ, sự cho phép thực tế có thể là bất cứ điều gì. Tôi muốn làm điều này theo chương trình.
Annan

số sau chmod chỉ là sự cho phép số. Nếu bạn thực hiện một ls -l và bạn nhận được 452 dưới dạng cho phép, thì chỉ cần chmod 442 / you_directory /. Tất cả mọi thứ được giải thích (khá tốt) trong trang wikipedia tôi liên kết với câu trả lời của tôi.
Anarko_Bizounours

đây có vẻ là một câu hỏi trùng lặp của serverfault.com/questions/241082/ từ
ShoeLace

Câu trả lời:


54

bạn có thể sử dụng g=uđể làm cho nhóm perms giống như perm người dùng

ls -l file
-rw------- 1 user users 0 Jun 27 13:47 file

chmod g=u file

ls -l file
-rw-rw---- 1 user users 0 Jun 27 13:47 file

và đệ quy

chmod -R g=u *

hoặc cho một số tập tin

find /patch/to/change/perms -name '*.txt' -exec chmod g=u {} +

trang chủ chmod là bạn của bạn.


cách tốt để làm điều đó! Tôi đã quên thủ thuật này mỗi lần xD
Anarko_Bizounours

Chưa bao giờ nghe về thủ thuật này! Sử dụng một.
skinp

g=uThủ thuật đó chỉ giúp tôi tiết kiệm hàng giờ quản lý tẻ nhạt. Có +1 ;-)
Edurne Pascual

tôi đã có một loạt các tập tin thuộc sở hữu của người dùng mà tôi muốn chia sẻ với tất cả người dùng. vì vậy tôi đã làmchmod -R ag=u ${path_to_directory}
Trevor Boyd Smith

2

Như mọi người đã nói, việc thay đổi quyền truy cập tệp có thể nguy hiểm. Với sức mạnh to lớn đi kèm với trách nhiệm lớn lao, và tất cả các shizas đó. Đây là câu trả lời của tôi:

tập tin / usr / bin / photo:

#!/bin/sh

f=$1
p=`stat -c "%a" $f`
chmod ${p:0:1}${p:0:1}${p:2:1} $f

Ví dụ sử dụng:

find . -exec otog {} \;

Sử dụng stat để có quyền số, sử dụng chmod để thay đổi quyền.

Tái bút: Xin vui lòng xem câu trả lời của Iain để có cách làm tốt hơn!


1
Không phải là $ {p: 0: 1} $ {p: 0: 1} $ {p: 2: 1}?
minaev

À bạn đúng rồi đấy. Nó kỳ lạ làm việc theo cách của tôi là tốt.
Annan

Ai đó hãy giải thích về downvote?
Annan

Không phải tôi, nhưng tôi muốn bồi thường. Đây là một giải pháp tốt mà hoạt động.
minaev

1
Tôi muốn nói rằng an toàn hơn khi sử dụng các lệnh nguy hiểm trong các tập lệnh hơn là thủ công. Trong các kịch bản thử nghiệm tốt, đó là :). Mặt khác, chmodkhông phải là một lệnh thực sự, thực sự nguy hiểm. So với rm, ý tôi là, rsync --deletehoặc một số người khác.
minaev

1

Trước hết, bạn cần liệt kê quyền của bạn.

ls -l /your_directory/
-rwxr-xr-x  1   57 Jul  3 10:13  file1
-rwxr-xr-x  1   57 Jul  3 10:13  file2

để dịch kết quả trong phép số, hãy sử dụng: R = 4, W = 2, X = 1.

Vì vậy, trên 2 tập tin này, sự cho phép là 755.

Sau khi nhận được quyền của bạn, bạn phải sử dụng lệnh chmod để thay đổi quyền theo cách bạn muốn:

chmod 775 /your_directory/

Lệnh này sẽ chỉ thay đổi quyền trên thư mục, nhưng không phải trên tệp bên trong.

Nếu bạn cũng muốn thay đổi quyền bên trong, thì hãy thực hiện lệnh này:

chmod 775 /your_directory/ -fR

-FR sẽ buộc đệ quy. (chỉ sử dụng nếu bạn chắc chắn về quyền bạn muốn áp dụng và tệp bên trong thư mục.)

Nếu bạn chỉ muốn thay đổi quyền trên file1 thì:

chmod 775 /your_directory/file1

Và đó là cách các cookie vỡ vụn!

/! \ Hãy cẩn thận, việc sử dụng sai lệnh này có thể phá hủy tất cả các quyền hệ điều hành của bạn và dẫn đến sự cố của nó. /! \

ps: nhìn vào đó để tìm hiểu thêm thông tin về chmod.

Hy vọng điều này sẽ giúp bạn.


Tôi đã thêm một số làm rõ cho câu hỏi. Các tệp có thể không có quyền của chủ sở hữu giống nhau, vì vậy nếu sử dụng chmod, phải có cách trích xuất quyền của chủ sở hữu trước khi chuyển nó sang chmod?
Annan

thật khó khăn, nhưng lệnh ls -l phải cho phép bạn, nhưng nó sẽ ở dạng này -rw-rw-r--. Vấn đề là bạn KHÔNG PHẢI sử dụng tập lệnh để làm việc với chmod! trước tiên bạn phải có được tất cả các quyền ra khỏi tập tin. Sau đó chmod để có quyền tốt cho nhóm. Tôi sẽ chỉnh sửa câu trả lời của mình để thể hiện một ví dụ.
Anarko_Bizounours
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.