ターミナルで非rootユーザーとしてログインします


18

これは私がグーグルからすぐに答えを得ると期待する質問です。しかし、どういうわけかグーグルは私に失敗しています。ターミナルセッションにログインしていて、セッションを終了せずにパスワードを知っている別の非ルートユーザーとして一時的に仕事をしたいとします。このユーザーとしてログインすると、ログアウトするまでこのユーザーのホームディレクトリなどが正しく設定されます。それ、どうやったら出来るの?

私は試した

su -- username

パスワードを入力してもエラーは発生しませんでしたが、コマンドプロンプトに目に見える変更が見られず、myname @ myhostと表示されます。また、ホームディレクトリはmynameのディレクトリであり、ログインしようとした新しいログインではありませんでした。

私は-明らかなように-linux / Ubuntuでかなり経験が浅いので、どんな情報でも大歓迎です。

回答:


18

どのユーザーに変更しますか?

問題は、シェルが割り当てられていないユーザーに「su」しようとしていることです。システムまたはソフトウェアのインストール時に一部のパッケージによって作成されたmysql、pulseなどのほとんどのユーザーには、シェルが割り当てられていません。

ユーザーが覗くによって割り当てられたシェルがあるかどうかを確認することができ/etc/passwd、ファイルをそれが言うならば、ちょうど、各ユーザーの行の最後を見て/bin/false、それはそれはのようなものがあれば、それは、シェルが割り当てられていないことを意味/bin/bashまたはその他のシェル、それからそのユーザーに「su」できるはずです。

「シェル割り当て」と言うと、基本的に「シェルアクセス」があることを意味します

それでもユーザーがシェルにアクセスできない場合は、常にそのユーザーとしてコマンドを実行できます

 sudo -u user command

ユーザーがシェルアクセス権を持っていない場合は、まだ、あなたは常に「sudoの-u userコマンド」と、そのユーザとしてコマンドを実行することができます
サム

コマンドに追加-s /bin/bashするsuchsh -u username -s /bin/bash、ユーザーのシェルを変更するために使用します。これが持つセキュリティへの影響に注意してください。
gertvdijk

6

あなたがsudoアクセスを持っているなら、私はお勧めします

sudo su username -

基本的に同じことをしますが、他のユーザーではなくパスワードを知っていることだけが必要です。

ただし、他のユーザーのパスワードを持っている場合:

su username - うまく動作するはずです。

1に注目してください-そして、それは最後にあります。


どういうわけか、あなたが説明した両方の方法は私のものとまったく同じように動作します-コマンドはエラーなしで受け入れられますが、ホームディレクトリは正しくなく、プロンプトは私がまだ元のユーザーであることを示しています。その後ログアウトすると、完全にログアウトします。
アンドリューサヴィニク

OK、ログインしているユーザーはログインできますか?シェルを「true」に設定することで、アカウントのログインをブロックできます。これは、説明したとおりに実行されます。これは、「apache」や「ftp」などの「システム」アカウントでよく使用されていましたsudo cat /etc/passwd。チェックするには、ここにコンテンツを貼り付けないでください。ただ目を光らせて、ユーザーが最後の少しだけ実際のシェルを持っていることを確認してください。
coteyr

1
サイドノート、これを行うより適切な方法は、エラーをスローするシェルを「false」に設定することです。いくつかのシステムものの、まだ技術的またはpsudo、セキュリティ上の理由真使うアカウント(のうち鼻水悪化させる罠を被ハッカー)
coteyr
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.