Komutu, girişi devre dışı bırakılmış bir kullanıcı olarak nasıl çalıştırılır?


21

Bir uygulamayı başka bir kullanıcı olarak çalıştırmak için su komutunu kullanmaya çalışıyorum

Bu durumda irssi çalıştırmaya çalışıyorum

blah@ubuntu: su - [username] irssi
(enter password)

blah@ubuntu:
(nothing happens)

blah@ubuntu: su - [username] -c irssi
(nothing)

Gksu'yu çalıştırıyorum ve aynı parametreleri ayarlıyorum ve çalışıyor ve kullanıcı şifresini istemiyor. Sorun ne Ve nasıl çözerim?

Kullanıcının böyle yaratıldığına dikkat etmeliyim

adduser --system --disabled-login [username]

herhangi bir fark yaratırsa .... iç.


irssi'yi başlatmak için -c bayrağını unutmuyor musunuz? (su -c irssi)
eephyne,

bunu da denedim ... binlerce şey denedim ... neden
WTF'yi çalıştırmak

Sadece irssibir sorunu var ve su komutu çalışıyor olabilir mi?
Nanne

İrsi çalıştırmak için ´ [kullaniciadi] ´ uygun haklara sahip mi?
Doka,

Yanıtlar:


28

Bu cevap, soruda yapılan düzenlemeleri bile dikkate alarak size yardımcı olacaktır. Özellikle, oluşturulan bir hesapta --disabled-loginparola ayarlanmamış ve giriş yapmak için başka hiçbir yol yoktur , ancak sudokomutları veya kullanıcı olarak bir kabuğu çalıştırmak için yine de kullanmak mümkün olmalıdır . Bu aslında, roothesabın Ubuntu'da nasıl kurulduğudur.

Komutta birden fazla sorun var su - irssi.

Bu komut , bir kullanıcının sahip olduğu bir kabuğu başlatmaya çalışır .irssi

Eğer başarısız olursa:

  • irssiKullanıcı yok
  • irssiKullanıcının hesap devre dışı bırakılır.
  • irssiKullanıcının hesap interaktif oturum açma için devre dışı bırakılır. Bazen bir hesabın FTP gibi hizmetleri kullanmasına izin verilir, ancak kabuğunu derhal çıkacak bir şeye ayarlayarak normal şekilde giriş yapması yasaktır /bin/false. Sonra bir giriş hemen, hiçbir mesaj olmadan sona erer.
  • Girdiğiniz şifre irssikullanıcı için doğru değil .

-Yani gerçekten çok günlük gibi açıktır, - kabuk bir ilk giriş kabuğu taklit böylece bayrak yapar irssi. -Bayrak olmadan, sukomut başarılı olursa, hala sahip olduğunuz bir kabuk elde edersiniz irssi, ancak gibi ortam değişkenleri HOMEdeğişmez.

Bunun yerine denilen bir programı çalıştırmakirssi istiyorsanız sufarklı şekilde çağırmalısınız :

su username - -c irssi

Dışarı çıkarsanız , aynı - komutunu root olarak çalıştırma girişimleriyle aynıdır .-c username-c root

Alternatif olarak, bir kabuk başlatabilir ve sonra komutu çalıştırabilirsiniz :

  1. Kabuğu ile başlatın .su username -
  2. Kabukta ( irssi) komutunu çalıştırın .
  3. İşiniz bittiğinde, kabuğu çalıştırarak bırakın exit.

Komutları olarak çalıştırma root

Eğer çalıştırmak isterseniz irssiolarak root, subunu yapmak için bir yol değildir. Kök girişleri Ubuntu'da varsayılan olarak devre dışı bırakılmıştır ve bunları yeniden etkinleştirmek için nadiren herhangi bir sebep vardır . Eğer etkin varsa rootgiriş, ardından kullanmak mümkün olmalıdır suolma root. O etkinleştirmek için gereksiz nedeni roothesabını hala olarak komutları çalıştırabilir, yapmanız olsun veya olmasın, yani rootbirlikte sudo.

