2016-03-20 19 views
1

lsを使用してディレクトリにアクセスしようとしていますが、ユーザの場合はhduserの場合はsudo lsのみアクセスできますが、ユーザの場合はsudoなしでアクセスできます。sudoなしでコマンドを実行する

ユーザのためにsudoを一切使用しないで、そのディレクトリとそのすべてのサブディレクトリにアクセスするにはどうすればいいですかhduser?ここで

は、ファイルのパーミッションです:

[email protected]:~$ ll /media/avp/ 
total 24 
drwxr-xr--+ 4 root root 4096 Mar 20 12:50 ./ 
drwxr-xr-x 3 root root 4096 Aug 5 2015 ../ 
drwxrwxrwx 1 root root 12288 Mar 20 11:40 study/ 

[email protected]:~$ mkdir /media/avp/test 
mkdir: cannot create directory ‘/media/avp/test’: Permission denied 

[email protected]:~$ sudo mkdir /media/avp/test 
hduser[email protected]:~$ ls /media/avp/test 
ls: cannot access /media/avp/test: Permission denied 

[email protected]:~$ ls /media/avp/ 
ls: cannot access /media/avp/study: Permission denied 
ls: cannot access /media/avp/test: Permission denied 
study test 

[email protected]:~$ sudo ls /media/avp/ 
study test 

PS:私は、パスワードなしでsudoコマンドを実行についての記事を読んだが、私は、ファイルアクセスのコマンドの最初の場所でsudoコマンドを使用したくありません(例えば、ls、mkdirなど)。 私は数年前からUbuntuを使ってきましたが、わかりやすいものが欠けていますので、ここで質問しています。

答えて

1

Linuxの原則の1つは、allはファイルです。つまり、プロセスとディレクトリはファイルとして扱われなければならず、すべてのファイルには、ユーザー、グループ、および残りのユーザーの3つのアクセス権セットがあります。

アクセス許可は、実行するには1、実行するには4、読み込むには2、書き込みするには2を指定します。したがって、ユーザーが読み書きできるアクセス権 "644"のファイルが表示されているときは、グループと残りのユーザーは読み取りのみ可能です。すべての人がそのファイルで必要なことを行うことができることを意味する "777"(MS Windowsの方法)というファイルのアクセス許可が表示されている場合、そのアクセス権が "000"のファイルはその所有者ファイル。意味

-rw-r--r-- 1 manuel manuel 0 Mär 20 12:41 test.txt 

:「所有者ユーザーマヌエルが読み書きできる

$ touch test.txt 
$ ls -l test.txt 

はあなたがのように表示されます。アクセス権を変更するコマンドは「chmodコマンド」、例えば、新しいファイルを作成することですこのファイルは、manuelグループのユーザーメンバーだけがこのファイルを読むことができ、残りのユーザーはそれを読むことができます。

これらの権限はどこから得られましたか?うまく "umask"に定義されています。デフォルトでは、作成またはコピーする新しいファイルの場合はumaskが644、 "mkdir"コマンドでdirを作成するときはdsの場合は755、 "ls -la" "file"がディレクトリであることを示すいくつかの行頭に "d"があり、ユーザのアクセス権限が必要です。linuxディレクトリでは、実行権限を持つファイルです。

あなたはコマンドを使用してシステムに新しいユーザーを追加するたびに:

$sudo adduser thomas 

コマンド自動的には、グループを作成し、「トーマス」と彼に/ homeディレクトリでディレクトリを作成します。 apacheやmysql、postgresqlをインストールすると、apt-getはプロセスを処理する一意のユーザーとグループも作成します。これは危険なWindowsのようなアプローチです。誰かがそのユーザーをハックすると、すべてのシステムを完全に制御できます。もちろん、Linuxでは、ユーザーの "root"は可能な限り少ないプロセス数で実行する必要があります。

あなたはを使用してシステム内の現在のグループを見ることができます:ファイルので、「トーマス」は、彼ができない、先ほど作成したファイルtest.txtのを編集したいユーザーを想定、

$ cat /etc/group 

ユーザ「manuel」及びグループ「manuel」に属する。あなたは、コマンドchownコマンドでファイルの所有者を変更することができ、いくつかのオプションがあります。

$ chown thomas.thomas test.txt 

今ファイルは、ユーザー「トーマス」とグループ「トーマス」によって所有され、それが理由かもしれない問題であり、後でファイルを編集したい場合はできません。代わりに、所有者を変更するには、多分あなただけのファイルへの書き込み権限を追加する必要があります。

$chmod 666 test.txt 

今すぐユーザートーマスはあまりにもあなたをそのファイルに書き込むことができます。しかし今、あなたは ユーザーがファイルに書き込むことができるという問題があります。

$chmod 664 test.txt 

し、グループにユーザーを追加するには:真の解決策は、ユーザーやグループに書き込み権限を与えることです

$sudo useradd -G manuel thomas 

は今、「トーマス」は「グループのメンバーであるマヌエル"(ユーザーは多くのグループのメンバーになれる)、ファイルに書き込むことはできますが、他のユーザーは書き込むことはできません。

drwxr-xr--+ 4 root root 4096 Mar 20 12:50 ./ 

rootユーザーが所有する「ファイル」で、ルートグループとhduserはそれを実行する権限がありません。

今すぐあなたのdirはことを理解しています。

$ sudo chown -R hduser /media/avp/ 

をしたり、グループ「ルート」にhduserを追加することができますが、それは危険である:あなたはhduserに再帰的にディレクトリ全体を与えるように、いくつかのことを行うことができます。

+1

徹底した説明をいただきありがとうございます! – avp