Sunucuma ssh' yaparken bash ile nasıl başlayabilirim?


29

Barındırılan bir Debian sunucum var. Ssh ile giriş yaptığımda, sh ortamıyla karşılaşıyorum. Bunu nasıl değiştiririm, böylece sert bir ortamda başlayayım?

linux  bash  debian  sh 

1
Gerçekten bir programlama sorusu değil. Gelecekte, muhtemelen Unix / Linux'ta bunun gibi sorular sorabilirsiniz .
tylerl

Yanıtlar:


33

Normal bir kullanıcı olarak, varsayılan giriş kabuğunuzu chshkomutu kullanarak değiştirebilirsiniz . İşte bir örnek:

chsh -s /bin/bash

Başka bir seçenek de usermod'u root olarak kullanmaktır:

usermod -s /bin/bash username

1
usermod bir cazibe gibi çalıştı. Yeni bir kullanıcı eklediğimde bunu bash değerine ayarlamanın bir yolu var mı, yoksa her seferinde komutu çalıştırmam mı gerekiyor?

Eğer kullanırsanız adduser, bu varsayılan olarak bash ayarlamalısınız. Varsayılan ayar olarak yapılandırılmıştır /etc/adduser.conf. Aksi takdirde, kabuğu açıkça ile belirtinuseradd .
jordanm

5

/etc/passwdSon girişin varsayılan kabuk olduğu yeri düzenlersiniz . Make it /bin/bash.

Alternatif olarak, /bin/shbash olmamasının sistem varsayılanını değiştirebilirsin .


1
Yo, aşağı oy kullanmada ne var? Örneğin Ubuntu için varsayılan yapar /bin/sholma /bin/dash. Ve buna değer ne olursa olsun, diğer iki cevap aynıdır ve aynı sonucu farklı yollarla elde eder. Her neyse.
Dirk Eddelbuettel

4
Manuel düzenlemeleri /etc/passwdkesinlikle önerilmez. Düzenleme hatası, tüm kullanıcılar için girişleri bozabilir, bu da kurtarma ortamı veya onarımı için tek kullanıcı moduna önyükleme yapılmasını gerektirir. usermodDeğişim gibi araçlar var /etc/passwd.
jordanm

1
Saçmalık. '94’ten beri Linux kullanıyor. Asla kırılmadı /etc/passwd.
Dirk Eddelbuettel

2
Çok dikkatli olduğunu duyduğuma sevindim. Herkesin değil. Güncellemenizle ilgili /bin/basholarak başlatılan başka bir not, istenmeyen sonuçlara yol açabilecek /bin/shşekilde çalıştırılması ile aynıdır --posix.
jordanm

Bak, ben de 1995'ten beri Debian geliştiricisi / bakımcısı oldum. Varsayılan olarak bash yapardık, çeşitli nedenlerle daha basit kabuklara geçtik. /bin/bashBütün o makinelerde kabuğum olarak kullanıyorum . Daha somut bir tartışmaya ihtiyacın var.
Dirk Eddelbuettel

2

Kullanıcı profilinizi düzenlemeniz gerekir, /etc/passwddosyayı doğrudan düzenleyerek bunu yapabilirsiniz veya usermodkomutu sizin için yapmak için kullanabilirsiniz. Aradığınız sözdizimi şuna benzer:

usermod -s /bin/bash joeuser

1

/bin/shUbuntu’nun son sürümlerinde varsayılan sistem kabuğu yapılandırıldı /bin/dash. Sadece aşağıdaki komutu çalıştırarak:

sudo dpkg-reconfigure dash

eski varsayılan ayarlarına geri döndürebilirsiniz /bin/bash.

Bununla, bashherhangi bir kullanıcı ayarını (no chshveya usermod) değiştirmeden etkileşimli kabuk olarak sahip olmak istediğiniz efekti elde edebilirsiniz , ve o anda kabuk ayarlı olan tüm kullanıcılar için işe yarayacaktır /bin/sh.

Bunun sadece bir dezavantajı var: Ubuntu önyükleme süresi hafifçe artabilir, çünkü dashdaha az bellek yüklenir ve biraz daha hızlı çalışır (şaşılacak bir şey yoktur - özelliklerde çok sınırlıdır). Ancak bu etkiyi, özellikle barındırma ortamı için ölçmenin oldukça zor olacağını düşünüyorum.

Ayrıca, düzgün çalışamayan kabuk komut dosyalarını görmek de can sıkıcıdır çünkü bashdesteklemedikleri bazı gelişmiş özellikleri kullanırlar dash. Bu tarifi kullanmak, bunun olmayacağından emin olacaktır.

Daha fazla bilgi için, bu konuda Ubuntu wiki'sine bakın .


kullanım örneklerini ayrı tutmalısınız: /bin/shPOSIX uyumlu kabuk komut dosyaları için tercüman olarak kullanılır - mutlaka en iyi etkileşimli kabuk değildir; İsterseniz bashsistem kabuğu olmak, kendi kullanarak tercih giriş kabuğu belirlesin chshveya uygun adduseraramaları. dpkg-reconfigureuserA zsh ve userB bash isterse her ikisi de varsayılan kabuk olarak / bin / sh komutunu kullanmakta ısrar etmek isterse, kullanmak kötü bir seçimdir.
49'da

userA açıkça yapılandırılmışsa zshve userB buna sahipse bash. UserC tarafından yapılandırılmışsa sh, bashyine de yeni kullanıcılar için varsayılan Ubuntu varsayılanı olacaktır
mvp

elbette, ancak çözümünüz / bin / sh olarak ayarlamak ve sonra bir tür kilitlenme olan / bin / sh olarak dpkg-reconfigure zshayarlamak zshgibi bir şey önerdi ; Ben esas olarak, giriş kabuğunu / bin / sh'i iyi bir giriş kabuğu yapmak için çemberlerden geçmek yerine kullanmak istediği kabuğa ayarlamanın tercihli olduğunu söylüyorum. dpkg-reconfigure dashdash
Umlaute

Sadece söyledi dpkg-reconfigure dashyapabilirsiniz shgelin bashyerine sakat daha dash. Diğer tüm kabukları hala sağlam olacak.
mvp

1

Paylaşılan bir hesabı kullanmaya çalıştığınız durumda (ne olursa olsun) ve varsayılan kabuğu değiştiremiyorsanız, çalıştırabilirsiniz.

ssh -t <user@hostname> bash -l

Ortamınızı başka bir kabuktan korumanız gerekirse, önce o kabuğu çalıştırabilirsiniz; Örneğin

ssh -t <user@hostname> ksh -c bash -l

Bu oldukça iyi çalışıyor, ama neden -lseçenek?
nbkhope

@ nbkhope .bashrc'nin sizin için çalıştırılmasını sağlayacaktır.
UKMonkey

0

Hiçbiri chshveyausermod benim için çalışıyor, ama PuTTY üzerinden bu yapabileceği bulundu.

Gidin Connection > SSHve set Remote commandiçinbash .

exitVarsayılan kabuğunuza erişemeyeceğinizi unutmayın, yalnızca bağlantıyı kapatı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.