Birlikte komutları çalıştırdığınızda sudo, size koymak için , şifre değil kimlik Çalıştırmak komutunu diliyorum altında kullanıcının şifresini. Yalnızca yöneticiler olarak istenilen komutları çalıştırabilir rootile sudo(eğer yeniden yapılandırmak sürece sudotabii ki, diğerleri bunu sağlamak için). Dolayısıyla, sistemi yönetmesine izin verilmeyen bir kullanıcının komutları rootkendi şifresiyle çalıştırmasına izin verilmez .

irssiGibi çalıştırmak rootiçin sudo:

sudo irssi

Ve girersiniz sizin istendiğinde şifrenizi değil root's.

Hangi şifreyi girdiğiniz hariç, bu aynı şeyi yapar:

su -c irssi

Ancak hesabın etkinleştirilmesini sudogerektirmediğinden sürüm başarılı olabilir root.

Olduğu gibi su, kullanabileceğiniz sudoiçin başka, dışı olarak komutları çalıştırın rootkullanıcı . irssiGibi çalıştırmak usernameiçin sudo:

sudo -u username irssi

İsterseniz sudo gibi davranmaya su -göreHOME ise -Öyle, hedef kullanıcının kullanmak istiyorum HOMEçalıştırabileceğiniz, çevre değişkenleri sudoile -Hbayrak:

sudo -H irssi
sudo -H -u username irssi

Bütün bir kabuğu, ile sudoolduğu gibi başlatabilirsiniz su. Şifreyi girdiğiniz kişilerin haricinde, bu komut şu şekilde aynı etkiye sahiptir su:

sudo -s

Ve bu komut aynı etkiye sahiptir su -:

sudo -i

( İlk giriş kabuğui anlamına gelir .)

Bir kabuğu başka bir kullanıcı olarak da başlatabilirsiniz:

sudo -u username -s
sudo -u username -i

Daha fazla okuma sudo

Hakkında daha fazla bilgi edinmeksudo için şuna bir bakın:

Neden olmasın gksuişte çalıştın su?

gksuMuhtemelen koşaraksudo çalıştı .

gksuiçin bir önyüz hem su ve sudo. Ubuntu'da, bunu kullanmak varsayılandır sudo(Ubuntu'da suolduğu için, genellikle kullanıcı olmak için kullanılmaz rootve sadece diğer rootkullanıcı olmayanlar için ikincil bir yoldur ).

Sen yapabilir gksukullanımını suçalıştırarak önyüz olarak gksu --su-mode.

Modda mı yoksa modda mı gksuolduğunu öğrenebilir ve (isterseniz) bu ayarı değiştirerek değiştirebilirsiniz . Bu kullanıcı başına bir ayardır.susudogksu-properties

Ne zaman gksuolduğunu sudomodunda, bu aynı şekilde davranır gksudo.

Daha fazla okuma gksu


Çözüm Sonrası Analiz

Sonunda gerekli komutu şu şekilde çalıştırabileceğinizi gördünüz:

sudo -u username irssi

(Yukarıda listelenen tekniklerden hangisidir?)

