“sudo cd…” one-liner? [çift]

20

Bazen, kullanıcımın izninin olmadığı bir dizine cd yapmak istiyorum, bu yüzden sudo 'e başvuruyorum.

Açık kod sudo cd somedir çalışmıyor:

$ sudo mkdir test
$ sudo chmod go-rxw test
$ ls -l
drwx------ 2 root     root  [...snip...] test
$ cd test
-bash: cd: test: Permission denied
$ sudo cd test
sudo: cd: command not found

sudo su işlevinin kullanılması:

$ sudo su
# cd test

Bunu tek linere dönüştürmek mümkün mü? (Büyük bir anlaşma değil, sadece boşta merak:)

Denediğim varyasyonlar çalışmadı:

$ sudo "cd test"
sudo: cd: command not found
$ sudo -i cd test
-bash: line 0: cd: test: No such file or directory
$ sudo -s cd test

Sonuncusu bir hata vermez, fakat bu cd, satırın sonundan çıkan yeni bir kabuk içerisindedir, bu yüzden aslında beni hiçbir yere götürmez.

Birisi bana bunun neden oluştuğunu aydınlattırabilir mi? % Co_de%, örneğin, sudo cd öğesi düzgün çalışıyorsa neden% bulunamadı?

    
sordu j-g-faustus 02.01.2011 16:36

2 cevap

21

Teorik olarak, sorun, bir dizinin yürütme haklarına sahip değilseniz, dizinin içeriğini okuyamamalısınız. Şimdi istediğini yapabilirsin:

[email protected]:/$ sudo cd restricted-dir
[email protected]:/restricted-dir$ ls
file1 file2

Gördüğünüz gibi, sudo ayrıcalıklarını kullanarak dizine girdiniz, daha sonra sudo döndüğünde tekrar bir kullanıcı olursunuz ve normalde olmaması gereken bir dizindesiniz.

Teknik olarak sorun şu.

sudo cd restricted-dir

cd bir kabuk değil, bir komuttur.

sudo cd -i restricted-dir

Muhtemelen / root'unuzdasınız, ama bir diğeriyle aynı sorun olacaktır.

sudo cd -s restricted-dir

Yeni bir kök kabuğu, cd'yi dizine açın, sonra kök kabuğundan çıkın ve başladığınız yere dönün.

Sonuç olarak, tek çözüm bir kök kabuğu açmak ve bu dizinde bulunduğunuzda açık tutmaktır.

    
verilen cevap petersohn 02.01.2011 16:52
5
sudo sh -c "cd restricted-dir; some-other-command"

yani.

sudo sh -c "cd /root/restricted-dir; ls -l"

anahtar parça, çoğunlukla, aynı kabuk bağlamında / işleminde bir komut zinciri çalıştırmak için kullandığım "sh -c" dir.

    
verilen cevap Tagar 07.11.2015 06:56

Etiketlerdeki diğer soruları oku