web-dev-qa-db-ja.com

Linuxのあらゆることに対して「Sudo」を書く必要をなくす方法はありますか?

私はかなりの量のPHP=間もなく動作します。RoRの学習に興味があるので、VirtualBoxにLinux Mint 12をインストールしました。

これまでのところ、このスイッチの最も苛立たしい側面は、Linuxの権限の扱いです。 Sudoを介してルートを装うことなく、(たとえば、ダウンロードディレクトリからドキュメントルートにSymfony2 tarballをコピーして抽出するなど)何もできないようです。

Linuxに特定のディレクトリへの自由なアクセスを許可する簡単な方法はありませんか?

66

2つのオプションが思い浮かびます。

  1. chownを使用して、必要なディレクトリを所有します。

    Sudo chown your_username directory 
    

    (your_usernameをユーザー名で置き換え、ディレクトリを目的のディレクトリで置き換えます。)

  2. あなたができる他のことは、あなたが-あなたが何をしているのかを知っているである限り、rootとして働くことです。 rootを使用するには、次のようにします。

    Sudo -s
    

    そして、すべてのコマンドの前にSudoを入力しなくても、何でも実行できます。

86
mtahmed

一般的に言えば、システム全体に影響を与える何かをしているのでない限り、常に自分のユーザーとして作業してください。

Webサーバーに配置したいファイルがある場合は、自分のユーザーとして作業し、Sudoを使用してファイルをファイルシステムのWebサービス領域に配置します。通常、これはインストールスクリプトによって実行され、Sudo -u webmaster install-webserver-files、またはより適切なSudo -u webmaster git update(または選択したバージョン管理システム)などを実行します。

開発サーバーで作業していて、ファイルにすぐにアクセスできるようにしたい場合は、Webサーバー領域にディレクトリを作成し、所有または少なくとも書き込み可能にしてください。 1回限りの操作(Sudo chown …またはSudo -u webmaster setfacl …)の後は、日常の操作に特権を昇格する必要はありません。

複数のユーザーにディレクトリへの書き込みを許可したり、所有者以外の複数のユーザーや複数のグループに異なる権限を付与したりすると便利な場合があります。 アクセス制御リスト この機能を提供します。 サーバー上の共有ディレクトリの権限の問題 または バックアップスクリプトの権限の問題 を参照してください。

ユーザーとしては、Linuxでやりたいことを何でもできるというのが常に私の理念でした。それ以外の場合は、常にSudoが存在します。 Sudoを使用すると、他のユーザーと同じようにいくつかのことを実行できます。ほとんどの場合、システム管理ではrootとして実行できます。 Sudoは、(root)ユーザーとしてのルーチンタスクと特権の一部を他のユーザーに委任し、必要以上に特権を上げることなく、私の時間と他の時間をよりよく管理するのに役立つ優れたリソースです。同時に、sudoers構成ファイルにエントリを保持するのは、私の信頼です。関連しているのかどうかはわかりませんが、Sudoを使用すると、信頼できる特権を使用して誰が何をできるかというセキュリティの観点が向上します。何かがうまくいかなくても、彼らは責任を負います。 (私は常に犯人を見つけるためにsudoersのログ情報を使って卑劣なピークをいつでも行うことができます)。私の部下はいつも、Linux環境での昇格された特権でやりたいことすべてのためにSudoを入力しなければならないことに懸念を表明してきました。ここでも同じ質問を見つけました。

解決策と代替案を見つけるための私の探求を見るために、私は Resource Based Access ControlsRBACに出くわしましたが、Solarisのような他の冒険の土地で- pfexec など。このアプローチは、ユーザーの権限をすでに昇格させ、システム管理者がその権限で何をしたいかについての良心と警戒心を信頼するため、より優れています。

利用可能なRBACのソリューションとLinuxの世界でのその実装を考えると、私は偶然見つけました

SELinux http://www.ibm.com/developerworks/linux/library/l-rbac-selinux/

grsecurity http://en.wikipedia.org/wiki/Grsecurity

