この回答は、質問の編集を考慮に入れても、あなたを助けます。特に、で作成されたアカウントに
--disabled-loginはパスワードが設定されておらず、他のログイン手段もありませんがsudo、ユーザーとしてコマンドまたはシェルを実行するために使用することができます(以下で説明)。実際、これがrootUbuntuでのアカウントの設定方法
です。
コマンドには複数の問題がありますsu - irssi。
このコマンドは、という名前のユーザーが所有するシェルを起動しようとしますirssi。
次の場合に失敗します。
irssiユーザーはいません。
irssiユーザーのアカウントが無効になっています。
irssiユーザーのアカウントは、対話的なログインのために無効になっています。アカウントがFTPなどのサービスの使用を許可されている場合でも、シェルをすぐに終了するようなシェルに設定することにより、通常のログインを禁止されることがあります/bin/false。その後、メッセージなしでログインがすぐに終了します。
- 入力するパスワードは、
irssiユーザーにとって正しくありません。
この-フラグにより、シェルは初期ログインシェルをシミュレートします。つまり、としてログオンするのと非常によく似ていirssiます。なしで-あればフラグ、suコマンドが成功した、あなたはまだが所有しているシェルを取得したいirssiが、のような環境変数はHOME変わらないだろう。
あなたの代わりにプログラムを実行する場合と呼ばれるが irssi、あなたが呼び出す必要がありsu、異なります:
su username - -c irssi
省略した場合、--it はコマンドをrootとして実行しようとしますと同じです。-c username-c root
または、シェルを起動してからコマンドを実行できます:
- でシェルを開始します。
su username -
- シェルで、コマンド(
irssi)を実行します。
- 完了したら、を実行してシェルを終了します
exit。
コマンドを実行する root
irssiとして実行する場合は、実行する方法rootでsuはありません。ルートログインはUbuntuでデフォルトで無効にされており、それらを再度有効にする理由はほとんどありません。rootログインを有効にしている場合は、を使用suしてになることができるはずrootです。それが有効に不要だ理由rootアカウントは、あなたはまだのようにコマンドを実行することができないかどうか、つまりroot持ちますsudo。
あなたが持つコマンドを実行するとsudo、あなたはに入れ、あなたの、パスワードではないアイデンティティあなたが実行するコマンドを望むの下でユーザーのパスワードを。唯一の管理者として任意のコマンドを実行することrootでsudo(あなたが再構成しない限りsudo、もちろん、他の人がそうすることを許可します)。そのため、システムの管理を許可されていないユーザーはroot、自分のパスワードを使用してコマンドを実行することはできません。
とirssi同じように実行するにrootはsudo:
sudo irssi
そして、プロンプトではなく、パスワードを入力しますroot。
入力するパスワードを除き、これは次と同じことを行います。
su -c irssi
ただし、アカウントを有効にsudoする必要がないため、バージョンは成功するroot可能性があります。
と同様にsu、別の非ユーザーとしてコマンドsudoを実行rootするために使用できます。とirssi同じように実行するにusernameはsudo:
sudo -u username irssi
に関して、つまりターゲットユーザーの環境変数を使用する場合のsudo ように動作するsu -HOME場合は、次のフラグを使用してHOME実行できます。sudo-H
sudo -H irssi
sudo -H -u username irssi
でできるように、シェル全体を起動できsudoますsu。誰のパスワードを入力するかを除いて、このコマンドの効果はsu次のとおりです。
sudo -s
また、このコマンドの効果はsu -次のとおりです。
sudo -i
(初期ログインシェルのi略です。)
別のユーザーとしてシェルを起動することもできます。
sudo -u username -s
sudo -u username -i
さらに読む sudo
の詳細についてはsudo、以下をご覧ください。
うまくいかなかっgksuたsuのになぜ働いたのですか?
gksuおそらく実行して動作しましたsudo。
gksu以下のためのフロントエンドです両方 suとsudo。Ubuntuでは、デフォルトで使用されますsudo(Ubuntuでは、su通常はになるために使用されないためroot、他の非rootユーザーになるための二次的な方法にすぎません)。
を実行gksuするsuと、フロントエンドとして使用できgksu --su-modeます。
あなたはかどうかを知ることができgksuているsuモードやsudo(必要に応じて)モード、および実行することによって、この設定を変更しますgksu-properties。これはユーザーごとの設定です。
gksuがsudoモードの場合、と同じように動作しますgksudo。
さらに読む gksu
ソリューション後の分析
最終的に、次のコマンドで必要なコマンドを実行できることがわかりました。
sudo -u username irssi
(上記のテクニックです。)
最終的に、あなたは2つの情報を報告しました。これらの情報は、他の手法が失敗した理由を説明するには十分ですが、成功しました。
usernameアカウントが使用して作成された--disabled-loginことはありません可能フラグ、パスワード(およびログ記録の無い他の手段で)を。パスワードがなくても、空白のパスワードでログインできるというわけではありません。認証に十分なパスワードがないことを意味します。他の認証手段の排除と組み合わせて、この手段usernameはまったく認証できません。
したがって、すべてのsuベースのソリューションが出ています。sudoただし、sudo偽装しようとしているユーザーとして認証されないため、動作します。代わりに、あなたはそれらになりすますことを許可されなければなりません、そして、あなたはあなた自身として認証します(すなわち彼らのパスワードではなく、あなた自身のパスワードを入力します)。
アカウントにパスワードを設定することができます。これにより、ログインの障壁がなくなります。
sudo passwd username
ただし、ユーザーがログインを許可されない正当な理由がある可能性があります。たとえば、このユーザーがログインを許可され、グラフィカルにログインされた場合、ユーザーの環境または特権がX11アプリの実行にあまり適していないために悪い問題が発生します?このユーザーがログオンできる場合、そのユーザーとしてリモートでログオンできるようになりますか(ネットワークサービスを公開しているコンピューターの場合)。
再度無効にする場合:
sudo passwd -dl username
関連:アカウントを一時的に有効にした後、rootアカウントを再度無効にします。
usernameアカウントがあり/bin/false、そのログインシェルとして。
のようなシェルがbashログインシェルとして実行されると、環境が設定され、マシンを制御するための対話型プロンプトが表示されます。
ときに/bin/false実行するには、他の一方で、それは何もしませんし、失敗を報告します。(/bin/true何もせず、成功を報告します。)
falseそしてtrueコマンドは、スクリプトに有用であり、様々なテスト目的のために、だけでなく、そう、そのアカウントを無効にする際に、そのログインセッションはすぐに終了の誰かがログイン。そうすれば、パスワード(または他の認証手段)を有効にでき、シェルアクセスではなく、ユーザーがログインできます。たとえば、FTPサーバーがある場合でも、FTP経由でアカウントにアクセスできます。SSHサーバーがある場合、SSHを介してシェルを取得することはできませんが、ファイルを使用sftpしscpてファイルを転送することはできます。
以来usernameのログインシェルの非機能的だった、コマンドが好き、、、と仕事ができませんでした。su usernamesu - usernamesudo -u username -ssudo -u username -i
しかし、シェルを提供しないコマンド、またはそれでも機能するコマンド。sudo -u username commandsu username -c 'command'
以来のコマンドを実行することができ、あなたができる機能的な何かに、ユーザのログインシェルを変更します。
sudo chsh -s /bin/bash username
ただし、ユーザーの対話型ログインを無効にする正当な理由があるため、これも注意して行う必要があります。
ここでは、username両方ともパスワードと「無効」シェルを無効にしました。動作するパスワードがないため、すべてのsuベースのソリューションが動作しませんでしたが、動作する対話型ログインシェルがないため、すべてのシェル生成ソリューションが動作しませんでした(手動でシェルを呼び出すなどを除く)。sudo -u username bash
sudo -u username command 残ったものです。