Tại sao chmod + w không cấp phép ghi cho người khác (o)


17

Khi tôi chạy, chmod +w filenamenó không cho phép ghi other, nó chỉ cho phép ghi usergroup.

Sau khi thực hiện lệnh này

chmod +w testfile.txt

chạy ls -l testfile.txtin

-rw-rw-r-- 1 ravi ravi 20 Mar 10 18:09 testfile.txt

nhưng trong trường hợp +r+xnó hoạt động đúng.

Tôi không muốn sử dụng chmod ugo+w filename.



1
Nếu bạn không muốn sử dụng ugo, hãy sử dụng a.
muru

Vâng, nhưng tôi chỉ muốn biết tại sao +wkhông làm việc.
Ravi Sevta

Đó là lý do tại sao tôi để lại hai bình luận.
muru

@muru. Bạn khẳng định trong askubuntucâu trả lời của mình rằng bạn tham chiếu ở trên rằng "Hành vi này là bắt buộc POSIX, và do đó, không phải là lỗi". Xin lưu ý rằng văn bản Sử dụng Ứng dụng POSIX là không quy tắc và do đó không bắt buộc bởi POSIX.
fpmurphy

Câu trả lời:


25

Tình hình cụ thể của bạn

Trong tình huống cụ thể của bạn, chúng tôi có thể đoán rằng hiện tại của bạn umask002(đây là một giá trị mặc định phổ biến) và điều này giải thích cho sự ngạc nhiên của bạn.

Trong tình huống cụ thể trong đó umaskgiá trị là 002 (tất cả các số bát phân).

  • +rphương tiện ugo+r002 & 444000, cho phép tất cả các bit được thiết lập
  • +xphương tiện ugo+x002 & 111000, cho phép tất cả các bit được thiết lập
  • nhưng +wphương tiện ug+w002 & 222002, mà ngăn cản "o" chút để được thiết lập.

Những ví dụ khác

  • Với umask 022 +wý nghĩa u+w.
  • Với umask 007 +rwxý nghĩa ug+rwx.
  • Với umask 077 +rwxý nghĩa u+rwx.

Điều gì sẽ phù hợp với mong đợi của bạn

Khi bạn thay đổi umaskthành 000, bằng cách thực hiện

umask 000

trong thiết bị đầu cuối của bạn, sau đó

chmod +w file

sẽ đặt quyền cho ugo + w.

Lưu ý bên

Theo đề xuất của ilkkachu, lưu ý rằng điều umask 000đó không có nghĩa là mọi người đều có thể đọc và ghi tất cả các tệp của bạn.

Nhưng umask 000có nghĩa là mọi người có quyền truy cập vào bất kỳ tài khoản người dùng nào trên máy của bạn (có thể bao gồm các chương trình chạy dịch vụ máy chủ ofc) có thể đọc và ghi tất cả các tệp bạn tạo với mặt nạ đó đang hoạt động và không thay đổi (nếu chuỗi chứa thư mục lên đến root cũng cho phép chúng).


3
umask 000 có nghĩa là tất cả mọi người có quyền truy cập vào tài khoản người dùng trên máy của bạn (có thể bao gồm các chương trình chạy dịch vụ máy chủ) có thể đọc và ghi tất cả các tệp bạn tạo với mặt nạ đó đang hoạt động và không thay đổi, rõ ràng
StarWeaver

3
"+ r có nghĩa là ugo = r" - không, không, điều đó có nghĩa là đặt rbit cho các bên mà ô cho phép. Điều này được nêu rõ trong hướng dẫn sử dụng, ví dụ như GNU chmod và FreeBSD chmod, cũng như tiêu chuẩn. Tương tự cho +x. Đối với +wbạn là đúng, đối với trường hợp cụ thể đó.
ilkkachu

3
Ngoài ra, đặt umask thành 0 không có nghĩa là mọi người đều có thể đọc và ghi tất cả các tệp của bạn, vì nhiều ứng dụng tạo các tệp đặc biệt riêng tư với chế độ 0600, có nghĩa là nhóm và những người khác không có quyền truy cập, bất kể ô nào.
ilkkachu

@ilkkachu + r có nghĩa là ugo = r, điều này có liên quan đến tình huống được mô tả trong câu hỏi. Đó không phải là chung chung.
Prvt_Yadav

2
@Debian_yadav, đó chính xác là vấn đề: đó umasklà một phần quan trọng trong cách +rcư xử, không phải là một sidenote. Bên cạnh đó, ngay cả giả sử umask 002, chmod +rkhông có nghĩa chmod ugo=r, nó có nghĩa làchmod ugo+r
ilkkachu

23

Với:

chmod +<perms>

các perm được thêm vào người dùng , nhómnhững người khác nhưng với umask vẫn được áp dụng. Nó đảm bảo tệp không được cấp nhiều quyền hơn tệp mới được tạo.

Nếu bạn muốn thêm perm cho người dùng , nhóm và người khác bất kể ô, hãy sử dụng

chmod a+<perms>

viết tắt của

chmod ugo+<perms>

Nó có nghĩa là + x và a + x không bằng nhau.
Prvt_Yadav

1
Tôi muốn có các liên kết: man7.org/linux/man-pages/man1/chmod.1.html Nếu không có cái nào trong số này được đưa ra, hiệu ứng sẽ như thể (a) được đưa ra, nhưng các bit được đặt trong ô không bị ảnh hưởng. Nhận
tehnicaorg

0

Bạn cần chỉ định người mà bạn sẽ cấp quyền cho, chẳng hạn như other, bằng cách sử dụngchmod o+w testfile.txt


1
có, nhưng tôi nghĩ +wcho phép tất cả mọi người (người dùng, nhóm và người khác).
Ravi Sevta

Để cấp quyền cho tất cả người dùng, hãy sử dụng chmod a+w testfile.txt. Sử dụng ucho người dùng, gcho nhóm, ocho người khác và acho tất cả.
Jaken551

nếu chmod a+w filename, chmod +w filenamechmod ugo+w filenamelà thay thế cho nhau thì tại sao không sử dụng+w
Ravi Sevta
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.