GNU/Linux >> Belajar Linux >  >> Linux

Tautan Simbolik Tidak Berfungsi Seperti yang Diharapkan Saat Mengubah Pengguna?

Tautan simbolis tidak berfungsi, menggunakan standar UBUNTU 16 LTS… Ini menunjukkan “Izin ditolak” di mana saya berharap mendapatkan akses, tidak berfungsi bahkan setelah chown .

Contoh lengkap:

sudo rm /tmp/file.txt  # if exist, remove

cd ~
sudo chmod 666 data/file.txt
ls -l data/file.txt    # "-rw-rw-rw-" as expected
more data/file.txt     # working fine
sudo ln -sf $PWD/data/file.txt /tmp/file.txt  # fine
ls -l /tmp/file.txt    # "lrwxrwxrwx",  /tmp/file.txt -> /home/thisUser/file.txt
more /tmp/file.txt     # fine

sudo chown -h postgres:postgres /tmp/file.txt

sudo more /tmp/file.txt   #  NOT WORK! but its is sudo! and 666!

Jawaban yang Diterima:

Tindakan ini akan menghasilkan pesan kesalahan:Izin ditolak . Direktori, /tmp , memiliki izin termasuk bit lengket. Kesalahan ini disebabkan oleh konfigurasi kernel untuk fs.protected_symlinks .

Untuk menampilkan pengaturan, sysctl fs.protected_symlinks . Ini sama dengan 1 ketika diatur. Untuk menonaktifkan sementara, yang tidak disarankan , sysctl -w fs.protected_symlinks=0 . Untuk mematikan secara permanen, yang sekali lagi tidak disarankan , gunakan /etc/sysctl.conf .

Lihat patchwork.kernel.org untuk informasi lebih lanjut.

Untuk menghindari pembusukan tautan, paragraf ringkasan utama pada tautan simbolik dari hyperlink mengikuti.

Kees Cook – 2 Juli 2012, 20:17

Ini menambahkan batasan symlink dan hardlink ke VFS Linux.

Symlink:

Kelas masalah keamanan yang sudah lama ada adalah ras
waktu-pemeriksaan-waktu-penggunaan berbasis symlink, yang paling sering terlihat di direktori
yang dapat ditulis dunia seperti /tmp. Metode umum eksploitasi kelemahan ini
adalah melewati batas hak istimewa saat mengikuti symlink yang diberikan (yaitu proses root
mengikuti symlink milik pengguna lain). Untuk kemungkinan
daftar ratusan contoh yang tidak lengkap selama bertahun-tahun, silakan lihat:http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp

Solusinya adalah mengizinkan symlink untuk hanya diikuti ketika berada di luar
direktori yang dapat ditulisi dunia yang lengket, atau ketika uid dari symlink dan
pengikut cocok, atau ketika pemilik direktori cocok dengan pemilik symlink.


Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. CentOS/RHEL:/tmp mount point tidak dipasang secara otomatis saat ditambahkan di /etc/fstab

  3. kesalahan ldconfig:bukan tautan simbolik

  1. Mengapa tautan simbolis saya membuat file dan bukan folder?

  2. Bagaimana cara mengatur izin file tertentu saat mengarahkan keluaran?

  3. unix:///var/run/supervisor.sock tidak ada file seperti itu

  1. gema atau cetak /dev/stdin /dev/stdout /dev/stderr

  2. Bagaimana mengubah default /tmp ke /home/user/tmp

  3. Perbedaan dan penggunaan yang benar untuk /tmp dan /var/tmp