この回答は、質問の編集を考慮に入れても、あなたを助けます。特に、で作成されたアカウントに
--disabled-login
はパスワードが設定されておらず、他のログイン手段もありませんがsudo
、ユーザーとしてコマンドまたはシェルを実行するために使用することができます(以下で説明)。実際、これがroot
Ubuntuでのアカウントの設定方法
です。
コマンドには複数の問題があります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 username
su - username
sudo -u username -s
sudo -u username -i
しかし、シェルを提供しないコマンド、またはそれでも機能するコマンド。sudo -u username command
su username -c 'command'
以来のコマンドを実行することができ、あなたができる機能的な何かに、ユーザのログインシェルを変更します。
sudo chsh -s /bin/bash username
ただし、ユーザーの対話型ログインを無効にする正当な理由があるため、これも注意して行う必要があります。
ここでは、username
両方ともパスワードと「無効」シェルを無効にしました。動作するパスワードがないため、すべてのsu
ベースのソリューションが動作しませんでしたが、動作する対話型ログインシェルがないため、すべてのシェル生成ソリューションが動作しませんでした(手動でシェルを呼び出すなどを除く)。sudo -u username bash
sudo -u username command
残ったものです。