Quyền bị từ chối thay đổi gid (nhóm) của tệp tôi sở hữu


17

Có vẻ như tôi vẫn bỏ lỡ một số điều về cách hoạt động của quyền. Tôi đang trên một hệ thống debian 7 btw. bây giờ tôi có tập tin này mà tôi đã tải xuống và nó thuộc về myuser:myuser, đó là cả người dùng và nhóm được đặt cho tôi. Nó cũng nằm trong $HOMEthư mục của tôi vì đó là nơi tôi đã tải nó xuống.

Càng xa càng tốt. Bây giờ tôi muốn chia sẻ tệp này với một số người dùng khác của máy tính và tôi muốn chuyển quyền sở hữu nhóm của tệp thành nhóm "người dùng". tuy nhiên điều đó không thành công:

nass@quarx:~/xmas_carol$ chgrp -R users * 
chgrp: changing group of movie.mov': Operation not permitted

Và nội dung của thư mục là:

-rwxr-xr-x 1 nass nass 2482411461 Feb  6 03:57 movie.mov

Tôi mờ nhạt về những gì đang xảy ra với các quyền. Ai đó có thể giải thích


/xmas_carolsamba / nfs gắn kết?
Rahul Patil

Giải pháp là setfacl(nếu hệ thống tập tin có ACL). xem unix.stackexchange.com/questions/101263/ Cách
ctrl-alt-delor

Tôi đã có cùng một lỗi cho đến khi tôi nhận ra rằng tôi đã THÊM bản thân mình vào nhóm đó. Nói cách khác, tôi đã phải đăng xuất, đăng nhập lại, để những thay đổi có hiệu lực.
Jonathan

Câu trả lời:


22

Người dùng của bạn có thể không phải là thành viên của usersnhóm, vì vậy bạn không có quyền đưa tệp cho nhóm đó. Để minh họa:

$ groups
terdon sudo netdev fuse vboxsf vboxusers

$ ls -l file
-rw-r--r-- 1 terdon terdon 604 Feb  6 03:04 file
$ chgrp users file
chgrp: changing group of ‘file’: Operation not permitted
$ chgrp vboxusers file
$ ls -l file
-rw-r--r-- 1 terdon vboxusers 604 Feb  6 03:04 file

Hành vi này được đề cập trong thông số kỹ thuật POSIX :

Chỉ chủ sở hữu của tệp hoặc người dùng có đặc quyền phù hợp mới có thể thay đổi chủ sở hữu hoặc nhóm của tệp.

Một số triển khai hạn chế việc sử dụng chgrp cho người dùng với các đặc quyền phù hợp khi nhóm được chỉ định không phải là ID nhóm hiệu quả hoặc một trong các ID nhóm bổ sung của quy trình gọi.

Lý do chính cho điều này là nếu bạn không phải là thành viên của một nhóm, bạn sẽ không thể sửa đổi những gì nhóm đó có quyền truy cập. Câu trả lời này về chownquyền cũng có liên quan.

Theo truyền thống, trên các hệ thống được chia sẻ, bạn có một usersnhóm mà tất cả người dùng thường xuyên thuộc về và đó là nhóm chính của mỗi người dùng. Bằng cách đó, các tệp được tạo thuộc sở hữu của usersnhóm và tất cả người dùng có thể đọc chúng.

Dù sao, vì đó không phải là cách mà các bản phân phối dựa trên Debian được thiết lập hiện nay, nên cách cấp cho người dùng cụ thể quyền truy cập vào tệp của bạn sẽ là

  1. Thay đổi quyền sở hữu nhóm của tệp / thư mục thành một nhóm mà cả bạn và người dùng khác đều là thành viên của;

  2. Chỉ cần thay đổi quyền của tệp / thư mục phù hợp:

    $ chmod 755 /home/terdon
    $ ls -ld /home/terdon
    drwxr-xr-x 170 terdon terdon 491520 Apr 20 13:43 /home/terdon/
    

    Điều đó sẽ làm cho thư mục có thể truy cập được cho mọi người.


4

Trên các UNIC gần đây (và "gần đây" có ý nghĩa khá rộng ở đây), bạn không thể thay đổi quyền sở hữu nhóm của tệp thành một nhóm mà bạn không phải là thành viên. Các phiên bản kế thừa của các hương vị UNIX khác nhau đã hỗ trợ điều này, cho các trường hợp sử dụng như của bạn, nhưng nó đã chứng tỏ là một vấn đề bảo mật.

Vấn đề về việc có thể thay đổi quyền sở hữu nhóm thành các nhóm nước ngoài là một vấn đề khá nhỏ: Nếu hệ thống tệp mà tệp nằm trong đó có bật hạn ngạch nhóm, người dùng có ý định độc hại có thể chỉ cần điền vào hạn ngạch của nhóm nước ngoài, khiến người dùng không thể với nhóm này là ID nhóm chính để tạo thêm bất kỳ tệp nào. Điều này có thể dễ dàng ảnh hưởng đến ngay cả các quy trình đã chạy và khiến chúng chết vì "toàn bộ đĩa".

Để khắc phục vấn đề của bạn, có (ít nhất) hai khả năng: Thứ nhất, bạn có thể yêu cầu siêu người dùng hệ thống của bạn thêm nhóm mục tiêu dự định vào danh sách các nhóm bổ sung của tài khoản. Tất nhiên điều này chỉ có ý nghĩa hạn chế nếu bạn không có mối quan hệ với nhóm này.

Một cách khác để không cần phải làm cho tệp có thể ghi được trên thế giới, điều chắc chắn là không mong muốn, là sử dụng ACL để cung cấp cho các nhóm dự định đọc và cấp phép ghi:

$ setfacl -m group:thegroupsname:rwx the_file(s)

bạn không phải thực hiện (trên một tệp thông thường) và có lẽ không muốn cho phép viết.
ctrl-alt-delor

2

Nó có thể là do bit bất biến được thiết lập. Lấy danh sách các thuộc tính tệp đang chạy

lsattr /path/to/your/file

nếu tôi xuất hiện, thì thuộc tính bất biến được thiết lập và không ai có thể sửa đổi tệp (ngay cả root).

Để xóa thuộc tính, bạn phải chạy bằng root

chattr -i /path/to/your/file

Để xem thêm các thuộc tính hệ thống tập tin đọc các trang man

man chattr
man lsattr

Điểm hay, nhưng từ câu hỏi tôi cho rằng người hỏi không có quyền siêu người dùng, bạn cần xóa cờ bất biến (ít nhất là trên tất cả các hệ thống tập tin tôi đã đi rất lâu). Ngoài ra, vì anh ta chỉ trích xuất một kho lưu trữ, nên có lẽ đó không phải là vấn đề vì người lưu trữ đã sử dụng sẽ cần phải thiết lập nó (cùng một vấn đề).
Andreas Wiese

0

Nếu bạn đã thêm chính mình vào nhóm ngay bây giờ, hãy chắc chắn đăng xuất, đăng nhập lại để đảm bảo các thay đổi có hiệu lực.

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.