chown tidak mengubah tautan simbolik

312

Saya mencoba mengubah pengguna / grup tautan simbolik dengan perintah:

$ chown -h myuser:mygroup mysymbolic/ 

Tapi itu tidak berubah. Saya login sebagai root. Pengguna / grup saat ini diatur ke root: root. Apa yang salah?


sumber
Sistem operasi apa yang Anda gunakan? Menurut halaman manaul, opsi -h hanya berdampak pada sistem yang dapat mengubah kepemilikan tautan simbolik.
Jichao
Apakah Anda menggunakan NFS mount?
Ortomala Lokni
Apa pun yang berakhir dengan /adalah direktori. Maksud Anda mysymbolic, yang merupakan tautan simbolik, bukan mysymbolic/yang mungkin merupakan direktori yang ditunjuknya.
David Schwartz

Jawaban:

381

Saya menempatkan tebasan di akhir target:

chown -h myuser:mygroup mysymbolic/ 

hanya menghapus garis miring pada akhirnya dan berhasil. Inilah cara yang benar:

 chown -h myuser:mygroup mysymbolic
rizidoro
sumber
9
tidak berfungsi untuk saya di ubuntu
Radek
2
Wow, ini butuh waktu berjam-jam untuk kutemukan.
mendefinisikan
54
@ Radek Itu bekerja untuk saya di Ubuntu selama saya ingat -hbendera.
IQAndreas
29
Bekerja untuk saya di Ubuntu dengan -h dan tanpa garis miring.
friederbluemle
8
Saya tidak percaya setelah 4 tahun, saya telah bertemu dengan masa lalu saya mengalami masalah yang sama, missin '-h'!
Antony D'Andrea
29

Saya sudah mencoba ini sendiri dan berhasil untuk saya. Jika Anda memiliki -h itu mengubah pemilik tautan simbolik, tetapi jika Anda tidak maka itu mengubah pemilik file itu sendiri dan bukan tautannya.

Tapi sepertinya itu tidak berhasil karena tautan simbolik terhubung ke suatu direktori

Arto Uusikangas
sumber
2
Untuk apa nilainya, halaman manual pada OS X jauh lebih jelas pada opsi -h daripada yang ada di (Arch) Linux. “-H Jika file tersebut adalah tautan simbolik, ubah ID pengguna dan / atau ID grup dari tautan itu sendiri.” Vs. “-h, --no-dereference memengaruhi tautan simbolik alih-alih file yang dirujuk (hanya berguna untuk sistem yang dapat mengubah kepemilikan symlink) ”
Matijs
6

Saya tidak dapat chowndirektori bahkan dengan -htetapi menggunakan path lengkap bekerja.

# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# chown -h deploy:deploy apps
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# chown -h deploy:deploy apps/
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# pwd 
/var/www/html
# chown -h deploy:deploy /var/www/html/apps
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 deploy deploy   32 Dec 30 09:02 apps -> /u/apps/
Steve Tauber
sumber
5

Apakah target file atau direktori?

Jika itu adalah direktori maka coba -H (huruf besar H)


sumber
target adalah direktori
lihat jawaban saya yang diedit tentang direktori
6
Maaf untuk necromancy utas, tetapi saya ingin menunjukkan bahwa sintaks yang benar adalah dengan huruf kecil 'h'.
4

secara sederhana.

chown -h myuser:mygroup <symlink> [without trailing slash]

harus cukup dan bekerja!  

Aziz Zoaib
sumber
3

Buat tautan itu oleh pengguna saya di rumah myuser, dan mv tautan ini ke lokasi target oleh sudo.

Misalnya: (sebagai pengguna saya), ln -s somedir/ linkname (akan menjadi tautan rusak jika somedir / tidak ada di direktori pengguna)

Lalu, sudo mv linkname targetlocation(akan menjadi tautan yang valid asalkan targetlocation/somedir/ada)

Wangdong
sumber
Jawaban Anda tanpa detail dan sulit dipahami sepenuhnya. Harap pertimbangkan untuk merevisi jawaban Anda untuk memberikan detail lebih lanjut.
James Mertz
1

Saya punya masalah serupa. Bagi saya, saya tidak bisa chmod tautan simbolik bahkan sebagai root terlepas bagaimana saya memanggil chmod. Untuk menambah kebingungan pada ini, nautilus menunjukkan pemilik / grup sebagai tidak ada. Pemilik itu kosong. Jadi saya mencoba mengubah tautan simbolik menggunakan nautilus yang berjalan sebagai root karena chmod tidak berfungsi dan nautilus macet !!

Tapi saya pikir saya sudah tahu masalahnya. Direktori yang ditunjuk oleh tautan simbolik memiliki izin yang berbeda dari tautan simbolik. Jadi saya chmod'ed direktori target (menggunakan -h) ke nama pengguna / grup saya. Kemudian chmod'ed tautan simbolis ke yang sama dan itu berhasil! Dan melihat detail tautan simbolik di nautilus (dengan izin root) sekarang tidak lagi macet.

Jadi bagi orang lain yang memiliki masalah serupa, periksa izin direktori / file target dan pastikan itu kompatibel dengan izin yang Anda tetapkan tautan simboliknya.

cgrey
sumber
1

Perhatikan bahwa mengubah tautan ownerhanya dapat berfungsi jika target dapat diakses oleh pengguna baru yang ingin Anda tetapkan.

Misalnya, jika target Anda berada di dalam folder di mana pengguna yang ingin Anda tetapkan tidak memiliki hak yang cukup, ln -s commandperilakunya sedemikian rupa sehingga tidak akan melakukan apa-apa sama sekali.

AnomalySmith
sumber
1

Untuk Solaris (diverifikasi pada S11.3) untuk tautan simbolik ke direktori yang perlu Anda jalankan

root@ac11x017:/var/tmp$ ls -lal dumpdir
lrwxrwxrwx   1 root     root          16 Jun 15 09:08 dumpdir -> /data/dumpdir/
root@ac11x017:/var/tmp$ chown -RP oracle:oinstall dumpdir
lrwxrwxrwx   1 oracle   oinstall      16 Jun 15 09:09 dumpdir -> /data/dumpdir/
RaamEE
sumber