../new-path/
dirにファイルがあります。
lrwxrwxrwx 1 root root 32 Sep 6 19:43 test1.conf -> ../new-path1/test1.conf
VimダイアログでSudo vim test1.conf
onを使用してVimで編集すると、.
"test1.conf" [Permissions Denied]
とにかくVimを使用してsymlinkで編集する方法。私はシンボリックリンクについて本当に初心者です。
NOTE
この投稿 を試してみましたが、もちろんファイル/フォルダとシンボリックリンクを削除しますが、シンボリックリンクを削除せずに独立したファイルとして削除するか、リンクが解除されるだけでバックアップがありません何でも。
EDIT1
Lsattr $(readlink -f test1.conf)の出力
--------------e---- ./test2.conf
--------------e---- ./default-ssl.conf
lsattr: Operation not supported While reading flags on ./test1.conf
EDIT2
ls -l ../new-path1/test1.conf
の出力
lrwxrwxrwx 1 root root 32 Sep 10 14:13 ../new-path1/test1.conf -> ../new-path1/test1.conf
誰もがアドバイスをありがとう、誰もが私を助けることができると思います。
シンボリックリンクは、ハードドライブのどこかにあるファイルへのポインターです。シンボリックリンクは、ファイルの操作を簡単にするために使用されます。 Windowsには、デスクトップに使用されるショートカットと呼ばれるsimilarポインターがあるため、プログラムを起動するためにフォルダーをクリックする必要はありません。代わりに、システム上の別の場所にあるフォルダー内のプログラムを指すショートカットをデスクトップに置きます。
SymlinkはLinuxでも同じことを行いますが、コンソール/システム用であり、Graphics自体には何も関係ありません。そのため、Linuxファイルシステム上のプログラムとユーザーは、これらのポインターを作成して、より効率的な方法でファイルを見つけることができます。
ホームフォルダーにいるので、テストフォルダーとテストファイルを作成します。
pwd
/home/simmel
フォルダーとファイルを作成する
mkdir testfolder
touch testfolder/testfile
リストに表示されます
ls -la testfolder
total 40
drwxr-xr-x 2 simmel simmel 4096 Sep 11 16:19 .
drwxr-xr-x 88 simmel simmel 24576 Sep 11 16:22 ..
-rw-r--r-- 1 simmel simmel 0 Sep 11 16:19 testfile
次に、ホームフォルダーにテストフォルダーへのシンボリックリンクを作成します。
pwd
/home/simmel
ln -s testfolder/testfile
ls -la testfile
lrwxrwxrwx 1 simmel simmel 19 Sep 11 16:24 testfile -> testfolder/testfile
シンボリックリンクされているファイルへのアクセスに問題がある場合は、常にシンボリックリンクではなく、ファイルまたはフォルダー自体を確認してください。
シンボリックリンクのls -laは、すべてのユーザーに対してrwxを示していますが、それはまったく真実ではありません!フォルダー内のファイル(上記を参照)を確認する必要があります。
ls -la testfolder
total 40
drwxr-xr-x 2 simmel simmel 4096 Sep 11 16:19 .
drwxr-xr-x 88 simmel simmel 24576 Sep 11 16:22 ..
-rw-r--r-- 1 simmel simmel 0 Sep 11 16:19 testfile
つまり、ユーザーsimmelはフォルダーに完全にアクセス(読み取り、書き込み、実行)でき、グループsimmelは読み取りと実行のみが可能なため、システム上の他のユーザーもアクセスできます。ファイルまたはフォルダーの権利または所有権を変更すると、状況は異なります。だから、ファイルをルートに渡すようなことをするとしましょう。
Sudo chown root:root testfolder/testfile
ls -la
total 40
drwxr-xr-x 2 simmel simmel 4096 Sep 11 16:19 .
drwxr-xr-x 88 simmel simmel 24576 Sep 11 16:29 ..
-rw-r--r-- 1 root root 0 Sep 11 16:19 testfile
ご覧のとおり、ファイルは現在rootによって所有されており、rootのみが変更できますが、ユーザーsimmelはそれを読み取ることができます。シンボリックリンクの内容を見てみましょう。何らかの形で変更されましたか?
ls -la testfile
lrwxrwxrwx 1 simmel simmel 19 Sep 11 16:24 testfile -> testfolder/testfile
いいえ、まだ同じです。そのため、シンボリックリンク自体を見るのではなく、ターゲットをよく見てください。
Ubuntuでは、シンボリックリンクの権利はまったく関係ありません(BSDなどでは異なります)。
シンボリックリンクは、フォルダーやファイルを指します。シンボリックリンクされたフォルダ/ファイルへのアクセス許可を取得するには、フォルダ/ファイル自体の権限を変更する必要があります。
言い換えると、シンボリックリンクの所有権またはモードを変更することにした場合、フォルダー/ファイル自体の所有権またはモードを変更します。
正直に言うと、私は何が起こるかしか推測できません。 PerlDuckの提案は、あなたまたは他の誰かが誤ってこれをしたということでした
ln -s testfile testfile
これは、それ自体を指すシンボリックリンクになります。デッドリンク。ファイルシステム上の他の場所のファイルを指すのではなく、それ自体に戻るためです。色付きの端末を使用している場合、端末に赤色が表示され、このリンクが完全に壊れていることがわかります。
しかし、このようなデッドリンクを作成するために、同じディレクトリに同じ名前のファイルが存在することはありませんでした。これは動作しません。
だから私はまだあなたのファイルがなくなっていないことを望んでいる、それを見つけてみてください。
行う
Sudo find / -name test1.conf
たぶんあなたは幸運であり、それはまだそこにあります。
見つからない場合、ファイルは永久に失われる可能性があり、新しいファイルを作成する必要があります。
あなたのシンボリックリンク
test1.conf -> ../new-path1/test1.conf
デッドリンクです。存在しないディレクトリを指します。 ../new-path/
の下にファイルがあると言いましたが、リンクは代わりに../new-path1
を指します。リンクを修正します。
ln -fs ../new-path/test1.conf test1.conf
編集後、自己参照シンボリックリンクから../new-path1/test1.conf
から../new-path1/test1.conf
へ、つまりnew-path1
ディレクトリ内に、それ自体を指すtest1.conf
という名前のシンボリックリンクが作成されたことが明らかになりました。 test1.conf
はtest1.conf
へのシンボリックリンクであり、これはtest1.conf
へのシンボリックリンクです…
pduck@Host> ls -L ../new-path/test1.conf
ls: cannot access '../new-path/test1.conf': Too many levels of symbolic links
そのシンボリックリンク(rm test1.conf
)をドロップし、新しく作成して、既存のファイルを指すようにします。