ローカルサーバーへのrootアクセス権があります。数日前、同僚がそのサーバー上にユーザーを作成し、uesrnameとパスワードを教えてくれました。しかし、ユーザーは最小限の権限を持っています。ユーザーが自分のホームディレクトリの下にファイルを作成することさえできないように。
「ユーザーの権限」について何かコンセプトはありますか?ある場合、どのように確認/変更しますか?
同僚がアカウントの作成中にホームディレクトリを「手動」で作成したため、root
によって所有されていた可能性があります。以下をroot
として実行してみてください:
chown -R username ~username
chgrp -R $(id -gn username) ~username
ここで、username
は問題のあるアカウントの名前です。
編集
これが問題であることが判明した場合は、今後このようなことが起こらないように、-m
ユーザーアカウントの作成に使用されるuseradd
コマンドラインに切り替えます。これにより、ユーザーが選択したホームディレクトリが存在しない場合でも、作成されます。これにより、「適切な」所有権と権限を持つホームディレクトリが作成されるため、この種の問題に直面することはありません。
編集2
上記で追加したchgrp
コマンドは、username
のホームディレクトリ全体のグループ所有権をusername
のプライマリグループに変更します。ご使用の環境によっては、これが希望どおりにならない場合があり、ホームディレクトリ内の特定のサブディレクトリのグループ所有権を「手動で」変更して、異なるサブディレクトリに異なるグループ所有権を設定する必要がある場合があります。通常、これはパーソナルコンピュータには当てはまりませんが、「同僚」について言及したので、ネットワーク化されたオフィス環境について話していると想定しています。この場合、グループの所有権は共有ディレクトリにとって重要です。
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)
ジョセフRが示唆しているように、ホームディレクトリが適切な所有権で作成されていなかった可能性があります。 99%の場合、アクセスの問題は、それぞれchown
コマンドとchmod
コマンドを使用して、所有権と許可ビットを正しく設定することだけの問題です。 (エキゾチックないくつかのケースでは、SELinux、AppArmor、ファイルシステムACL、ネットワークファイルシステムの資格情報マッピングなど、他の要因が関係します。ただし、前述したように、このような状況が当てはまる可能性はほとんどありません。)
あなたの質問の残りの部分に答えるために…はい、それがどのように失敗するかを自分で見ることができます。 rootとして、一時的に別のユーザーになることができ、そのユーザーのパスワードを知らなくてもそれを行うことができます。単に/bin/su - username
を実行してください。これは、あたかもそのユーザー名とパスワードを使用してログインしたかのように、他のユーザーとしてシェルを実行します。そのシェルを使い終わったら、それをexit
して、元のルートシェルに戻ります。