web-dev-qa-db-ja.com

-rwxr-xr-xへのアクセス許可を変更します

ファイルのアクセス許可を変更するには、宿題の問題に関するサポートが必要です。 -rwxr-xr-xにしたいですか?ユーザーのアクセス許可の作成方法がわからない。ありがとうございました。

7
Rich

宿題を分析しましょう:-rwxr-xr-x、3つの部分に分割します-rwx|r-x|r-x

  1. rwx:ユーザーまたは所有者の読み取り、書き込み、実行
  2. r-x:グループメンバーの読み取り、書き込みなし、実行
  3. r-x2と同じですが、今回は他のすべての人、別名othersと同じです。

いいえ、許可変更プログラムchmodを使用してコマンドを実行する必要はありません。

chmod 755 filename

説明:

  • 許可を次のように変更します。

    - user: 7 => r(4), w(2), x(1)
    - group: 5 => r(4), -, x(1)
    - others: r(4), -, x(1)
    

これを行うには、またはそのファイルまたはフォルダーを所有しているか、Sudoグループに属している必要があります。

16
George Udosen

許可を設定するための、より「おしゃべりな」バージョンもあります。

 chmod u=rwx,g=rx,o=rx filename

これの意味は:

  • ユーザー(u=rwxパーミッションを付与し、
  • グループ(g=rxパーミッションを付与し、
  • 他のユーザー(o=rxパーミッションを付与します。

変更したくない部分は省くことができます。例:

 chmod u=rwx filename

ユーザーの権限を設定し、他のユーザーはそのままにします。

許可を「追加」または「除外」することもできます。

 chmod g-x filename

グループのx権限を削除し、

chmod o+w filename

他のユーザーに書き込み許可を追加します。

SUID、SGID、およびスティッキービットを設定するには、sおよびt権限を使用します。

  • chmod u+s filename-SUIDを設定します
  • chmod g+s filename-SGIDを設定します
  • chmod a+t filename-スティッキービットを設定します(aは「すべて」を意味します。つまり、uおよびgおよびo
11
PerlDuck

必須のプリアンブル

システム内の重要なファイルとディレクトリのパーミッションを変更すると、 物事がひどく壊れる になります。システムを再インストールしたり、ライブセッションからデータを取得したりするのが不便な場合は、許可と所有権を安全に試してください。ファイルシステムと基本的なコマンドについて学習している間、avoidchmodおよびchownSudoとともに、またはルートシェルで実行する。このように、アクセス権エラーは、あなたが何か危険なことをしている可能性があることを知らせ、コマンドを再度チェックする必要があります。

chmodを使用してファイルのアクセス許可を変更します。このコマンドには、再帰フラグ-Rがあります。通常、このフラグは不必要に使用されますが、ほとんどの場合、ディレクトリにディレクトリ内のファイルと同じアクセス許可を与えたくないため、有用ではありません。ディレクトリには入力するための実行許可が必要なので、ファイルがないと便利ではありませんが、ファイルはプログラムである場合にのみ実行許可が必要です。 -Rフラグがないと、chmodは限定的で修復可能なダメージしか与えられませんが、-Rを使用すると、1つのコマンドでシステムをひどく混乱させることができます。 -Rを使用している場合は、本当に必要かどうかを検討し、入力ミスがないかファイルパスを確認してください。


ファイルを提供するように求められたモードは一般的なものです

-rwxr-xr-x

先頭のダッシュは、これが通常のファイルであることを示しています。 3か所のxビットは、すべてのユーザーが実行できる必要があることを示しています。したがって、このモードは誰でも実行できるプログラムに適しています。 /usr/bin/binなどのファイルを調べるとわかるように、システム上のほとんどのプログラムにはこのモードがあります(この回答の後半でアクセス許可を調べる方法について説明します)。セキュリティ上、所有者であるrootのみがこれらのファイルに書き込み(変更)できることが重要です。そのため、実行するプログラムは、root権限を持たないユーザーによって誤って(または別の方法で)変更できません。

George Udosen's answer で指摘されているように、許可ビットはユーザー(ファイルの所有者)、グループ、その他に個別に設定されます。これは、たとえば chmodのタグwiki で説明されており、インターネットやシステムのその他の多くの場所でも説明されています。 man chmodを実行することでそれについて読むことができます。ファイルの所有者がファイルを読み取り可能、書き込み可能、​​実行可能にし、グループや他のユーザーがファイルを読み取り可能、書き込み可能にするように求められました。 ls -ld fileを実行すると、ファイルの所有者とグループを確認できます(-dは、ディレクトリの場合にのみ必要です。そのフラグがない場合、lsはディレクトリ自体ではなくディレクトリの内容を表示します)。あまり関係のない情報が必要な場合は、statを使用します。

stat -c '%U %G' file

-cは、出力を制御することを意味します。 %U =ファイルの所有者、%G =グループ。 fileは、メタデータを調べるファイルへのパスに置き換える必要があります。現在のディレクトリにある場合、その名前で十分ですが、ファイルのパスを他の場所に指定できます。

$ stat -c '%U %G' /var/log/syslog
syslog adm

statコマンドは、ファイル許可を8進数および「人間が読める」形式で表示することもできます。

stat -c '%n %a %A' *

%nを使用してファイル名を表示し、*を使用して、現在のディレクトリ内のすべての非表示でないファイルでstatを実行しました。)

特定の8進数がchmodを表す許可ビットを忘れた場合、これは非常に便利なリファレンスになりますが、 vidarlo's answer はそれらを思い出す良い方法を提供します。

手動で設定する以外は元のモードを「リセット」する方法がないため、重要なファイルのアクセス権を変更する前に調べることを強くお勧めします。

他の回答では、必要なファイルモードの設定方法を8進表記で説明しています。 chmodは、8進数と同様に記号表記のファイルモードを受け入れます。これは、1つの許可ビット(そのrwxr-xr-x文字列の1文字)のみを変更する場合に便利です。 Perl Duck's answer は、これを実行して必要なモードを設定する方法を説明しています。

スクリプトを作成し、それを実行可能にしたい場合、これがchmodを使用する主な理由です。このコマンドでは、シンボリック表記を使用して実行権限を与え、他の変更は行いません。

chmod u+x file

スクリプトをすべてのユーザーが実行できるようにする必要がある場合は、uなしで実行します。

chmod +x file

これはおそらく現在の状況では十分でしょう。ファイルは多くの場合、所有者による読み取りと書き込みを許可する権限でデフォルトで作成され、グループおよび他のユーザーのみが読み取り可能ですが、グループの書き込み権限で作成される可能性もあります。これは、ユーザーがファイルを作成するときに設定する umask に依存します。ファイルを作成して見てみましょう!

$ touch somefile
$ stat -c '%a %A' somefile 
664 -rw-rw-r--

OK。したがって、モード755を取得するには、wセクションからgビットを削除し、すべての場所にxビットを追加する必要があります。

シンボリック表記では、次のようにできます。

$ chmod +x,g-w somefile 
$ stat -c '%a %A' somefile 
755 -rwxr-xr-x

chmod+xを記述する別の方法は、a+xです。 aはすべてを表し、文字が指定されていない場合に想定されます。重要:uはユーザーを意味し、所有者を意味しますが、oは他を意味します(not所有者)。

augまたはoのすべてのビットを=記号で設定することもできます。役に立たない許可設定で遊んでいます:

$ chmod =x somefile 
$ stat -c '%a %A' somefile 
111 ---x--x--x
$ chmod u=r,g=rwx,o= somefile 
$ stat -c '%a %A' somefile 
470 -r--rwx---

8進表記と記号表記の両方を使用して、setuid(これは所有者としてプログラムを実行できるので危険です)やsetgid(これにより、ディレクトリ内に作成されたファイルがsetgidでディレクトリのグループ所有権を継承します)のような特別なビットを追加できます特定のファイルシステムの場所にいるユーザーのグループのアクセス許可を常にいじることなく制御できるため便利です。

8進数表記が好きな人もいれば、シンボリックが好きな人もいます。後者はもう少し柔軟で、一部の人にとってはもう少し直感的です。両方のテストと学習を(安全に!)行うことをお勧めします。これにより、chmodコマンドが表示されたときに何が実行されるかを把握し、それに関する宿題の問題をflairで解決できます。

TL; DR

  • chmodに注意してください。何をしているかわからない限り、Sudo chmodを使用しないでください。 -Rフラグを使用する前に慎重に検討してください。
  • 最初に既存の権限を確認します。 statはあなたの友達です
  • 記号表記と8進表記の両方を学びます。
6
Zanna

8進数の許可で考えるのが最も簡単です:

  • 1は実行に等しい
  • 2は書き込みに等しい
  • 4は読み取りに等しい

これは、ビット単位で設定すると簡単にわかります。

r w x
0 0 1 #Execute = 1
0 1 0 #Write = 2
1 0 0 #Read = 4
1 0 1 #Read + Execute = 5
1 1 0 #Read + Write = 6
1 1 1 #All permissions = 7

これらは追加できます。読み取りおよび実行は4 + 1 = 5です。読み取り、実行、書​​き込みは7(4 + 2 + 1)、書き込みのみは2などです。

権限には、ユーザー、グループ、その他の3桁があります。ユーザーのrwxは、最初の数字が7(完全な許可)になります。グループのr-xは1 + 4 = 5になり、その他のr-xは5になります。したがって、これはパーミッション755と等しくなります。

4
vidarlo

chmodコマンドの構文は次のとおりです。

chmod [options] {permissions} file-name

ファイル/フォルダーのアクセス許可を設定する前に、ファイル/フォルダーのParent Directoryにいる必要があります。

 r(read) - 4 
 w(write) - 2
 x(execute) - 1

今、あなたの仕事からセットを分析します:(-rwxr-xr-x)

次のように4つの部分に分けます。

1。-File Type

2。 rwx User

r-x Group

4。 r-x Others

したがって、最後にファイルに許可を与えるには:

2。 rwx:4 + 2 + 1 = 7

r-x:4 + 0 + 1 = 5

4。 r-x:4 + 0 + 1 = 5

したがって、コマンドは

  chmod 755 *filename*
4
BoRRis