LoginSignup
39
43

ログインできないユーザでコマンドを実行する方法+おまけ

Last updated at Posted at 2018-12-04

背景

ログインできないユーザで、apacheやtomcatなどを動作させたいことは、たまにあると思います。
よくあるケースなのに(そのはず…)、求める答えにたどり着くまでに時間がかかったので、投稿します。

今回は、user という名前のユーザを例として使用しています。

動作環境

  • Amazon EC2
  • Cent OS 7

Cent OSなので、/sbin/nologin です。
OSによって違うようなので、そこは各OSに従ってください。

実行方法

表題の件は、下記のコマンドのような実現できます。
例は、tomcatを起動するコマンドになります。

$ su -s /bin/bash - user -c "/opt/tomcat/bin/catalina.sh start"

おまけ

ログインできないユーザか調べる方法

下記のように、/etc/passwdを参照し、/sbin/nologinとなっていればログインできないユーザと特定できます。

$ more /etc/passwd
user:/sbin/nologin

この状態だと、suしようとしても、This account is currently not available.と表示され、ユーザを切り替えることができません。

$ su user
This account is currently not available.

/sbin/nologinのユーザに切り替える方法

とはいえ、/sbin/nologinが設定されていて、ログインできないユーザにスイッチしたいときはあるかもしれません。
そんなときは、--shell=/bin/bashを付与すると、ログインできないユーザでも切り替えることができます。

$ su - user --shell=/bin/bash

/sbin/nologinのユーザを追加する

/sbin/nologin を付与する場合は、下記のようになります。

$ useradd -s /sbin/nologin user

/sbin/nologinにユーザを変更する

新規ユーザ追加との違いは、useraddかusermodしか違いはありません。

$ usermod -s /sbin/nologin user

39
43
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
43