Sonuçta, neden diğer tekniklerin başarısız olduğunu, ancak başarılı olduğunu açıklamak için yeterli olan iki bilgi parçası bildirdiniz:

  1. usernameHesap ile oluşturuldu --disabled-logino var kılan bayrak, hiçbir parola (ve günlük başka hiçbir aracı olarak). Şifreniz olmaması, boş bir şifre ile giriş yapabileceğiniz anlamına gelmez . Kimlik doğrulaması için parolanın yeterli olmadığı anlamına gelir . Diğer kimlik doğrulama araçlarının kaldırılmasıyla birlikte, bu araç usernamekimlik doğrulaması yapamaz.

    Böylece tüm sutabanlı çözümler ortaya çıktı. sudoYine de çalışabilir, çünkü sudosizinle kimliğe bürünmek üzere olduğunuz kullanıcı kimliğinizi doğrulamaz. Bunun yerine, onları taklit etmeye yetkili olmanız ve kendiniz gibi doğrulamanız gerekir (ör. Kendi şifrenizi değil, kendi şifrenizi girin).

    Giriş yapmak için bu engeli kaldıran hesapta bir şifre belirlemek mümkündür:

    sudo passwd username

    Ancak, kullanıcının giriş yapmasına izin verilmemesi için iyi bir neden olabilir. Örneğin, bu kullanıcının giriş yapmasına izin verilmiş ve grafiksel olarak giriş yapmış olsaydı, kullanıcının ortamından veya X11 uygulamalarını çalıştırmak için uygun olmayan ayrıcalıklardan kaynaklanan kötü sorunlar ortaya çıkardı. ? Bu kullanıcı oturum açabiliyorsa, bu kullanıcı olarak uzaktan oturum açmayı mümkün kılabilir mi (şebeke servislerini açtığınız makineler için)?

    Yeniden devre dışı bırakmak istiyorsanız:

    sudo passwd -dl username

    İlgili: Hesabı geçici olarak etkinleştirdikten sonra hesabı devre dışı bırakma root.

  2. usernameHesap vardır /bin/falseonun giriş kabuğu olarak.

    Gibi bir kabuk bashgiriş kabuğunuzu çalıştığında, ortamınızı ayarlar ve size makineyi kontrol etmek için etkileşimli bir istemi verir.

    Ne zaman /bin/falseçalışır, diğer taraftan, bu hiçbir şey yapmaz , ve arızalı olduğunu bildirir . ( /bin/truehiçbir şey yapmaz ve başarıyı rapor eder.)

    falseVe truekomutlar komut dosyası yararlı olan ve çeşitli test amaçlı değil, aynı zamanda böylece bir hesap devre dışı bırakılması için zaman onların Giriş oturumu hemen biter birisi günlükleri. Bu şekilde, bir şifre (veya başka bir kimlik doğrulama aracı) etkinleştirilebilir ve kabuk erişim için değil, insanlar giriş yapabilir . Örneğin, bir FTP sunucusu varsa, yine de hesaplarına FTP yoluyla erişebilirler. Bir SSH sunucusu varsa, SSH aracılığıyla bir kabuk alamazlardı, ancak yine de kullanabilirler sftpve scpdosya aktarabilirlerdi.

    Yana usernamebireyin giriş kabuğu işlevsiz olduğunu, komutlar gibi , , ve yapamadım işi.su usernamesu - usernamesudo -u username -ssudo -u username -i

    Fakat kabuk vermeyen, benzeri veya hala çalışabilen komutlar .sudo -u username commandsu username -c 'command'

    Yana komutlar çalıştırılabilir, sen yapabilirsiniz işlevsel bir şeye kullanıcının giriş kabuğu değiştirin:

    sudo chsh -s /bin/bash username

    Ancak, kullanıcı için etkileşimli girişleri devre dışı bırakmak için iyi bir neden olabileceğinden, bu dikkatli yapılmalıdır.

Burada, usernameher ikisi de devre dışı şifreyi ve "devre dışı" kabuğunu vardı. Herhangi bir çalışma şifresinin olmaması tüm sutemelli çözümlerin çalışmasını engellerken, çalışan bir etkileşimli oturum açma kabuğunun olmaması tüm kabuk oluşturma çözümlerinin çalışmasını engelledi (bir kabuğun manuel olarak kullanılması hariç ).sudo -u username bash

sudo -u username command Kalan şey bu.


Cevabınız üzerinde çalışırken birçok düzenleme için üzgünüm. Vay. Teşekkür ederim. Cat / etc / passwd yaptığımda, yapılandırdığım kullanıcı sonunda / bin / false seçeneğine sahip - bu da başarısız olmasına neden olan şey mi? Bunu düzeltmek için herhangi bir fikrin var mı?
user123361

Sebebi ne olursa olsun, sudo -u kullanici adi irssi kullanmak, tedaviyi yerine getirir. Uzun, iyi açıklanmış cevabınız için teşekkürler!
user123361

@db İşe yaradığıma sevindim! (Btw, düzenleme için özür dilemenize gerek yok, düzenleme çok, çok iyi ve sorunuzun düzenlemelerin bir sonucu olarak diğer insanlar için de yararlı olacağı kesin.) Diğer sorularınız için de cevabımı düzenlerim: sonunda bir analiz bölümü içerir.
Eliah Kagan,
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.