質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

  • Linux

    4030questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • SSH

    588questions

    SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

  • Debian

    124questions

    Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

Linuxでsuが実行できない

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 647

ma-yu

score 38

 前提・実現したいこと

linux機器にSSHでログインし、root権限にあがりたい(wheelユーザーに登録したい)
若しくはsudoでコマンドを実行したい

 発生している問題・エラーメッセージ

suコマンドを実行すると、下記のエラーが出力される

su: cannnot set groups:Operation not permitted

 補足情報(FW/ツールのバージョンなど)

・Debian系linux
・/etc/pam.d/su は存在しない(/etc/pam.dまでは存在する)
・visudoは実行できない

参考にした資料
http://hnakamur.blogspot.com/2008/12/debianwheel.html
https://www.softel.co.jp/blogs/tech/archives/3016

お手数ですが御教授お願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

レスキューモードに入ってsudoコマンドを復旧させるのが一つの手段として考えられますが、
可能であれば再インストールするのが早いかもしれません。
(その他の致命的な問題が発生している可能性が考えられます)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/25 13:11

    ご回答ありがとうございます。
    組込み機器を使用しており、環境の再現が可能か分からないため再インストールは避けたいと思っています。

    キャンセル

  • 2018/07/25 13:53

    su コマンドのパーミッションですが、どうなっていますか?

    キャンセル

  • 2018/07/25 17:21

    勉強不足で申し訳ないのですが、コマンドのパーミッションの確認方法が分かりません。
    御教授いただけないでしょうか。

    キャンセル

  • 2018/07/25 18:40

    "$ which su" を実行すると su コマンドのあるファイルパス (/usr/bin/su とか) が見られるので、
    そのパスに対して
    "$ ls -l <パス名>" を実行することで、
    コマンドのパーミッションが確認できるはずです。

    キャンセル

  • 2018/07/30 14:02

    お返事遅くなりすみません。
    /binの中にsuを確認できました。
    ls -l で
    |rwxrwxrwx 1 1000 1000 su -> tinylogin
    が確認できました。
    どのユーザーでも書き換える権限があるという意味でしょうか?

    キャンセル

  • 2018/07/31 09:09

    この場合、ユーザIDが「1000」のユーザと、グループIDが「1000」のユーザが "su" コマンドを所有していることになります。が、読み/書き/実行権限が user, group, other の全てに付いているので、おっしゃる通り、どのユーザでも書き換えは可能なはずです。
    kazto さんとのやりとりも拝見させていただきましたが、同じく少し特殊な環境だと思うので、通常の対処方法では対応できないような気もしています。
    ちなみにですが、sudo <実行したいコマンド> を実行した際も、
    cannnot set groups:Operation not permitted
    が出力されるのでしょうか。

    キャンセル

  • 2018/07/31 10:49

    ご回答ありがとうございます。

    sudo を実行すると、sudo:not found が返ってきます。

    suコマンドを一般ユーザが使用する逃げ道があれば良いのですが...

    キャンセル

  • 2018/07/31 11:30

    調べてみましたが、arago inux では sudo コマンドが実行できないそうですね↓
    https://e2e.ti.com/support/arm/sitara_arm/f/791/p/635075/2364396

    sudo を使えるようにするにはビルドする必要があり、ビルドするには
    https://e2e.ti.com/support/embedded/linux/f/354/p/472168/1698699#1698699
    の手順が有効らしいです。

    こちらの環境では検証できないので、確実だとは言えませんが、git コマンドなどが正常に動作していれば可能ではないでしょうか。

    キャンセル

  • 2018/07/31 11:56

    検索までしていただきありがとうございます。

    しかし残念ながら、諸事情により再ビルドなどの大きく環境が変化するおそれのあることはできません。

    sudo が使えるようになったとしても、現状のsu 実行時と同じく cannnot set groups:Operation not permitted となるのではないかと思っています。
    wheelグループという概念がないのでは?と思っています。


    gitコマンドは not found となってしまいました。

    キャンセル

  • 2018/07/31 12:32

    なるほど。。
    ビルドができないとなると、kazto さんの仰るように
    「/etc/groupを編集して、当該の一般ユーザをrootグループに追加する」という手段くらいしか
    提示できないですが、それでダメなら成すすべが無いかもしれないですね。。。

    キャンセル

  • 2018/07/31 13:06

    rootグループに追加してしまうと、実装時のsshd_configの設定"PermitRootLogin:no"によりログインができなくなります。
    現在の開発環境では"PermitRootLogin:yes"でroot権限のログインが可能なのですが、実装時にはroot権限をもつ者が直接ログインできないようにするためです。

    たくさんお調べいただいたのに申し訳ないです。

    キャンセル

  • 2018/07/31 14:03 編集

    [実装時]というのは、本番環境という意味合いで認識して良いですか?
    開発環境の設定を変更して本番リリースするという場合なら、
    /etc/sudoers を編集して、該当の一般ユーザのみ sudo コマンドの実行権限を付与すれば良いと思います。
    しかし、先述の通り、
    ・sudo コマンドはデフォルトでは arago linux で動作しておらず、
    ・sudo を実行するにはビルドする必要があるが環境上それはできない
    ということなので、
    「sudo権限を使って実行したいコマンドの所有グループに、該当の一般ユーザを所属させる」
    が回避策かと考えられます。
    最終版(?)の root ログインが最初から no になっているという事でしたら、sudo権限でのコマンド実行を行う方法は無いかと思います。

    キャンセル

  • 2018/08/03 17:24

    表現が悪く申し訳ないです。実装時の認識は合っています。
    仰るとおり、他の方法を探すしかないようです。
    どうもありがとうございました。

    キャンセル

