Linux, Tại sao tôi không thể viết mặc dù tôi có quyền nhóm?


108

Tôi muốn tạo một tệp trong thư mục thuộc sở hữu của nhóm nhân viên mà tôi là thành viên. Tại sao tôi không thể làm điều này?

bmccann@bmccann-htpc:~$ ls -l /usr/local/lib/R/
total 4
drwxrwsr-x 2 root staff 4096 2010-07-31 16:21 site-library
bmccann@bmccann-htpc:~$ id -nG bmccann
bmccann adm dialout cdrom plugdev staff lpadmin admin sambashare
bmccann@bmccann-htpc:~$ touch /usr/local/lib/R/site-library/tmp
touch: cannot touch `/usr/local/lib/R/site-library/tmp': Permission denied

1
Bạn có quyền ghi vào thư mục site-library trong / usr / local / lib / R không?
Ted Hopp

1
Không phải lệnh đầu tiên tôi đã đăng cho thấy rằng nhóm có quyền ghi?
Ben McCann

3
Đã có site-library/tmptệp / thư mục hiện tại chưa?
Jeremiah Willcock

Câu trả lời:


200

Bạn có đăng xuất và đăng nhập lại sau khi thực hiện thay đổi nhóm không? Xem:
Câu trả lời của Người dùng cấp cao liên quan đến lỗi quyền cảm ứng


1
Nếu tôi mở một cửa sổ đầu cuối mới, đó không phải là một quy trình mới sao? Tôi khá chắc chắn rằng tôi đã thử điều đó và nó không hoạt động buộc tôi phải đăng xuất.
Ben McCann

7
@Ben: Bắt đầu một tiến trình mới kế thừa uid / gids từ cha của nó. Bạn cần một chương trình ưu tiên (ví dụ như login, su, vv) để thực sự thiết lập uid / gids.
ephemient

4
Nếu đó là bất tiện để logout / login trở lại, như ngụ ý của các bên trên, bạn có thể làm điều này trong một thiết bị đầu cuối: su your-user-name. Vỏ kết quả sẽ có các quyền nhóm được cập nhật của bạn.
TJ Crowder

2
Cảm ơn vì điều đó! Tôi đã dành khoảng 15 phút để vén tóc tìm hiểu lý do tại sao tôi không có quyền nhóm trong một thư mục.
Jeremy Spencer

2
Nó đòi hỏi khởi động lại cho tôi trên Ubuntu 16.04 x64 không chỉ logout và đăng nhập một lần nữa
Kartikey Tanna

15

Tại sao người dùng Linux không thể chỉnh sửa tệp trong nhóm mà anh ta là thành viên?

Tôi đang sử dụng Ubuntu 12.04 và gặp sự cố tương tự khi người dùng không thể ghi vào tệp mà anh ta được phép truy cập nhóm. Ví dụ:

whoami                                        //I am user el
  el                                            

touch /foobar/test_file                       //make a new file

sudo chown root:www-data /foobar/test_file    //User=root  group=www-data

sudo chmod 474 /foobar/test_file              //owner and others get only read, 
                                              //group gets rwx


sudo groupadd www-data                        //create group called www-data    

groups                                        //take a look at the groups and see
 www-data                                     //www-data exists.

groups el                                     //see that el is part of www-data
  el : www-data                               

Khởi động lại thiết bị đầu cuối ngay bây giờ để đảm bảo người dùng và nhóm đã có hiệu lực. Đăng nhập với tư cách el.

vi /foobar/test_file                          //try to edit the file.

Tạo ra cảnh báo:

Warning: W10: Warning: Changing a readonly file"

Gì? Tôi đã làm mọi thứ đúng tại sao nó không hoạt động?

Câu trả lời:

Khởi động lại toàn bộ máy tính. Việc dừng thiết bị đầu cuối không đủ để khắc phục những sự cố này.

Tôi nghĩ điều xảy ra là apache2 cũng sử dụng nhóm dữ liệu www, vì vậy, tác vụ bằng cách nào đó đã ngăn người dùng và nhóm được thực thi chính xác. Bạn không chỉ phải đăng xuất mà còn phải dừng và khởi động lại bất kỳ dịch vụ nào sử dụng nhóm của bạn. Nếu khởi động lại không thành công, bạn đã gặp vấn đề lớn hơn.


1
"Những vấn đề lớn hơn" là gì?
Ejaz

13

Tôi đã gặp vấn đề tương tự, hãy kiểm tra xem thư mục có thêm quy tắc ACL nào hay không!

Nếu bạn có thể thấy + (dấu cộng) khi liệt kê thư mục, điều đó có nghĩa là nó có các quy tắc truy cập đặc biệt. Ví dụ:

[user_in_apache_group@web02 html]$ ls -l
total 16
drwxrwxr-x  16 apache apache 4096 Sep  4 13:46 ilias
drwxrwxr-x+ 15 apache apache 4096 Sep  4 13:46 ilias5

Xem quyền:

[user_in_apache_group@web02 html] getfacl ilias5
# file: ilias5
# owner: apache
# group: apache
user::rwx
user:user_in_apache_group:r-x
group::rwx
mask::rwx
other::r-x

Vì vậy, điều đó có nghĩa là người dùng của tôi (user_in_apache_group) không có quyền ghi cho thư mục đó.

Giải pháp là những gì @techtonik đã nói, thêm quyền ghi cho người dùng:

[user_in_apache_group@web02 html]$ sudo setfacl -m u:user_in_apache_group:rwx ./ilias5

Kiểm tra lại quyền:

[user_in_apache_group@web02 html] getfacl ilias5
...
user:user_in_apache_group:rwx
...

Hy vọng nó giúp. ;)


8

Sử dụng Linux ACL (danh sách kiểm soát truy cập) - đây là phiên bản chi tiết hơn của hệ thống quyền,

setfacl -R -m 'group:staff:rwx' -m 'd:group:staff:rwx' /usr/local/lib/R/

Điều này đặt cả quyền hoạt động cho thư mục và quyền mặc định cho bất kỳ thứ gì được tạo bên trong.

Điều này không hoạt động mà không cần đăng nhập lại nếu bạn vừa thêm mình vào staffnhóm, nhưng bạn có thể đặt quyền chỉ cho chính mình cho phiên hiện tại.


5

Tôi đã gặp sự cố khi người dùng không thể truy cập /foo/bar/bazthư mục ngay cả khi anh ta có quyền vì anh ta không có quyền truy cập vào barthư mục.


-2

Kiểm tra xem thư mục mẹ của bạn có quyền không trước khi bạn thêm nội dung vào tệp đó

sudo chmod -R 777 /yourDir/file.log
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.