Grup üyesi olarak yazma iznine sahip olduğum bir dosyayı silemiyorum


12
$ touch testfile
$ chmod g+w testfile
$ sudo adduser user2 user1
$ stat -c'%a %A' testfile
664 -rw-rw-r--
$ su user2
Password: 
$ groups
user2 user1
$ rm testfile 
rm: cannot remove `testfile': Permission denied

Ne eksik?

Yanıtlar:


22

Bir dosyayı silmek , dosyanın kendisinde değil, içinde bulunduğu dizinde değişiklik yaptığınız anlamına gelir . Bir dosyayı kaldırabilmek için grubunuzun dizinde rw'ye ihtiyacı var. Bir dosyadaki izinler yalnızca dosyanın kendisinde değişiklik yapmak içindir.

Dosya sisteminin nasıl çalıştığını düşünene kadar bu ilk başta kafa karıştırıcı gelebilir. Bir dosya sadece bir inode'dur ve dizin inode anlamına gelir. Bunu kaldırarak, dizindeki o dosyanın inode referansını kaldırmış olursunuz. Yani dizini değiştiriyorsunuz, dosyayı değil. Başka bir dizindeki bu dosyaya sabit bir bağınız olabilir ve dosyayı gerçekten değiştirmeden yine de ilk dizinden kaldırabilirsiniz, diğer dizinde hala mevcut olacaktır.


775 drwxrwxr-xDizin için alıyorum .
tshepang

1
Dizinin grup sahipliği nedir? Unutmayın, bahsettiğiniz ikinci 7, yöneticinizin grubunun kullanıcı grubunuz değil iznidir.
jsbillings

1
ls -ld /path/to/directoryya da ls -ld .daha önce o dizine cd yapmışsanız.
jsbillings

1
stat, herhangi bir nedenle, grup kimliği 1002'ye bakamaz. stat, / etc / group, NIS, LDAP, vb. içindeki grup kimliğine bakar ve bir hata alır, bu yüzden BİLİNMİYORSANIZ görüyorsunuz. Size getent group 1002daha ayrıntılı bir hata verip vermediğini görmek için koşmayı denerim .
jsbillings

1
Aslında, bu davranışı hiç de kafa karıştırıcı bulmuyorum. Gerçek bir "gerçek hayat" dizininin işleyişi ile aynıdır, bu yüzden buna "dizin" denir , örneğin "klasör" değil, oldukça farklı davranır. Birini telefon rehberimden silmek istersem, evine gidip onu öldürmem, sadece bir kalem alıp numarasına çarparım. IOW: Dizine yazma erişimine ihtiyacım var ve ona erişim yok. Windows'un klasörleri, Unix'in dizinleri vardır ve her ikisi de gerçek hayattaki muadilleri gibi davranır. Karışıklık sadece onları karıştırırsanız olur.
Jörg W Mittag

0

Yalnızca sistem bir dosyayı silebilir ve yalnızca referansı yoksa. Yalnızca bir kullanıcı bir dosyanın bağlantısını kaldırabilir , yani bir dizinden kaldırabilir. Bir dosyanın bağlantısını kaldırmak için bir dizine yazma erişiminizin olması gerekir. Bir dosyanın bağlantısını kaldırmak dosyayı değiştirmez, bu nedenle dosyaya yazma erişimi ilgisizdir.

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.