Komut dosyasının Linux'taki bir dizindeki dosyalara okuma erişimi nasıl verilir?


0

Belirli bir dizindeki kopyaları silen bir kabuk betiği oluşturdum. Belirli bir dosya okunamıyorsa “erişim reddedildi” ve ardından dosya adı yazdırılır. Koşmaya çalıştığımda ./filename (Kabuk dosyasının adı), belirli bir dizinin altındaki tüm dosyalar, yanındaki “erişim reddedildi” ile yazdırılır.

Verilen izin:

drwxr-xr-x     .
drwx------ 24  ..
-rw-r--r--  1  file1.cpp
-rw-r--r--  1  file2.cpp
-rwxr-xr-x  1  file3.cpp
-rwxr-xr-x  1  file2.txt
-rw-r--r--  1  script

Komutu çalıştırdığımda çıktı ./script dizinin altında:

/file1.cpp: permission denied 
/file2.cpp: permission denied 
/file3.cpp: permission denied 
/file2.txt: permission denied 
/script.sh: permission denied

Tam olarak hangi komut / satır hata mesajlarını verir? Kullanıcınız okudu mu & amp; dosyalara yazma izni & amp; Dizin?
Xen2050

Hata mesajının söylediğinin farkında mısın? /file1.cppBaşka bir deyişle, geçerli dizinde değil, kök dizinde bir dosya var mı?
RalfFriedl

Geçerli dizinde. Kontrol etmek için ls komutunu kullandım.
user9081274

Kullandığım komut bir dizinin altındaki ./script.
user9081274

Ben de denedim. / Script dizini1, hala şans değil
user9081274

Yanıtlar:


1

Kodu görmeden söylemek zor, ama senaryonun muhtemelen böyle bir şey yapıyor.

cp "$file" "$dir/$file"

nerede $file ayarlandı file1.cpp ve $dir boş olarak ayarlanmış. Yani yapıyor

cp file1.cpp /file1.cpp

ve tabii ki, oluşturma izniniz yok. /file1.cpp (yani, kök dizinde dosya oluşturmak için).

Böylece çözüm $dir.


0

Bir betiğe, yalnızca kullanıcılara ve gruplara erişim hakları veremezsiniz.

Komut dosyasını çalıştıran kullanıcı dosyalara erişemiyorsa, komut dosyasını erişimi olan bir kullanıcı olarak çalıştırın.

Dizinde, bu komutları çalıştırın ve soruyu çıktı ekleyin:

id
ls -la

Sonra betiği normalde çalıştırdığınız şekilde çalıştırın ve betiğin çıktısını ekleyin.


Tamam, senaryoyu erişebilen bir kullanıcı olarak çalıştırdım. Hala şans yok
user9081274

2
Lütfen tam hata mesajlarını ve dosyaların ve dizinlerin tam izinlerini soruya ekleyin.
RalfFriedl

betiğimi yürütmek için hangi komutu çalıştırmalıyım? Komut dizim bir dizini girdi olarak alır ve kopyaları kaldırarak söz konusu dizini değiştirir. Şu anda, sadece dizinin içindeki ./file.sh komutunu çalıştırıyorum. Çalışmıyor.
user9081274

/file1.cpp: izin reddedildi /file2.cpp: izin reddedildi /file3.cpp: izin reddedildi /file2.txt: izin reddedildi /file3.cpp: izin reddedildi /file2.txt: izin reddedildi /script.sh: izin reddedildi
user9081274

Bu benim aldığım çıktı
user9081274
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.