+1

それは、単に貴方がルート権限を持つのを許されていないだけではないでしょうか。
まずはルート権限をお持ちの方に申請するところから、でしょうか。

次に、業務内で突然マシンを割り振られてなんとかして、と言われてお困りの場合。
再起動して、シングルユーザでログインし、visudoでお望みのユーザに権限を与えれば、可能です。


内容追記

エラーメッセージで検索したところ、「chmod u+s /bin/su」しろ、という内容を見つけました。お役にたてますでしょうか。


さらに追記

/etc/groupファイルをエディタで書き換えます。hogeユーザをwheelグループに追加する例です。

-wheel:x:10
+wheel:x:10:hoge

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/25 13:13

    ご回答ありがとうございます。
    rootでログインは可能ですが、一般ユーザーでログインした際にsudoが実行できないという状況です。
    root権限でログインしvisudoコマンドを発行しましたが実行できないようです。

    キャンセル

  • 2018/07/25 13:17

    apt-get install sudo でインストールしたにもかかわらず、visudoがcommand not foundになる、ということでしょうか?

    キャンセル

  • 2018/07/25 17:20

    インターネットに接続できない組込み機器でして、apt-getができません。
    一般ユーザーをwheelグループに追加したい場合にも、sudoのインストールが必要になるのでしょうか。

    キャンセル

  • 2018/07/25 17:35

    純粋なDebianじゃないんですね。だとすると、その組み込み機器のベンダがsudoパッケージを用意していない限り、sudoやvisudoは使えないのは道理です。
    そのような特殊な環境であれば、ベンダが用意したマニュアルなどがあるのがふつうだと思いますが、いかがでしょうか。

    また「一般ユーザーをwheelグループに追加」だけであれば、rootでログイン後「usermod -G wheel <ユーザ名>」だけでいけるはずです。

    キャンセル

  • 2018/07/25 18:22

    ありがとうございます。
    データシートでsudo等を探してみます。

    usermodコマンド、試してみましたがusermod:not found が帰ってきました。

    キャンセル

  • 2018/07/25 22:06

    横から失礼しますよ。
    viのようなテキストエディタは使えますでしょうか?
    (っていうか、インストールされていますか?)

    キャンセル

  • 2018/07/30 14:04

    見ていただきありがとうございます。
    viは使用可能です。
    vi su で開くと文字化けしてしまいます。

    キャンセル

  • 2018/07/30 15:09

    kazto様
    su コマンドは実行できています。パスワードを入力しろとの旨のメッセージが表示され、パスワードを入力すると下記エラーが出力されます。

    su: cannnot set groups:Operation not permitted

    一般ユーザをwheelグループに追加したいのですが、usermodコマンドに対応していないようです。

    キャンセル

  • 2018/07/30 15:17

    viコマンドはあるとのことで、usermodコマンドの代わりに、/etc/group ファイルを直接viで書き換えましょう。

    キャンセル

  • 2018/07/30 15:40

    /etc/groupの中にwheelが存在していませんでした。
    名称が違うのでしょうか?

    尚、wheelグループに追加したい一般ユーザーは
    hoge:x:501:
    のように存在していました。

    キャンセル

  • 2018/07/30 15:50 編集

    wheelグループが無いなら作れ、との記事を見つけました。
    https://kawairi.jp/weblog/vita/2016040220277

    しかし、肝心の/etc/pam.d/suが存在しません。
    まずpam.dの下にsuを追加すべきだと思うのですが、方法が分かりません。
    ご教授いただけないでしょうか?

    キャンセル

  • 2018/07/30 16:18

    おそらく特殊な環境であるため、pamの仕組みは通用しないと思います。記事は参考になりません。
    wheelが無い場合、rootグループに追加するんでしょうかねぇ。。。
    試してみるしかないかなと思います。

    キャンセル

  • 2018/07/31 10:46

    ありがとうございます。
    arago linuxであると分かりました。
    rootグループに追加するとなると、SSHログインの際に"PermitRootLogin:no"ではじかれてしまいます。
    一般ユーザとしてログイン後、suコマンドを使用するのが今回の目的でしたが、難しそうです。

    キャンセル

  • 2018/07/31 11:54

    前とおっしゃってることが違うように思います。
    rootでのログインはできるのではなかったでしょうか。(sshで、ではなく。)
    そのうえで、/etc/groupを編集して、当該の一般ユーザをrootグループに追加するわけです。

    キャンセル

  • 2018/07/31 13:03

    説明不足お詫び申し上げます。

    最終目的は、一般ユーザーでSSHログインをし、そこで幾つかのsuコマンドを実行することです。
    このときのsshd_configは"PermitRootLogin:no"になります。
    当初はログインした一般ユーザーをwheelグループに登録し、suコマンドを実行しようと考えていました。
    調査不足でそれができず、現在に至ります。

    現在、デバッグ用に"PermitRootLogin:yes"としており、rootでログインが可能です。
    最終版にこれは実装されません。
    実装時には"PermitRootLogin:no"としますので、wheelグループやsuなどが実行したかった次第です。

    キャンセル

同じタグがついた質問を見る

  • Linux

    4030questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • SSH

    588questions

    SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

  • Debian

    124questions

    Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。