Linux, Grup izinlerim olmasına rağmen neden yazamıyorum?


108

Üyesi olduğum personel grubuna ait bir dizinde bir dosya oluşturmak istiyorum. Bunu neden yapamıyorum?

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
/ Usr / local / lib / R'deki site kitaplığı dizinine yazma izniniz var mı?
Ted Hopp

1
Gönderdiğim ilk komut grubun yazma ayrıcalıklarına sahip olduğunu göstermiyor mu?
Ben McCann

3
Zaten bir site-library/tmpdosya / dizin var mı?
Jeremiah Willcock

Yanıtlar:


200

Grup değişikliklerini yaptıktan sonra oturumu kapatıp tekrar oturum açtınız mı? Bakınız:
Dokunma izinleri hatasını içeren Süper Kullanıcı yanıtı


1
Yeni bir terminal penceresi açarsam, bunun yeni bir süreç olduğu düşünülmemeli mi? Bunu denediğimden oldukça eminim ve beni çıkış yapmaya zorlamadı.
Ben McCann

7
@Ben: Yeni bir işlem başlatmak, uid / gids'i üstünden miras alır. Sen (örneğin ayrıcalıklı program gerekiyor login, suaslında uid / gid'leri ayarlamak için, vs.).
ephemient

4
Yukarıda ima gibi, rahatsız edici yapmak için çıkış / giriş geri konusuysa, bir terminal yapabilirsiniz: su your-user-name. Ortaya çıkan kabuk, güncellenmiş grup izinlerine sahip olacaktır.
TJ Crowder

2
Bunun için teşekkürler! Bir klasörde neden grup izinlerine sahip olmadığımı anlamaya çalışmak için yaklaşık 15 dakika saçımı çekip harcadım.
Jeremy Spencer

2
Benim için Ubuntu 16.04 x64'te yeniden başlatılması gerekiyor, sadece oturumu kapatıp tekrar giriş yapmak değil
Kartikey Tanna

15

Linux kullanıcısı neden parçası olduğu gruptaki dosyaları düzenleyemiyor?

Ubuntu 12.04 kullanıyorum ve bir kullanıcının grup erişimine izin verilen bir dosyaya yazamamasıyla aynı sorunu yaşadım. Örneğin:

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                               

Kullanıcıların ve grupların etkili olduğundan emin olmak için terminali şimdi yeniden başlatın. El olarak giriş yapın.

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

Uyarıyı Oluşturur:

Warning: W10: Warning: Changing a readonly file"

Ne? Her şeyi doğru yaptım neden işe yaramıyor?

Cevap:

Bilgisayarı tamamen yeniden başlatın. Terminali durdurmak, bu sorunları çözmek için yeterli değildir.

Sanırım apache2 de www-data grubunu kullanıyor, bu yüzden görev bir şekilde kullanıcıların ve grupların doğru şekilde uygulanmasını engelliyordu. Sadece oturumu kapatmak zorunda değilsiniz, aynı zamanda grubunuzu kullanan tüm hizmetleri durdurmalı ve yeniden başlatmalısınız. Yeniden başlatma bunu anlamazsa, daha büyük sorunlarınız var.


1
"Daha büyük sorunlar" nedir?
Ejaz

13

Aynı sorunu yaşadım , klasörde daha fazla ACL kuralı olup olmadığını kontrol et!

Klasörü listelediğinizde + (artı işareti) görüyorsanız, bunun özel erişim kuralları olduğu anlamına gelir. Örneğin:

[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

İzni görüntüleyin:

[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

Bu, kullanıcımın (user_in_apache_group) bu klasör için yazma iznine sahip olmadığı anlamına gelir.

Çözüm, @techtonik'in söylediği gibi, kullanıcı için yazma izni ekleyin:

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

İzni tekrar kontrol edin:

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

Umarım yardımcı olur. ;)


8

Linux ACL (erişim kontrol listeleri) kullanın - izin sisteminin daha ayrıntılı bir sürümüdür,

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

Bu, hem dizin için etkin hakları hem de içinde oluşturulan her şey için varsayılan hakları belirler.

Kendinizi staffgruba yeni eklediyseniz bu , yeniden oturum açmadan çalışmaz , ancak mevcut oturum için yalnızca kendiniz için izin ayarlayabilirsiniz.


5

Bir kullanıcı, /foo/bar/bazdizine erişimi olmadığı için izinleri olmasına rağmen dizine erişemediğinde bir sorun yaşadım bar.


-2

Bu dosyaya içerik eklemeden önce üst dizininizin izni olup olmadığını kontrol edin

sudo chmod -R 777 /yourDir/file.log
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.