Linuxの小さなものごとに「sudo」を書く必要をなくす方法はありますか?


59

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

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

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


1
多くのディストリビューションには、さまざまなシステムユーティリティの構成を編集する権限を持つグループがあります。そのグループに自分を入れて、新しいシェルを開きます。
dmckee

代わりに、ホームディレクトリ内の何かにドキュメントルートをポイントする方が良いでしょうか?

3
「sudo」は、新しいLinuxユーザーが頻繁に使用および悪用しているとんでもないコマンドの1つです。多くの場合、15のコマンドがsudoを使用するチュートリアルをWebで参照しますか?通常の状況では、通常のユーザーとしてログオンしているときに特別な権限は必要ありません(推奨)。私は彼らがしたすべてがsudoを使用する会社にいました。(セキュリティ上の理由で)私がそれを禁止しようとしたとき、彼らは不満を言いました。暗号化されたsudo構成ファイルを調べた後、その通常のユーザーからシステムを「ルート化」することを可能にする欠陥を(いつものように)見ました。須藤は非常に危険です!!
ジーチ

回答:


77

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

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

    sudo chown your_username directory 
    

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

  2. あなたがすることができる他の事は、限り、あなたのようにルートとしての仕事であるあなたが何をしているか知っています。rootを使用するには:

    sudo -s
    

    そして、sudoすべてのコマンドの前に入力することなく、何でもできます。


「あなたがすることができる他の事は、限り、あなたはあなたが何をしているか知っているように、rootとして作業ですやるルートを使用するには...。」 -まあ、ディストリビューションおよびセキュリティコミュニティは、ユーザーを教えるためにしようとしているベストプラクティスを元に戻しています。関連:「最小権限の原則は何か」

16

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

Webサーバーに配置するファイルがある場合は、自分のユーザーとして作業し、それを使用sudoしてファイルシステムのWebサービスエリアにファイルをドロップします。通常、それはインストールスクリプトによって実行され、のようなものsudo -u webmaster install-webserver-files、またはそれ以上sudo -u webmaster git update(または選択したバージョン管理システム)を実行します。

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

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


3

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


あなたは元のポスターの質問に直接答えていることに気付きます。しかし、これは悪いアドバイスです。これは、反対票を説明しています。
bignose

あなたがそれをWindowsに関連付けたように。
ルウォーディ

3

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

ソリューションと選択肢を見つける私の探求を見るために、私はリソースベースのアクセス制御 に出会いましRBACたが、他の冒険の土地など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で実装されていません。単一のことを行うためのさまざまなアプローチが存在します。例: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 / likeプラットフォームで動作するという点で、クロスプラットフォームのアプローチを提供します。両方ともsudoRBACroot以外のユーザーにrootパスワード自体を与えなくても実行できる特権を与えることに成功します。Sudoは、コマンドの実行中に使用できるコマンドライン引数に、よりきめ細かく/粒度に基づいたアプローチを与えることができ、純粋に引数を持つコマンドを昇格された特権で実行できるものに制限します。RBACは、インストールされているコマンドまたはバイナリまでの使用を制限できますが、コマンドライン引数を制御することはできません。監査ははるかに優れており、RBAC環境に組み込まれていますが、sudo、それは設定と同様に行われたセキュリティ制約に依存します(シェルを許可しない、特にホストは問題なく他のホストにログインすることが許可されているなど)。これらは私が引用できる違いのほんの一部であり、個人的にはRBACよりもsudoを使用する傾向がありますが、前述の制限により回避策を実装することができます。RBACがsudoの利点を高めるためにすべての問題に対処するまで、sudoが単純であるためになくなるとは思いません。


1

私はあなたが働いているドキュメントルートをchownするので、あなたはそれに完全にアクセスできます。

Gemをインストールするたびにsudoと入力しなくても済むように、こちらの記事をご覧ください:http : //forums.site5.com/showthread.php?t=11954

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

開発したものとは異なるバージョンを使用してアプリをデプロイするホストを見つけた場合、人生がずっと楽になります。


rvmについては知っていましたが、フォーラムのリンクに感謝します。
メジャープロダクション

0

コマンドを実行します。

sudo su root

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

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


4
どうしてsudo -s
sarnold

1
またはsudo -i、これはログインシェルとしてシミュレートします。sudoを介してbashや別のシェルを実行するよりも、ネイティブのローカルルートログインに少し近いかもしれません。
バスティアンエベリング

1
どうしてsu?sudoに対するこの強迫観念は何ですか?sudoは必要ありません。今まで。
オリオン14年

2
afaik、surootパスワードが不明な場合に使用することはできません。ユーザーをsudoersに追加して実行sudo suすると、既存の既知のユーザーパスワードを使用してエスカレートすることができます
Luke

0

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

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


2
セキュリティの悪夢はお勧めしません!これは最悪の種類の慣行です。
カウンター

私はここで、私は他のユーザーアカウントを持っていない私のラズベリーパイのために、このソリューションを使用していて、私のホームネットワークに接続されている
ウフクözkanlı

0

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


-1

user @ server:〜$ sudo passwd root
[sudo] password for user:
Enter new UNIX password:
Retype new UNIX password:
passwd:password updated successfully
user @ server:〜$ su
Password:
root @ server:/ home / user#

その「#」プロンプトは美しさのものではありませんか?

私は「sudo」を1回だけ使用して、

user @ server:〜$ su
パスワード:
root @ server:/ home / user#

サーバーの寿命の間。

再び安全にするには、

root @ server:/ home / user#exit
exit
user @ server:〜$

システム管理者は、「sudo」が甘えん坊傾向の一部ではなかった長年にわたってこれを行ってきました。

これを行うとき、それは私のものではなく、世話をするあなたの責任です。

イアン


なんてフィドル。試してくださいsudo -s。ジョブ完了
ロアイマ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.