web-dev-qa-db-ja.com

Linuxでrootアクセスを使用して、指定されたユーザーの権限を知るにはどうすればよいですか?

ローカルサーバーへのrootアクセス権があります。数日前、同僚がそのサーバー上にユーザーを作成し、uesrnameとパスワードを教えてくれました。しかし、ユーザーは最小限の権限を持っています。ユーザーが自分のホームディレクトリの下にファイルを作成することさえできないように。

「ユーザーの権限」について何かコンセプトはありますか?ある場合、どのように確認/変更しますか?

7
AGamePlayer

同僚がアカウントの作成中にホームディレクトリを「手動」で作成したため、rootによって所有されていた可能性があります。以下をrootとして実行してみてください:

chown -R username ~username
chgrp -R $(id -gn username) ~username

ここで、usernameは問題のあるアカウントの名前です。

編集

これが問題であることが判明した場合は、今後このようなことが起こらないように、-mユーザーアカウントの作成に使用されるuseraddコマンドラインに切り替えます。これにより、ユーザーが選択したホームディレクトリが存在しない場合でも、作成されます。これにより、「適切な」所有権と権限を持つホームディレクトリが作成されるため、この種の問題に直面することはありません。

編集2

上記で追加したchgrpコマンドは、usernameのホームディレクトリ全体のグループ所有権をusernameのプライマリグループに変更します。ご使用の環境によっては、これが希望どおりにならない場合があり、ホームディレクトリ内の特定のサブディレクトリのグループ所有権を「手動で」変更して、異なるサブディレクトリに異なるグループ所有権を設定する必要がある場合があります。通常、これはパーソナルコンピュータには当てはまりませんが、「同僚」について言及したので、ネットワーク化されたオフィス環境について話していると想定しています。この場合、グループの所有権は共有ディレクトリにとって重要です。

7
Joseph R.

Unixでこれを行うための方法はありません。 Sudoを利用すれば、あなたが尋ねているようなものを作成できますが、それは完全に人工的であり、提供できるリストの徹底度が非常に制限されます。 Sudoでは、コマンドのグループを作成し、ユーザー(またはユーザーのグループ)がこれらのコマンドのグループにアクセスすることを許可できます。

# /etc/sudoers
someuser ALL=/sbin/service, /sbin/chkconfig

次に、コマンドSudo -lをsomeuserとして使用して、実行を許可されているコマンドを確認できます。

$ Sudo -l
...

User someuser may run the following commands on this Host:
    (ALL) ALL
    (root) /sbin/service, (root) /sbin/chkconfig, (root)
1
slm

ジョセフRが示唆しているように、ホームディレクトリが適切な所有権で作成されていなかった可能性があります。 99%の場合、アクセスの問題は、それぞれchownコマンドとchmodコマンドを使用して、所有権と許可ビットを正しく設定することだけの問題です。 (エキゾチックないくつかのケースでは、SELinux、AppArmor、ファイルシステムACL、ネットワークファイルシステムの資格情報マッピングなど、他の要因が関係します。ただし、前述したように、このような状況が当てはまる可能性はほとんどありません。)

あなたの質問の残りの部分に答えるために…はい、それがどのように失敗するかを自分で見ることができます。 rootとして、一時的に別のユーザーになることができ、そのユーザーのパスワードを知らなくてもそれを行うことができます。単に/bin/su - usernameを実行してください。これは、あたかもそのユーザー名とパスワードを使用してログインしたかのように、他のユーザーとしてシェルを実行します。そのシェルを使い終わったら、それをexitして、元のルートシェルに戻ります。

1
200_success