Bir NTFS bölümünde yürütmem gereken bir betiğim var. Komut dosyasının izni 600 olarak ayarlanmış.
Bir hatayı veya hiçbir şeyi bildirmeyen chmod 755 script.sh
komutunu çalıştırarak izinleri değiştirmeye çalıştım - ancak dosyadaki izinleri de değiştirmiyor:
$ stat script.sh
File: `script.sh'
Size: 297070 Blocks: 584 IO Block: 4096 regular file
Device: 811h/2065d Inode: 35515 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/ xxxxxx) Gid: ( 1000/ xxxxxx)
Access: 2010-09-30 14:05:16.041621000 -0700
Modify: 2010-09-30 14:05:05.070157000 -0700
Change: 2010-09-30 14:05:05.070475000 -0700
$ chmod 755 script.sh
$ stat script.sh
File: `script.sh'
Size: 297070 Blocks: 584 IO Block: 4096 regular file
Device: 811h/2065d Inode: 35515 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/ xxxxxx) Gid: ( 1000/ xxxxxx)
Access: 2010-09-30 14:05:16.041621000 -0700
Modify: 2010-09-30 14:05:05.070157000 -0700
Change: 2010-09-30 14:05:05.070475000 -0700
Gördüğünüz gibi, değişmeden kalır.
Mod, bölümün mount seçenekleriyle belirlenir (chmod ile değiştiremezsiniz).
Dosyalarda '755' ve dizinlerde '777' gibi bir şey kullanmak
Sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever
Çoğu insanın inandığının aksine, NTFS POSIX uyumlu bir dosya sistemidir ve NTFS'de izinleri kullanmak mümkündür .
Bunu etkinleştirmek için, bir "Kullanıcı Haritalama Dosyası" na ihtiyacınız var veya montaj sırasında (Windows ile uyumluluk gerekmediğinde) sadece permissions
seçeneğini vermelisiniz. Bu, sisteminizdeki linux kullanıcılarını NTFS/Windows gibi kullanıcı kimlikleriyle eşler ve bunları dahili olarak kullanır.
Bazı bilgiler ve bazı örnekler için ntfs-3g manpage bölümüne bakın. Daha fazla bilgiye ihtiyacınız olursa ntfs-3g mülkiyet ve izinlerle ilgili gelişmiş belgelere bakın .
(Bunun FAT dosya sistemlerinde çalışmadığını unutmayın.)
¹ Evet, linux/unix'te geçerli olan ancak Windows altında olmayan, sembolik bağlantıları ve sabit bağlantıları vb. İçeren dosya adlarını da depolayabilir.
NTFS bölümleri için fstab içindeki permissions
seçeneğini kullanın.
İlk önce ntfs bölümünü kaldırın.
UUID bölümünüzü blkid
ile tanımlayın
Sudo blkid
Ardından /etc/fstab
düzenleyin
# Graphical
gksu gedit /etc/fstab
# Command line
Sudo -e /etc/fstab
Ve ntfs bölümü için bir satır ekleyin veya düzenleyin
# change the "UUID" to your partition UUID
UUID=12102C02102CEB83 /media/windows ntfs-3g auto,users,permissions 0 0
Bir montaj noktası yapın (gerekirse)
Sudo mkdir /media/windows
Şimdi bölümü monte et
mount /media/windows
Size verdiğim seçenekler, auto
, önyükleme yaptığınızda bölmeyi otomatik olarak bağlar ve users
, kullanıcıların takmasına ve düzenlemesine izin verir.
Ardından ntfs bölümünde chown ve chmod komutunu kullanabilirsiniz.
Yukarıda htorque'un cevabında fmask ve/veya dmask ayarlarına ek olarak, sürücüde komut dosyaları çalıştırmak istiyorsanız, "exec" mount seçeneğini de ayarlamak zorunda kaldım.
Yani örnek şöyle olurdu:
Sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000,exec /dev/whatever /mnt/whatever
Kod yorumlayıcısını her zaman açıkça çalıştırabilirsiniz; bu durumda yürütme izinleri gerekmez. Komut dosyası bash kullanıyorsa, komut dosyasının ilk satırına bakılarak doğrulanabileceği gibi
bash script.sh
Komut dosyasının aynı bölümdeki diğer komut dosyalarını veya ikili dosyaları çağırdığını unutmayın, bu işe yaramaz. Ayrıca, stratejinin Bash Script, Perl, Python veya benzerlerinde yazılmış metinsel komut dosyalarının aksine ikili dosyalarla çalışmadığını unutmayın.
NTFS-3G belgelerinin Sahiplik ve İzinler bölümüne göre, dosya erişimini ve kontrol etmek için mount seçeneklerini kullanabiliriz yaratma . Kombinasyonlar çok karmaşıktır (oradaki iki tabloya bakınız). Ayrıca hepsini okuyup almıyorum. Örneğin, POSIX ACL'lerinin derleme sırasında NTFS-3G ikili paketinin seçilip seçilmediğini bilmiyorum. Ancak çıktığım en iyisi, Windows ve Linux arasındaki dosya sahipliği ve izinlerin makul bir eşleşmesini yaklaşık olarak belirlemek için bazı takma seçenekleriyle birlikte bir Kullanıcı Eşlemesi dosyası kullanmak.
Uyarı : Bu yalnızca NTFS veri bölümünü paylaşmamda en iyi şekilde çalışır (Windows'ta sürücü D:
) ) çift önyüklemeli Windows 8 ve Kubuntu 14.04 arasında. Talimatlar titizlikle retrospeksiyonda kaydedilir ancak ayrıntılı bir şekilde test edilmez. Tüm prosedürü tekrarlamak çok yorucu ve sıkıcı. Bu yüzden kendi sorumluluğunuzdadır izleyin. Ama yaparsanız, deneyiminizi geri paylaşın. Talimatları izlemeye karar verirseniz, gerçekte hareket etmeden önce tam bir resim elde etmek için lütfen tamamen okuyun. İyi şanslar!
Tamam, işte burda! Ayrıntılı talimatlar üç bölümden oluşmaktadır. Kısım 1 Windows'ta, Kısım 2 Linux'ta yapılmalıdır. Bölüm 3 test içindir.
NTFS-3G belgelerinin Kullanıcı Eşlemesi bölümü, Windows ve Linux, bir Windows sürümü ve bir Linux sürümü arasında kullanıcı eşlemesi yapmak için iki sürüm belirler. Tecrübelerime göre Linux versiyonu bir özledim ile sonuçlandı. Linux hesabı Windows hesabımla eşleştirilmedi , ancak bazı bilinmeyen bir hesap SID altında göründü. =. Sonuç olarak, bu bilinmeyen hesap Windows hesabımın tüm dosyalarının sahipliğini aldığı için bir karışıklık oldu. Bu durumda, mülkiyeti geri alma konusunda idari bir yetkiniz yoksa, Windows hesabınızdaki dosyalara erişilemez hale gelir. Ancak, bile olsa, yine de yanlış bir eşleşmedir. Yani, daha sonra Linux'ta oluşturduğunuz her hangi bir dosya Windows'taki bilinmeyen hesaba ve Windows'takiler Linux'ta root olarak atanır (doğru hatırlıyorsam). Öyleyse, Windows’ta mülkiyeti tekrar geri almanız ve Linux’un mülkiyeti değiştirmesi gerekir. Beklediğimiz gibi değil. Sorunu çözmek için yapılan birkaç umutsuz denemeden sonra pes ettim ve Windows versiyonuna döndüm. Bu işe yaradı. NTFS-3G dokümantasyonunun ilgili bölümünden çıkarılan detaylı talimatlar aşağıdaki gibidir:
sermap aracını indirin, bir yere çıkarın (benim durumumda, C:
sürücüsünü), paylaşılacak NTFS bölümünün dışında (benim durumumda D:
sürücüsü dışında) daha iyi.
Windows komut satırını açın. tools
aracının usermap
(varsayılan olarak) diziniyle değiştirin. Sonra aşağıdaki komutu çalıştırın:
C:\tools> mapuser > UserMapping
Bu bir şablon oluşturur ve onu UserMapping
adlı bir dosyaya yönlendirir. Dosyayı bir metin editörüyle açın, Not Defteri deyin, aşağıdaki satırları görmelisiniz:
# Generated by usermap for Windows, v 1.1.5
# For Windows account "Account" in domain "Domain"
# Replace "user" and "group" hereafter by matching Linux login
user::SID
:group:SID
Muhtemelen, ilk SID
, ikinci grup SID’niz iken kullanıcı SID’niz olmalıdır. Bunları sırasıyla whoami /user
ve whoami /groups
komutlarıyla kontrol edebilirsiniz.
SID'lerin doğru olduğundan emin olduktan sonra, yorumdaki talimatları takip ederek, yani, user::SID
satırındaki user
, kullanıcı adınızla group
ve :group:SID
satırındaki Sudo
ile Linux'taki birincil grup adınızı değiştirin. . Ubuntu'da bunlar aynı. Ayrıca, Linux grup adınızı user::SID
satırının ilk sütunundan sonra da ekleyin. Bu yüzden çizgi user:group:SID
gibi bir şeye benzemelidir. Öyle gözükmüyorsa, Windows'ta oluşturulan dosyalar Linux'ta user:root
dosyasına atanacak gibi görünüyor.
Dosya 'yı kaydet. Paylaşılacak NTFS bölümünde .NTFS-3G
(henüz mevcut değilse oluştur) adlı bir dizine taşıyın (benim durumumda D:
sürücüde).
Bu adım, Bölüm 3'teki sınama içindir. Paylaşılan NTFS bölümünde, yeni bir dizin ve yeni bir dosya oluşturun.
Şimdi Linux'a önyükleme yapın. umask
/etc/fstab
dosyasını düzenler. Paylaşılan NTFS bölümünün satırını aşağıdaki gibi bir şeye ekleyin veya değiştirin:
UUID=... /data ntfs defaults,umask=077,utf8 0 0
Temel olan, dmask
(fmask
ve _ [_ SOME_VARIABLE] _ de çalışabilir ancak test edilmemiş) ayarlamaktır. 077
seçsem de sevdiğin umask
için bir değer seç. Bu ayar olmadan, yeni oluşturulan dosyalar için o
thers için tam izinler verilecek gibi görünüyor.
Dosya 'yı kaydet. Şimdi paylaşılan NTFS bölümünü Sudo mount
veya remount (Sudo umount
ve ardından Sudo mount
) (benim durumumda /data
):
$ Sudo mount /data
Şimdi (hala Linux'ta) cd
bağlama noktasına (bu durumda, /data
), ls -l
oradaki dosyaları. Sahipliklerinin ve izinlerinin sırasıyla UserMapping
dosyasında ve /etc/fstab
içinde ayarladığınız umask
öğesinde belirttiğinize uyup uymadığını kontrol edin (izinler ve umask
arasındaki eşleşme bazı tamamlayıcı hesaplamaları gerektirir, bakınız man (1) umask daha fazla bilgi için). Yaparlarsa tebrikler, yarım hedefe ulaşılır. Aksi takdirde, seni fakir. Ubuntu ya da Windows'a sorun.
Sonra yeni bir dizin ve yeni bir dosya oluşturun. Sahipliklerini ve izinlerini kontrol etmek için ls -l
. Mülkiyet, kullanıcı adınız ve her zaman olduğu gibi birincil grup olmalıdır. İzinler, umask
ile eşleşmelidir. Şimdi bilgisayarınızı yeniden başlatın ve Windows'a önyükleyin. Paylaşılan NTFS bölümünde, Linux'ta oluşturduğunuz dizini ve dosyayı bulun. Windows hesabınıza atanıp atanmadıklarını görmek için özelliklerini kontrol edin. Öyleyse, tebrikler, hepiniz bitirdiniz. Aksi takdirde, kötü şans. Windows veya Ubuntu'ya sorun.
Eski konu, biliyorum ama yine de alakalı ve hala bir konu var, başka forumlarda/konulardaki farklı önerilerden oluşan ve Ubuntu GNOME 13.04'te test edilen ve Steam kütüphanesini tutmak için harici bir sürücü istiyorum.
NTFS bölümü harici bir usb sürücüdeyken, örneğin - bölüm bağlantının anında bağlandığı anlamına gelir - o zaman udev mount ntfs bölümlerini yürütme haklarıyla yapmak için aşağıdaki yöntemi kullanabilirsiniz.
Bir terminal penceresi açın ve şunları yapın:
$ Sudo nano /etc/udev/rules.d/90-usb-disks.rules
Ardından bu satırı boş/yeni bir dosyaya yapıştırın (değilse, nano çıkın ve komutu yeniden yayınlayın ancak dosya adını 91 -... gibi daha yüksek bir sayı ile başlayarak):
ENV{ID_FS_TYPE}=="ntfs", ENV{ID_FS_TYPE}="ntfs-3g"
Sonra kaydedin ve kapatın. Sürücüyü çıkarın ve ardından terminalde yapın:
$ Sudo service udev restart
Sonra sürücüyü tekrar takın ve keyfini çıkarın :)
Tüm adımlar:
ntfs-3g
yükleyin:
Sudo apt-get install -y ntfs-3g
Unmount NTFS bölümü:
Sudo umount /mnt/windows
UserMapping
dosyanızı oluşturmak için ntfs-3g.usermap
kullanın:
Sudo ntfs-3g.usermap /dev/disk/by-label/MY-NTFS
veya
Sudo ntfs-3g.usermap /dev/sdb1
UserMapping
dosyası eklemek için Remount NTFS bölümü:
mount -a
Sudo mkdir /mnt/windows/.NTFS-3G
Sudo mv UserMapping /mnt/windows/.NTFS-3G/
fstab
dosyanızı güncelleyin:
Sudo vim /etc/fstab
Güncelle mount satırı:
#
ekleyerek yorumlayın.UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0
(ntfs-3g
ve yalnızca default
seçeneğini kullanın)Bunun gibi bir şeye benzemeli:
#UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0
Son olarak, fstab
:
Sudo umount /mnt/windows
Sudo mount -a
Sahip olduğunuz her NTFS bölümünüz için bir kez yapın!
Bunu Windows 7 + ile kontrol ediyorum ve izinler Windows işletim sistemini etkiliyor! Giriş bölümümün Windows bölümündeki izinlerini değiştiriyorum ve Windows'u tekrar kullandığımda kullanıcının kırıldığını görebiliyordum!
USB cihazları için n ile ilgili bir soru yok. Bu cevap , her USB cihazını yürütme izinleriyle otomatik olarak monte etmek istiyorsanız, çirkin bir hack sağlar.
Linux'ta NTFS (ve FAT32) modu, bölümün mount seçenekleri tarafından belirlenir. Chmod ile değiştiremezsiniz.
Varsayım: USB sürücüsü, sürücü harfi ve bölüm numarası ile eşleşecek şekilde sdb1
, değiştir olarak görülür. senin durumunda . Genel sözdizimi sdxn
, burada x
sürücü harfidir ve n
örneğin _Sudo lsblk -f
_ tarafından görülen bölüm numarasıdır.
hazırlanması
NTFS bölümünü ayırın.
_Sudo umount /dev/sdxn # general syntax
Sudo umount /dev/sdb1 # modify to match your case
_
Özel bir mountpoint oluşturun (yalnızca yeni bir mountpoint istiyorsanız), örneğin
_Sudo mkdir -p /mnt/sd1
_
Kullanıcı kimliğinizin uid
numarasını kontrol edin (genellikle 1000, bazen 1001 veya 1002 ...)
_grep ^"$USER" /etc/group
_
ve sahipliğini almak istiyorsanız bu numarayı kullanın (varsayılan: root
).
NTFS bölümünü bağlayın
Örnek 1 (dosyalar için yürütme izni olmadan, 'diğerleri' için erişim yok),
_Sudo mount -o rw,user,uid=1000,dmask=007,fmask=117 /dev/sdxn /mnt/sd1 # general syntax
Sudo mount -o rw,user,uid=1000,dmask=007,fmask=117 /dev/sdb1 /mnt/sd1 # modify to match your case
_
bu durumda _this-script
_ betiğini çalıştırabilirsiniz.
_bash /mnt/sd1/this-script
_
Örnek 2 (dosyalar için çalıştırma izinleriyle, 'diğerleri' için erişim yok),
_Sudo mount -o rw,user,uid=1000,umask=007,exec /dev/sdxn /mnt/sd1 # general syntax
Sudo mount -o rw,user,uid=1000,umask=007,exec /dev/sdb1 /mnt/sd1 # modify to match your case
_
Bu durumda _this-script
_ betiğini ile çalıştırabilirsiniz.
_/mnt/sd1/this-script
_
ve çalıştırılabilir programları da bu konumdan çalıştırabilirsiniz (bu önerilmez).
Örnek 3 (birkaç kullanıcı olduğunda uygun, ancak güvenli olmayan herkes için tam izinler),
_Sudo mount -o rw,users,umask=000,exec /dev/sdxn /mnt/sd1 # general
Sudo mount -o rw,users,umask=000,exec /dev/sdb1 /mnt/sd1 # modify to match your case
_