it-swarm-tr.com

NTFS (veya FAT32) bölümünde 'chmod'u nasıl kullanırım?

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.

126
Nathan Osman

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
79
htorque

Ç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.

83
JanC

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.

37
Panther

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
20
dbrews

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.

13
loevborg

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.

Bölüm 1

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:

  1. 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.

  2. 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.

  3. 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.

  4. 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).

  5. 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.

Bölüm 2

Ş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 others 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

Bölüm 3

Ş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.

EOF

8
reflectionalist

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 :)

6
user17254

Tüm adımlar:

  1. ntfs-3g yükleyin:

    Sudo apt-get install -y ntfs-3g
    
  2. Unmount NTFS bölümü:

    Sudo umount /mnt/windows
    
  3. 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
    
  4. 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/
    
  5. fstab dosyanızı güncelleyin:

    Sudo vim /etc/fstab
    

    Güncelle mount satırı:

    1. Mevcut montaj hattınızı yedekleyin! Satırı çoğaltın ve başında # ekleyerek yorumlayın.
    2. Sonra değiştir: UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
    3. Daha sonra: 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 0UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0

  6. 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!

Windows işletim sistemiyle UYARI!

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!

4
Eduardo Cuomo

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.

1
lumbric

NTFS bölümünü özel izinler ve sahip olan bir USB sürücüye takın

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
_
1
sudodus