Setgid dizininin amacı nedir?


12

Setgid'in nasıl çalıştığını biliyorum, ancak neden tasarlandığını bilmiyorum, hangi sorunları çözdüğünü gösteren bir örnek var mı?

Yanıtlar:


19

Bir setgid dosyası / ikili açıkça yararlı olmayabilir, ancak kesinlikle setgid bit dizinlerde uygulanan çok yararlı buluyorum. Her biri kendi unix (izin) gruplarına sahip farklı çalışma gruplarının parçaları olduğunuzu varsayarsak. Şüphesiz, setgid bitini proje klasörlerine koymak, yeni dosyalar oluştururken doğru grup sahipliğinin uygulanmasını sağlamak ve böylece o proje grubundaki meslektaşlarınızın bu dosyalara erişmesine izin vermek ister misiniz?


2
CVS kullanıyorsanız, muhtemelen bu nedenle çok fazla bilgi sahibi olursunuz (depodaki dizinler ayarlanmamışsa, farklı kullanıcılar dosyaları kontrol etmeye ve teslim etmeye çalıştıkça birçok izin hatası alırsınız)
Yangın Söndürme

Evet haklısınız, diğer kullanıcılar sizin oluşturduğunuz dosyaları setgid dizinlerinde paylaşabilir (okuyabilir), ancak grup yazılabilir (g + w) izni setgid dizininde devralınmaz ve bu nedenle başka bir kullanıcı bir alt setgid dizininde sizin tarafınızdan oluşturulan dizin, bu onun kullanımını sınırladı. Ve bu sorum var, CVS paylaşım-okuma sorununu çözüyor ancak yeni oluşturulan dizinlere paylaşım-yazma değil. ??
Xiè Jìléi

1
Bu nedenle uygun umask ayarlarını da kullanmak istersiniz. Örneğin, umask 007, kullanıcı ve grup için tam izinler bırakacak, ancak diğerleri için hiçbir izin bırakmayacaktır.
andol

13

Ana kullanım, bir dosya ağacının grup sahibini korumaktır:

[lockie@bubbles tmp]$ mkdir dir1 && touch dir1/file && mkdir dir1/dir
[lockie@bubbles tmp]$ mkdir dir2 && chgrp staff dir2 && chmod 2755 dir2 && touch dir2/file && mkdir dir2/dir
[lockie@bubbles tmp]$ ls -al dir1
total 32
drwxrwxr-x   3 lockie  lockie   4096 Dec 13 19:32 .
drwxrwxrwt 125 root root 20480 Dec 13 19:32 ..
drwxrwxr-x   2 lockie  lockie   4096 Dec 13 19:32 dir
-rw-rw-r--   1 lockie  lockie      0 Dec 13 19:32 file
[lockie@bubbles tmp]$ ls -al dir2
total 32
drwxr-sr-x   3 lockie  staff  4096 Dec 13 19:32 .
drwxrwxrwt 125 root root  20480 Dec 13 19:32 ..
drwxrwsr-x   2 lockie  staff  4096 Dec 13 19:32 dir  < note new dir is g+s, owned by "staff" group, so the setgid behaviour acts recursively
-rw-rw-r--   1 lockie  staff     0 Dec 13 19:32 file < note new file is owned by "staff" group
[lockie@bubbles tmp]$

Bu, farklı kullanıcıların bir dizin altında dosya / dizin oluşturacağı / düzenleyeceği ortamlarda yararlı olma eğilimindedir: Tüm dosyalar / dizinler aynı grubu paylaştığında, tüm kullanıcılar dosyaları / dizinleri düzenleyebilir / değiştirebilir (izinlere izin verilir): Bu durumları önler "xyz abc dosyası var, bu yüzden düzenleyemiyorum" gibi.

Setgid'i bu şekilde kullanmanın bir alternatifi grpid dosya sistemi bağlama seçeneğidir.

Adam montajından:

grpid veya bsdgroups / nogrpid veya sysvgroups

Bu seçenekler, yeni oluşturulan bir dosyanın hangi grup kimliğini alacağını tanımlar. Grpid ayarlandığında, oluşturulduğu dizinin grup kimliğini alır; aksi takdirde (varsayılan) dizinde setgid biti ayarlanmadığı sürece geçerli işlemin fsgid'ini alır, bu durumda gid üst dizinden alınır ve dizinin kendisi ise setgid bitini alır.

Etkinleştirildiğinde, grpid bağlantılı bir dosya sisteminde oluşturulan dosyalar / dizinler de üst dizinin grubunu devralır:

[lockie@bubbles ~]$ mount | grep /home
/dev/mapper/VolGroup00-home on /home type ext3 (rw,grpid)
[lockie@bubbles ~]$ mkdir dir3 && touch dir3/file && mkdir dir3/dir
[lockie@bubbles ~]$ ls -al dir3
total 12
drwxrwxr-x  3 lockie users 4096 Dec 13 19:37 .
drwxrwxr-x 12 lockie users 4096 Dec 13 19:37 ..
drwxrwxr-x  2 lockie users 4096 Dec 13 19:37 dir < inherited "users" group from parent dir
-rw-rw-r--  1 lockie users    0 Dec 13 19:37 file  < inherited "users" group from parent dir
[lockie@bubbles ~]$

Ben grpid seçeneğini kullanarak buldum uygun şekilde insan hatası olasılığını azaltır (çünkü dosya sistemi işi dir izinleri ne olursa olsun yapar).

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.