Linux'taki bir dizindeki “s” iznini nasıl temizlerim?


24

İzin maskesini gösteren bir dizin var drwsrwsr-x. İzinleri sıfırlamaya çalıştığımda 755S hala duruyor.

"S" nedir ve neden izinleri 775 ( drwxrwxr-x) olarak değiştiremiyorum?

Yanıtlar:


25

Kullanıcı ve grup sütununda "yürütme" konumunda gördüğünüz s, SetUID (Uygulamada Kullanıcı Kimliğini Ayarla) ve SetGID (Uygulamada Grup Kimliğini Ayarla) bitleridir.

Unix dosya izinleri aslında 4 basamaklı sekizli bir sayıdır. SUGO

  • S SetUID (4), SetGID (2) ve "Sticky" (1) bitlerini kontrol eder
  • U kontrolleri Dosya sahibi için Read (4) / Write (2) / Execute (1) bit
  • G , dosya grubu için Okuma / Yazma / Çalıştırma bitlerini kontrol eder
  • O herkes için Okuma / Yazma / Çalıştırma bitlerini kontrol eder.

Setuid bitlerini dizininizden chmod ug-s directoryveyachmod 0755 directory

Daha fazla bilgi için man sayfasına bakın chmodve setuid biti hakkında bu Wikipedia sayfasını .



"drwsrwsrwx nedir?" <- tekrar kontrol edin
Hrvoje Špoljar

6
chmod 0755yok değil , en azından Linux üzerinde, setuid bit temizleyin. Şu anda diğer sistemlerde test ediyorum.
FUZxxl

1
POSIX, chmodoktamal modda setuid, setgid ve vtx bitlerini temizleyip temizlemediğini düzenli dosyalar dışındaki dosya türleri için tanımlandığını söylüyor .
FUZxxl

2
Linux'ta bir dizindeki setuid bitini temizlemek için chmod 00755; bkz unix.stackexchange.com/q/393531/46851
Roger Lipscombe

23

setuid ve setgid

setuid ve setgid (yürütme sırasında ayarlanan kullanıcı kimliği için kısa ve yürütme sırasında ayarlanan grup kimliği için kısa), kullanıcıların çalıştırılabilir dosyanın sahibinin veya grubunun izinleriyle çalıştırılabilir çalıştırmasına izin veren Unix erişim hakları bayraklarıdır. Bilgisayar sistemindeki kullanıcıların belirli bir görevi gerçekleştirmek için geçici olarak ayrıcalıklı programları çalıştırmalarına izin vermek için sıklıkla kullanılırlar. Verilen kullanıcı kimliği veya grup kimliği ayrıcalıkları her zaman yükseltilmezken, en azından belirlidir.

Setuid ve setgid bitlerini sayısal olarak kaldırmak için, bit desenini öneklemelisiniz 0(örneğin: 0775olur 00775).

Setuid ve setgid silmek için çalıştırın:

chmod 00775 path

veya

chmod a-st path


1
Bir dizin aynı zamanda unix dosya sistemindeki bir dosyadır, ooshro'nun söylediği tamamen doğrudur
lynxman

Evet hepsi bir dosya, ancak açıklama drwxrwxr-x gibi görünen bir şey yürütmediğiniz gibi uygun değil: |
Hrvoje Špoljar

Unix'te, inode izinleri alan şeydir.
chris

2
GNU chmod, bir octamal modla çalıştırdığınızda, dizinlerdeki setuid ve setgid baytlarını silmez. POSIX bu davranışı sağlar.
FUZxxl

2

Ooshro'nun cevabını ekleyerek ...

Bir dizinde suid veya sgid izinleri kullanırsanız, o dizinde oluşturulan tüm dosyalar söz konusu dizinle aynı sahibine (suid) veya gruba (sgid) sahip olacaktır.

Bunu evim Samba payı için kullanıyorum. Temel dizin, hiç kimseye ve grup olimpiyatına ait değildir ve izinler 2770'tir. Dolayısıyla, bu dizinin altında bir şey okumak veya yazmak için olimpiyat grubunun içinde olmanız gerekir ve bu olimpiyatın altındaki her şeyin sahibi olacağından emin olmanız gerekir. . Ayrıca, Samba'nın, izinleri ağacın en altından doğru tutması için 2770 direk ve 660'lık bir dosya maskesi kullanacak şekilde yapılandırılmış olmasına da sahibim.

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.