rootアクセス権を持つLinuxで特定のユーザーの権限をどのように知ることができますか?

rootアクセス権を持つLinuxで特定のユーザーの権限をどのように知ることができますか?

ローカルサーバーへのルートアクセス権があります。数日前、私の同僚はこのサーバーにユーザーを作成し、ユーザー名とパスワードを与えましたが、そのユーザーの権限は最小限に抑えられました。たとえば、ユーザーは自分のホームディレクトリにファイルを作成することもできません。

「ユーザー権限」という概念はありますか?それでは、どのように見たり修正したりしますか?

答え1

アカウントを作成すると、同僚が「手動で」ホームディレクトリを作成し、そのホームディレクトリを所有している可能性がありますrootroot

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

username問題のアカウント名はどこにありますか?

編集する

これが実際に問題の場合、後でこれが発生しないようにするには、ユーザーアカウントの作成に使用するコマンドライン-mにスイッチを追加する必要があります。useraddこれにより、ユーザーが選択したホームディレクトリが存在しない場合に作成されます。これにより、「正しい」所有権と権限を持つホームディレクトリが作成されるため、この問題は発生しません。

編集2

上記で追加したコマンドは、chgrpデフォルトグループのホームディレクトリ全体のグループ所有権を変更します。環境によっては、これはまさに望むものではなく、ホームディレクトリ内の特定のサブディレクトリのグループ所有権を「手動」に変更して、サブディレクトリごとに異なるグループ所有権を設定する必要があるかもしれません。一般に、パーソナルコンピュータではそうではありませんが、「同僚」に言及しているので、共有ディレクトリのグループ所有権が重要なネットワークで接続されているオフィス環境について話しているとします。usernameusername

答え2

あなたが要求したように、Unixではこれを体系的に実行する方法は実際にはありません。を使用すると、sudo要求されたものと同様のものを作成できますが、これは完全に人為的であり、提供できるリストの包括性が非常に制限されています。コマンドグループを作成したら、ユーザーsudo(またはユーザーグループ)がこれらのコマンドグループにアクセスできるようにすることができます。

はい

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

sudo -lその後、ユーザーとしてこのコマンドを使用して、実行が許可されているコマンドを確認できます。

$ sudo -l
...

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

答え3

Joseph R.が提案したように、ホームディレクトリが正しい所有権で作成されていないことが可能な説明です。 99%の場合、アクセスの問題は、単にchownコマンドを使用してそれぞれのchmod所有権と権限ビットを正しく設定する問題です。 (いくつかの特別なケースでは、SELinux、AppArmor、ファイルシステムACL、またはネットワークファイルシステムの資格情報マッピングなどの他の要因が機能します。しかし、前述したように、この場合はあなたに適用される可能性はほとんどありません。)

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

関連情報