他にもいくつかの実装がありますが、リストの上位にあるものと考えます。 RBACの実装は、特にユーザー数が多い場合、組織内で多くの作業を行います。 RBACは、均質な環境ではより優れたソリューションのように思われます。ただし、ネットワークに異種のUnixインストールがあり、ユーザーデータベースが一般的な場合、これはおそらく失敗します。 SELinuxはSolarisでスケーラブル/実装されておらず、RBAC/pfexecツールはLinuxで実装されていないためです。 1つのことを行うためのさまざまなアプローチがあります。例: http://blogs.Oracle.com/darren/entry/opensolaris_rbac_vs_Sudo_howto

ネットワーク全体の異なるインストールでは、sudoersが単一のホストアプローチであるか、ネットワーク/ドメインで集中構成できないなど、このアプローチをサポートしない場合があります(ただし、openrbacは一般的な実装アプローチと見なすことができます)。 /etc/sudoers変更があるたびに同期する必要があります。さらに、sudoersファイルの操作中にはナレッジベースの要件があり、sudoers構成のポリシー言語を理解して、間違いを犯したり許可したりしないようにする必要があります。 RBACは、一元化されたアプローチをある程度提供する場合がありますが、セキュリティプロファイルは一般的ですが、付与されたロールからのユーザーの追加/削除は、単一の場所(つまり、ユーザー/パスワード/グループ情報が保存されている場所)から実行できますLDAP、NIS、ADなどのドメイン)。また、smexec、smmultiuserなどのRBACデータベースの操作に必要なコマンドが少ないことを暗黙のうちに理解する必要があります。

Sudoは、setuid機能を提供するすべてのUnix /ライクなプラットフォームで機能するにもかかわらず、ここではより多くのクロスプラットフォームアプローチを提供する可能性があります。 SudoRBACは、root以外のユーザーにrootパスワード自体を与えずに実行できるいくつかの権限を与えることに成功しています。 Sudoは、コマンドの実行中に使用できるコマンドライン引数に、より細かい/細かいベースのアプローチを提供し、昇格した特権で実行できる引数付きのコマンドにのみ制限できます。 RBACは、インストールされているコマンドまたはバイナリまでの使用を制限する場合がありますが、コマンドライン引数を制御できません。監査ははるかに優れており、RBAC環境に組み込まれていますが、Sudoは、構成とセキュリティ制約に依存します(シェルを許可しないなど、特にホストは他のホストにログインせずにログインできます)問題)。これらは引用できる違いのほんの一部であり、個人的にはRBACよりもSudoを使用する傾向がありますが、上記の制限により、いくつかの回避策を実装することができます。 RBACがSudoの利点を改善するためにすべての問題に対処するまでは、Sudoが単純であるため、Sudoがなくなるとは思いません。

3
Nikhil Mulley

はい、スーパーユーザーのアクセス制御を与えるルートとしてログインします。
Windowsと同じ概念で、管理者を使用して端末にログインできます。

3
ajreal

私はあなたが作業しているドキュメントルートを変更するので、完全にアクセスできます。

GemをインストールするたびにSudoを入力する必要がないようにするには、こちらの記事に従ってください: http://forums.site5.com/showthread.php?t=11954

Ruby and Rails。 http://beginrescueend.com/ のバージョンを管理するためにRVMをインストールすることを強くお勧めします。

開発したバージョンとは異なるバージョンを使用してアプリをデプロイしたいホストを見つけたとき、それはあなたの人生をずっと簡単にします。

1
Catharz

/ etc/passwdファイルを編集し、ユーザーIDとグループIDをUID 0およびGID 0に変更して、ユーザー「yourUserName」にroot権限を付与します。

yourUserName:0:0 ::/home/yourUserName:/ bin/sh

0
Ufuk özkanlı

他の回答で指摘されているように、最もクリーンなソリューションは、アクセスする必要があるファイルとディレクトリの所有権を変更することです。あるいは、新しい専用グループを作成し、ファイルとディレクトリのグループ所有権をこのグループに変更し、これらのファイルとディレクトリにグループ書き込み権限を設定することもできます。最後に、ディレクトリにSGIDビットを設定します。これにより、新しいファイルを作成した場合、それが含まれているディレクトリ(つまり、専用グループ)のグループ所有権を継承します。

0
countermode

コマンドを実行します。

Sudo su root

これで、rootユーザーとしてコマンドを実行できるようになります。注意してください!実行されるコマンドはすべてrootユーザーになります。注意しないと、物事を深刻に台無しにする可能性があります。

または、ディレクトリの権限を変更して、ユーザーがファイルを保存および編集できるようにします。

0
Sbossb