web-dev-qa-db-ja.com

touch:「test」にタッチできません:権限が拒否されました

ディレクトリにファイルを作成しようとしていますが、次のようになります。

`touch`: cannot touch ‘test’: Permission denied

これが私のコマンドです:

[user@xxx api]$ ls -l
total 184
...
drwxrwxr-x  2 root root   4096 2016-04-12 14:38 public 
..
[user@xxx api]$ cd ./public
[user@xxx public]$ touch test
touch: cannot touch ‘test’: Permission denied
5
Edgaras Karka

writeおよびexecuteアクセス権がない場合、publicディレクトリの内容を編集することはできません。

  • 新しいファイルを作成しようとしていることを示しています。 testファイルがpublicに存在しない場合、touchは新しいファイルを作成しようとします。これは、親ディレクトリに対するwriteおよびexecute権限がないと実行できません。ディレクトリをトラバースするには、実行が必要です。新しいファイルのiノードエントリを追加するには、書き込みが必要です。どうやら、これらの権限のいずれかまたは両方を持っていません。

  • testファイルがpublicに既に存在する場合、touchはデフォルトでファイルの変更時刻を更新します。変更日時はファイルのiノードに格納されるため、これにはwritefileへのアクセスのみが必要です。ファイルがすでに存在する場合は、ls -l public/testなどのコマンドを使用してファイルの権限を調べ、書き込みアクセス権があるかどうかを確認する必要があります。


ディレクトリrwxrwxr-xの権限ビットマスクは、次のことを意味します。

  • rootユーザー、つまりディレクトリの所有者は、最初のrwxブロックで示されているように、directoryへの書き込み権限を持っています。このユーザーは、ディレクトリ(rビット)を読み取り、その内容をアクセスするためにトラバースすることもできます(xビット)。
  • rootグループのメンバー、つまりディレクトリ自体のグループで、それ自体がrootユーザーではない場合も、2番目に示されているように、ディレクトリーの読み取り、書き込み、およびトラバースを行うための同様の権限がありますrwxブロック

他のすべてのユーザーは、最後のr-xブロックで示されているように、読み取りと実行の権限のみを持っています。前述のように、ディレクトリの場合、実行権限により、そのディレクトリを走査してその内容にアクセスできます。これについては、 この質問 を参照してください。

権限を取得するにはどうすればよいですか?

次のいずれかを行うには、システム管理者(あなたかもしれません!)に相談する必要があります。

  • public/のようなコマンドを使用して、chown user public/ディレクトリの所有者にします。これは、編集権限が必要な唯一のユーザーである場合に適しています。
  • 適切な名前の新しいグループ、おそらくpubliceditorsを作成し、public/のようなコマンドを使用して、これをchgrp publiceditors public/ディレクトリのグループとして設定します。あなたと、ディレクトリを変更する機能を必要とする他のユーザーがグループのメンバーとしてリストされていることを確認します。このアプローチは、複数のユーザーが編集機能を必要とする場合に機能します。
  • ユーザーアカウントをrootグループのメンバーにします(お勧めしません)。
  • rootまたはSudosuパスワードを使用するなど、ログインまたはroot_にアクセスできるようにします。
  • chmod o+w publicのようなコマンドを使用して、ディレクトリの権限すべてのユーザーに書き込み権限を付与に変更します。これにより、ボックス上のeveryoneがパブリックディレクトリ内のファイルを編集および削除できるようになります。*これは望ましくないかもしれません。

*カーネルの必須アクセス制御など、他のアクセス制御の実施がない場合。

readwriteおよびexecuteアクセス許可は、ディレクトリ?

Linuxボックスを使用している場合、ディレクトリでは、読み取り許可ビットを使用してディレクトリのリストを読み取ることができます。書き込み許可ビットを使用すると、リストされているディレクトリを更新できます。これは作成ファイル*、-名前の編集ファイルに必要ですリンク解除 (削除)ファイル。実行ビットを使用すると、ディレクトリをトラバースしたり、そのファイルにアクセスしたりできます。詳細については、 Linuxディレクトリのアクセス許可 を参照してください。

*実際には、ファイルをディレクトリにリンクしています。ほとんどの場合、これはファイル作成の時点で行いますが、より複雑な例もあります。たとえば、元々ファイルシステムの別の場所に存在していたファイルへのハードリンクを作成するには、新しいファイルを作成していないにもかかわらず、リンクのターゲットディレクトリへの書き込みアクセスが必要になります。


なぜwriteディレクトリへのアクセス

追加するファイルに関連するiノードへの参照を追加するには、ディレクトリに書き込むことができる必要があります。

13

同様の問題に直面しましたが、私は通常のユーザーであり、ファイルを作成する権限がありません。したがって、ユーザーをrootに切り替えました

command:
 su <root user>

Rootパスワードを入力するように求められます(kali Linuxパスワードがtoorの場合)

これで私の問題は解決しました

0

publicディレクトリ権限に関しては、ユーザーrootまたはグループrootのメンバーのみが書き込みできます。

構成されているもの(drwxrwxr-x)の意味:

  • ユーザーrootには、読み取り、書き込み、実行権限があります
  • グループルートには読み取り/書き込み/実行権限があります
  • 他には読み取り実行権限があります

ユーザーがルートグループに属していることを確認するか、次のコマンドを使用して「その他」への書き込みアクセス権を付与します。

chmod o+w public
0
nex84