Oluşturma sırasında 751 izinli dosya oluştur


3

Kullanarak Linux dizinde pratik perl komut dosyaları oluşturmaya devam ediyorum. vi <filename> ve gerek chmod 751 <filename> istediğim gibi koşmadan önce. Eminim ki izinlerimi temize çıkarmanın ya da yaratma sırasında onları yapılandırmanın basit bir yolu var, ama buna aşina değilim - ayuda bana bir iyilik.


1
Neden doğru izinlere sahip yeni bir tane oluşturmak için bir komut dosyası yazmıyorsunuz? #!/bash/bin touch $1; chmod 751 $1
beatgammit

Yanıtlar:


2

Basit bir çözüm, bir bash takma adı oluşturmak olacaktır. vi bu da önce dosyayı oluşturur ve sonra açmadan önce izinlerini değiştirir. Gibi kolay hatırlamak bir şey kullanın vix (yürütülebilir bit için x):

Örneğin. (Denenmemiş):

function vix {
        touch $1
        chmod 751 $1
        vi $1
}

Takma vi'nin kendisinin diğer birçok programın doğrudan çağırdığı gibi kötü bir fikir olduğunu unutmayın; bu, sisteminizde sorunlara neden olabilir.


1
Re, "aliasing vi 'nın kendisi, diğer birçok programın doğrudan söylediği gibi kötü bir fikirdir": Takma adlardan veya kabuk işlevlerinden etkilenmezler. ( system() kullanımları sh -c tüm rc dosyalarını yok sayar ve exec*() Kabuğu tamamen atla.) ... edit: görünüşe göre, bir kabuk işlevi verme yapar etkilemek sh -c.
grawity

Betik / programın onu nasıl çağırdığına bağlı, fakat genellikle doğru.
John T

tüm sağlam noktalar - şimdi biliyorum ki gizli bir yeteneğimi kaçırmıyorum vi kendisi. Her iki kökü de kullanırım & amp; user dev bu sistemde - her ikisini de kapsayacak şekilde hangi dosyaları düzenlemeliyim?
mbb

1

751 kodlar için pek bir anlam ifade etmiyor - "diğerlerinin" dosyayı çalıştırmasına izin veriyor, ancak okumuyor. (Almaz betikler için setuid onur, bu imkansız.)

Yeni oluşturulan dosyalar için varsayılan izinleri ayarlamak üzere umask (işlem başına) veya varsayılan ACL'ler (Dizin başına). Ama ikisi de sadece yapabilir Kaldır izin bitleri; hiçbiri eklemek "yürütülebilir" bit, program özellikle istemezse otomatik olarak. (Örneğin, fopen() her zaman 0666 ister, dosyalar için mantıklı olan varsayılan.)

Mjb'nin dosya oluşturan ve derhal izinlerini derhal güncelleyen bir komut dosyası yazma önerisini takip etmeniz gerekecektir. Alternatif olarak, uygulama komut dosyalarınızı çalıştırın. perl foo.plçalıştırılabilir bit gerektirmeyen.


iyi noktalar - sadece bildiğiniz gibi, dosyanın içeriğini okuyabilen w / kodunu paylaşabileceğim iş arkadaşları istemiyorum, ancak çalıştırıp çalıştırmamaları sorun değil. Sonunda 1 ipucu verin.
mbb

@mjb: Dediğim gibi ilk paragraf cevabımdan, bunun nasıl işe yarayacağından emin değilim.
grawity
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.