'chmod g + s' komutu


44

Merhaba chmod g+sKomutun Unix'teki rolünü anlamak istiyorum .

Bu bağlamda ne yaptığını da bilmek istiyorum:

cd /home/canard;
touch un;
chgrp canard .;
chmod g+s .;
touch deux ;

Bunun dışındaki tüm komut rollerini anlıyorum chmod g+sve dosyalar arasındaki unve deuxbu komut dizisinden kaynaklanan farklılıkları bilmek istiyorum .

Yanıtlar:


60
chmod g+s .;

Bu komut, geçerli dizindeki grup kimliğini (setgid) olarak yazılır ..

Bu , geçerli dizinde oluşturulan tüm yeni dosyaların ve alt dizinlerin, dosyayı oluşturan kullanıcının birincil grup kimliğinden ziyade dizinin grup kimliğini devraldığı anlamına gelir . Bu, geçerli dizinde oluşturulan yeni alt dizinlere de aktarılacaktır.

g+s dosyanın grup kimliğini etkiler, ancak sahip kimliğini etkilemez.

Bunun yalnızca yeni oluşturulan dosyalar için geçerli olduğunu unutmayın . ( ) Dizine taşınan dosyalar mvsetgid ayarından etkilenmez. Kopyalanan dosyalar cp -pda etkilenmez.

Örnek

touch un;
chgrp canard .;
chmod g+s .;
touch deux ;

Bu durumda, deuxgruba ait olacak, canardfakat unonu yaratan kullanıcının grubuna ait olacaktır.

Kabuk Komutlarında Noktalı Noktaların Kullanımı Hakkında Küçük Not

cVeya aksine perl, aynı komut satırında izleyen başka bir kabuk komutu varsa, yalnızca bir kabuk komutunun noktalı virgülle izlenmesi gerekir . Bu nedenle, aşağıdaki komut satırını göz önünde bulundurun:

chgrp canard .; chmod g+s .;

Son noktalı virgül gereksizdir ve kaldırılabilir:

chgrp canard .; chmod g+s .

Ayrıca, iki komutu ayrı satırlara yerleştirirsek, kalan noktalı virgül gereksiz olur:

chgrp canard .
chmod g+s .

1
Kopyalanan dosyalar (örneğin cp) aslında yeni yaratılmıştır. Grup iznini devralmazlarsa, kopyalama programı geçici bir dosyaya kopyalamak ve sonra onu hedef dizine taşımak gibi oyunlar oynuyor.
Kaz

1
@Kaz İyi nokta. cp -pSetgid ayarını geçersiz kılan olduğunu açıklığa kavuşturmak için cevabı güncelledim .
John1024

Ancak cp -psetgid ayarını geçersiz kılıyor mu? Var olan her Unix uygulamasında? POSIX, cp -p altındaki kullanıcı kimliğini veya grup kimliğini kopyalayamamanın bir teşhis mesajı ile sonuçlanmayacağının belirtilmediğini belirtti! Bununla birlikte, sırasıyla S_SUID ve S_SGID bitlerinin bu durumda silinmesi gerekir (yani eğer bir dosyanın setuid bob olması durumunda, ancak bob'un sahipliği kopyalanamaz, böylece dosyanın janet'e ait olması, setuid yapmayın janet.)
Kaz

msgstr " cp -psetgid ayarını geçersiz kılıyor mu?" POSIX spesifikasyonuna göre, yapılması gereken budur. Bunu, kullandığım tüm Unix sistemlerinde yapıyor. Sen grup kimliği ne zaman durumunda koruma güvenliğe ne yapılacağı hususunda spec parçası aktardık olamaz çoğaltılabilir. Asla böyle bir "yapamam" durumuna girmedim, ya sen?
John1024

7

Dosya izinlerini chmod komutuyla değiştirebilirsiniz. Unix'te, bir dosyaya farklı erişime sahip olabilecek kişileri belirten dosya izinleri, hem erişim sınıfları hem de erişim türleri tarafından belirlenir. Erişim sınıfları, kullanıcı gruplarıdır ve her birine belirli erişim türleri atanabilir

Unix / Linux dosya erişimi için atanabilecek kullanıcılara ve kullanıcı gruplarına sahiptir

g + s seçenekleri aşağıdaki gibidir:

g - dosya grubundaki diğer kullanıcıların izinleri

s - yürütmede kullanıcı veya grup kimliğini ayarla

örnek bir kullanım:

chmod =rwx,g+s filename

(herkesin belirli bir dosyayı okumasına, yazmasına ve yürütmesine ve ayarlanan grup kimliğini açmasına izin verin)

