Linux, Mengapa saya tidak dapat menulis meskipun saya memiliki izin grup?

108

Saya ingin membuat file di direktori yang dimiliki oleh grup staf tempat saya menjadi anggotanya. Mengapa saya tidak bisa melakukan ini?

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
Ben McCann
sumber
1
Apakah Anda memiliki izin menulis ke direktori pustaka situs di / usr / local / lib / R?
Ted Hopp
1
Bukankah perintah pertama yang saya posting menunjukkan bahwa grup memiliki hak menulis?
Ben McCann
3
Apakah sudah ada site-library/tmpfile / direktori?
Jeremiah Willcock

Jawaban:

200

Apakah Anda keluar dan masuk kembali setelah membuat perubahan grup? Lihat:
Jawaban Pengguna Super yang melibatkan kegagalan izin sentuh

AdamJonR
sumber
1
Jika saya membuka jendela terminal baru, bukankah itu seharusnya dianggap sebagai proses baru? Saya cukup yakin saya mencobanya dan tidak berhasil memaksa saya untuk keluar.
Ben McCann
7
@ Ben: Memulai proses baru akan mewarisi uid / gids dari induknya. Anda membutuhkan sebuah program istimewa (seperti login, su, dll) untuk benar-benar mengatur uid / Gids.
singkat
4
Jika itu nyaman untuk logout / login kembali, seperti yang tersirat oleh di atas, Anda dapat melakukan ini di terminal: su your-user-name. Shell yang dihasilkan akan memiliki izin grup yang diperbarui.
TJ Crowder
2
Terima kasih untuk ini! Saya menghabiskan waktu sekitar 15 menit untuk mencoba mencari tahu mengapa saya tidak memiliki izin grup dalam folder.
Jeremy Spencer
2
Ini memerlukan restart untuk saya di Ubuntu 16.04 x64 tidak hanya keluar dan masuk lagi
Kartikey Tanna
15

Mengapa pengguna Linux tidak dapat mengedit file dalam grup tempat dia menjadi bagiannya?

Saya menggunakan Ubuntu 12.04 dan memiliki masalah yang sama di mana pengguna tidak dapat menulis ke file kepada siapa dia diizinkan untuk mengakses grup. Sebagai contoh:

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                               

Mulai ulang terminal sekarang untuk memastikan pengguna dan grup telah diterapkan. Login sebagai el.

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

Menghasilkan Peringatan:

Warning: W10: Warning: Changing a readonly file"

Apa? Saya telah melakukan segalanya dengan benar, mengapa tidak berhasil?

Menjawab:

Lakukan reboot komputer secara penuh. Menghentikan terminal tidak cukup untuk memperbaiki masalah ini.

Saya pikir apa yang terjadi adalah apache2 juga menggunakan grup www-data, jadi tugasnya entah bagaimana mencegah pengguna dan grup untuk diterapkan dengan benar. Anda tidak hanya harus keluar, tetapi Anda harus menghentikan dan memulai ulang layanan apa pun yang menggunakan grup Anda. Jika reboot tidak berhasil, Anda punya masalah yang lebih besar.

Eric Leschinski
sumber
1
Apa itu "masalah yang lebih besar"?
Ejaz
13

Saya memiliki masalah yang sama, periksa apakah folder tersebut memiliki aturan ACL lagi atau tidak!

Jika Anda dapat melihat + (tanda tambah) saat Anda mencantumkan folder, itu berarti folder tersebut memiliki aturan akses khusus. Sebagai contoh:

[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

Lihat izin:

[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

Jadi itu berarti pengguna saya (user_in_apache_group) tidak memiliki izin menulis untuk folder itu.

Solusinya adalah apa yang dikatakan @techtonik, tambahkan izin tulis untuk pengguna:

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

Periksa izin lagi:

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

Semoga membantu. ;)

Laszlo Lugosi
sumber
8

Gunakan Linux ACL (daftar kontrol akses) - ini adalah versi sistem izin yang lebih halus,

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

Ini menetapkan hak aktif untuk direktori dan hak default untuk apa pun yang dibuat di dalamnya.

Ini gagal bekerja tanpa masuk kembali jika Anda baru saja menambahkan diri Anda sendiri ke staffgrup, tetapi Anda dapat mengatur izin hanya untuk diri Anda sendiri untuk sesi saat ini.

anatoly techtonik
sumber
5

Saya mengalami masalah ketika pengguna tidak dapat mengakses /foo/bar/bazdirektori bahkan ketika dia memiliki izin karena dia tidak memiliki akses ke bardirektori.

Kolyunya
sumber
-2

Periksa apakah direktori induk Anda memiliki izin sebelum Anda menambahkan konten ke file itu

sudo chmod -R 777 /yourDir/file.log
Mani P
sumber