Bir dosyanın izinlerini ayarlamak / değiştirmek için chmod programını kullanmanız gerekir. Elbette, bir dosyanın sahibi sadece bir dosyanın izinlerini değiştirmek için chmod kullanabilir. chmod aşağıdaki sözdizimine sahiptir: chmod [options] mod dosyası (dosyaları) 'mode' bölümü, argüman olarak takip eden dosya (lar) için yeni izinleri belirtir. Bir mod, hangi kullanıcının izinlerinin değiştirilmesi gerektiğini ve daha sonra hangi erişim türlerinin değiştirilmesi gerektiğini belirtir. Örneğin diyelim: chmod ax socktest.pl

Bu, yürütme bitinin tüm kullanıcılar için (-) temizlenmesi gerektiği anlamına gelir. (sahip, grup ve dünyanın geri kalanı) İzinler, değişiklikten hangi kullanıcıların etkilenmesi gerektiğini belirten bir mektupla başlar, bu aşağıdakilerden herhangi biri olabilir:

u the owner user
g the owner group
o others (neither u, nor g)
a all users

Bunu bir + (set bit) veya - (clear bit) ve değiştirilmesi gereken bit'e karşılık gelen harften oluşan bir değişiklik talimatı izler. Hadi bazı örneklere bakalım:

$ ls -l socktest.pl 
-rwxr-xr-x   1 nick     users         1874 Jan 19 10:23 socktest.pl*

$ chmod a-x socktest.pl 
$ ls -l socktest.pl 
-rw-r--r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

$ chmod g+w socktest.pl 
$ ls -l socktest.pl 
-rw-rw-r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

$ chmod ug+x socktest.pl 
$ ls -l socktest.pl 
-rwxrwxr--   1 nick     users         1874 Jan 19 10:23 socktest.pl*

$ chmod ug-wx socktest.pl 
$ ls -l socktest.pl 
-r--r--r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

Garip sayılar ... chmod 755 somefile gibi şeylerle karşılaşmış olabilirsiniz ve elbette bunun ne olduğunu merak edeceksiniz. Mesele şu ki, bir örnekte bir dosyanın tüm izin şablonunu bu örnekteki gibi bir numara kullanarak değiştirebilirsiniz. Her modun karşılık gelen bir kod numarası vardır ve göreceğimiz gibi hangi sayının herhangi bir moda karşılık geldiğini anlamanın çok basit bir yolu vardır. Mod numarasındaki üç haneden her biri, üç izin üçlüsünden birine karşılık gelir. (u, g ve o) Üçüzdeki her izin biti bir değere karşılık gelir: r için 4, w için 2, x için 1. İzin biti ise, bu değeri izin üçlüsünün numarasına eklersiniz. Temizlenirse, o zaman hiçbir şey eklemezsiniz. (Bazılarınız bunu gerçekten farkedebilir,

Sizin için üçüz: rwx => 4 + 2 + 1 = 7

G'nin üçlüsü: r-x => 4 + 0 + 1 = 5

O için üçlü: r-x => 4 + 0 + 1 = 5

Bu yapan: 755

755, 'Başkalarının bu dosyayı okuyup çalıştırmamasının sakıncası yok, ama yalnızca onu değiştirebilmeliyim' demenin çok basit bir yolu ve 777 'herkesin bu dosyaya tam erişimi var' anlamına geliyor.

mükemmel referans


0

Ls komutunun sonucu umask'a bağlı olacaktır.

g + s dosyaya sgid koyacaktır. Kontrol burada SUID SGID hakkında daha derin bilgi için

Bu nedenle, umask'ınız 022 ise sonuç şöyle bir şey olacaktır:

-rw-r--r--    1 romeo    canard     0 Jan 31 20:58 deux
-rw-r-Sr--    1 romeo    UsersGrp   0 Jan 31 20:58 un

0

Linux'ta ext için varsayılan mount seçeneklerinden biri mi? fs 'nogrpid olduğunu | sysvgroups'. Böylece ilk dokunma un, oluşturma işleminin fsgid'ine eşit olan grup kimliğine sahip bir dosya oluşturur, burada fsgid = egid.

chmod g + s., daha sonra dosya / dir oluşturmayı üst klasörden grup kimliğini devralır ve yaratılan şey bir dir ise, üst + olarak ayarlanmış g + s olur.

Burada dokunuş deux, grup canard ile deux oluşturur.

Mount seçeneği 'grpid | bsdgroups 'bu durumda, yeni dosya / dir oluşturma, grup kimliğini üst klasör için g + s ayarlamadan bile üst klasöründen devralır.

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.