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

119

Bir NTFS bölümünde çalıştırmam gereken bir komut dosyası var. Komut dosyasının izni 600 olarak ayarlanmıştır.

İzinleri chmod 755 script.sh çalıştırarak, bir hata veya herhangi bir şey bildirmeyen bir şekilde 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.

    
sordu Nathan Osman 07.11.2010 00:12

10 cevap

75

Mod, bölümün mount seçenekleri tarafından belirlenir (chmod ile değiştiremezsiniz.)

Dosyalarda '755' ve dizinlerde '777' için

gibi bir şey kullanırdınız
sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever
    
verilen cevap htorque 07.11.2010 00:35
78

Çoğu insanın inandığının aksine, NTFS POSIX uyumlu bir dosya sistemidir ve NTFS'deki izinleri kullanmak mümkündür .

Bunu etkinleştirmek için, bir "Kullanıcı Eşleme Dosyası" na ihtiyacınız var veya montaj sırasında permissions seçeneğini vermeniz yeterlidir (Windows ile uyumluluk olmadığında). Bu, sisteminizdeki linux kullanıcılarını NTFS / Windows gibi kullanıcı kimlikleriyle dahili olarak kullanır.

Bazı bilgiler için bazı ntfs-3g manpage sayfasına bakın. örnekleri. Daha fazla bilgiye ihtiyacınız varsa, ntfs-3g sahiplik ve izinler ile 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 dosya adlarını da saklayabilir, sembolik linkleri destekler. hardlinks, vb.

    
verilen cevap JanC 02.11.2011 17:57
34

NTFS bölümleri için, fstab içinde permissions seçeneğini kullanın.

İlk önce ntfs bölümünü ayırın.

Bölüşünüzü blkid

ile tanımlayın
sudo blkid

Ardından /etc/fstab

dosyasını 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 bağlama noktası oluştur (gerekirse)

sudo mkdir /media/windows

Şimdi bölmeyi monte et

mount /media/windows

Size verdiğim seçenekler, auto , önyükleme yaptığınızda bölümü otomatik olarak yükleyecek ve users , kullanıcıların mount ve umount yapmasına izin veriyor.

Daha sonra ntfs bölümünde chown ve chmod kullanabilirsiniz.

    
verilen cevap Panther 28.12.2011 17:31
20

Yukarıdaki htorque cevabında fmaskı ve / veya dmask ayarlamaya ek olarak, sürücüdeki komut dosyalarını çalıştırmak isterseniz, "exec" mount seçeneğini de ayarladım.

Yani örnek şöyle olurdu:

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000,exec /dev/whatever /mnt/whatever
    
verilen cevap dbrews 14.12.2010 09:26
13

Her zaman betik yorumlayıcısını açıkça çağırabilirsiniz, bu durumda yürütme izinleri gerekli değildir. Komut dosyası, komut dosyasının ilk satırına bakılarak doğrulanacağı gibi bash kullanıyorsa, sadece çalıştırın

bash script.sh

Komut dosyasının aynı bölümdeki diğer komut dosyalarını veya ikili dosyalarını çağırdığını unutmayın, bu işe yaramaz. Ayrıca, stratejinin Bash Script, Perl, Python veya benzerlerinde yazılmış metin komut dosyalarının aksine ikili dosyalar ile çalışmadığını unutmayın.

    
verilen cevap loevborg 14.12.2010 11:00
8

NTFS-3G'nin Sahiplik ve İzinler bölümüne göre dokümantasyon, erişim ve oluşturma dosyasını kontrol etmek için mount seçeneklerini kullanabiliriz. Kombinasyonlar çok karmaşıktır (orada iki tabloya bakınız). Ayrıca hepsini okuma ve alma. Örneğin, POSIX ACL'lerin NTFS-3G ikili paketinde değil, derleme zamanında seçilip seçilmediğini bilmiyorum. Ancak en iyi çıkarılan, bazı mount ile birlikte bir Kullanıcı Eşleme dosyası kullanıyor. Windows ve Linux arasındaki dosya sahipliğinin ve izinlerin makul bir şekilde eşleştirilmesine ilişkin seçenekler.

Uyarı : Bu, yalnızca çift önyüklemeli Windows 8 ve Kubuntu 14.04 arasında bir NTFS veri bölümü (Windows'ta D: sürücü) paylaşımı için en uygun olanıdır. Talimatlar dikkatli bir şekilde retrospeksiyona kaydedilir ancak tam olarak test edilmez. Bütün prosedürü tekrarlamak çok yorucu ve yorucudur. Yani kendi sorumluluğunuzda takip edin. Ama eğer yaparsanız, deneyiminizi paylaşın. Talimatlara uymaya karar verirseniz, fiilen harekete geçmeden önce bütün bir resme sahip olmak için lütfen tam olarak okuyunuz. İyi şanslar!

Tamam, işte gidiyorsun! Detaylı talimatlar üç bölümden oluşmaktadır. Bölüm 1, Linux'ta 2. Bölümde Windows üzerinde gerçekleştirilmelidir. Bölüm 3 test içindir.

Bölüm 1

NTFS-3G belgelerinin Kullanıcı Eşlemesi bölümü, iki Windows ve Linux, bir Windows sürümü ve bir Linux sürümü arasında kullanıcı eşlemesi kurdu. Benim deneyimim, Linux versiyonunun bir miss ile sona ermesiydi. Linux hesabı Windows hesabımla değil oldu, ancak bilinmeyen hesabı bir SID . Bu bilinmeyen hesap, Windows hesabımın tüm dosyalarının sahipliğini aldığından sonuç bir karışıklık oldu. Bu durumda, sahipliğini geri almak için bir yönetici ayrıcalığı olmadıkça, Windows hesabınızın altındaki dosyalar erişilemez duruma gelir. Ancak, yönlendirseniz bile, bu hala yanlış bir haritalamadır. Bu, daha sonra Linux'ta oluşturduğunuz dosyalar Windows'ta bilinmeyen hesaba atandığında ve Windows'dakiler Linux'ta root olarak atandığında (doğru hatırlıyorsam) anlamına gelir. Yani Windows'da sahiplik tekrar geri almak ve Linux üzerinde sahiplik sahip olmak gerekir. Olmasını beklediğimiz şey bu değil. Sorunu düzeltmek için birkaç umutsuz girişimin ardından, pes ettim ve Windows sürümüne döndüm. Bu işe yaradı. NTFS-3G dokümantasyonunun ilgili bölümünden elde edilen ayrıntılı talimatlar:

  1. usermap aracını indirin, bir yere çıkarın (benim durumumda,% co_de sürücü %), NTFS bölümünün dışında (benim durumumda C: ) paylaşılacak.

  2. Windows komut satırını açın. Ayıklanan dizine D: aracının tools (varsayılan olarak) değiştirin. Sonra aşağıdaki komutu çalıştırın:

    C:\tools> mapuser > UserMapping
    

    Bu bir şablon oluşturur ve usermap adlı bir dosyaya yönlendirir. Dosyayı bir metin düzenleyicisiyle 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 UserMapping 'si sizin kullanıcı SID'niz, ikinci grup SID'niz olmalıdır. Bunları sırasıyla SID ve whoami /user komutlarıyla kontrol edebilirsiniz.

  3. SID'lerin doğru olduğundan emin olduktan sonra, yorumdaki talimatları uygulayarak, whoami /groups satırında kullanıcı adınıza user ve user::SID satırında group değerine geçin. Linux'ta birincil grup adınız. Ubuntu'da, onlar aynı. Ayrıca, Linux grup adınızı :group:SID satırının ilk kolonundan sonra da ekleyin. Yani çizgi user::SID gibi bir şey gibi görünmelidir. Öyle görünüyor ki, Windows üzerinde oluşturulmuş dosyalar Linux'ta user:group:SID olarak atanacaktır.

  4. Dosyayı kaydedin. Paylaşılacak NTFS bölümünde user:root adlı bir dizine (henüz olmasa da oluştur) bir dizine taşıyın (benim durumum .NTFS-3G ).

  5. Bu adım Bölüm 3'teki test 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. D: sudo dosyasını düzenleyin. Paylaşılan NTFS bölümü için satırı aşağıdaki gibi bir şeye ekleyin veya değiştirin:

UUID=...    /data    ntfs    defaults,umask=077,utf8    0    0

Asıl /etc/fstab değerini ayarlamaktır ( umask ve dmask ayrıca çalışabilir fakat test edilmemiş olabilir). % Co_de% seçtiğim halde, beğendiğiniz fmask için bir değer seçin. Bu ayar olmadan görünüyor, yeni oluşturulan dosyalar için umask ths için tam izin verilecektir.

Dosyayı kaydedin.Şimdi 077 veya remount ( o ve sonra sudo mount ) paylaşılan NTFS bölümü (benim durumum sudo umount ):

$ sudo mount /data

Bölüm 3

Şimdi (hala Linux'ta) sudo mount 'i bağlama noktasına (benim durumumda, /data ),% oradaki dosyaları co_de. Sahipliklerinin ve izinlerinin sırasıyla cd dosyasında ve /data olarak ayarladığınız ls -l ile eşleşip eşleşmediğini kontrol edin (izinler ile UserMapping arasındaki eşleşme bazı tamamlayıcı hesaplamaları gerektirir, bkz. adam (1) umask daha fazla bilgi için). Yaparlarsa, tebrikler, yarım hedefe ulaşılır. Aksi halde fakirin. Ubuntu veya Windows'a sorun.

Ardından yeni bir dizin ve yeni bir dosya oluşturun. Sahipliklerini ve izinlerini kontrol etmek için umask . Sahiplik, her zamanki gibi kullanıcı adınız ve birincil grubunuz olmalıdır. İzinler /etc/fstab ile eşleşmelidir. Şimdi bilgisayarınızı yeniden başlatın ve Windows'u önyükleyin. Linux üzerinde oluşturduğunuz dizini ve dosyayı paylaşılan NTFS bölümünde bulun. Windows hesabınıza atanıp atanmadıklarını görmek için özelliklerini kontrol edin. Eğer öyleyse, tebrikler, hepiniz bitersiniz. Aksi takdirde, kötü şans. Windows veya Ubuntu'ya sorun.

EOF

    
verilen cevap reflectionalist 23.08.2014 00:35
5

Eski iş parçacığı, biliyorum, ama hala ilgili ve diğer belirli forumlar / konular üzerinde farklı önerilerden oluşan ve bir Steam kütüphanesi tutmak için bir harici sürücü istedim GNOME 13.04 test özel bir kullanım ipucu eksik, ...

NTFS bölümü harici bir USB sürücüsündeyken, yani - bu, bağlantı sırasında bağlantı anında sinyale bağlı olduğu anlamına gelir - daha sonra, udev mount ntfs bölümlerini yürütme hakları ile gerçekleştirmek için aşağıdaki yöntemi kullanabilirsiniz.

Bir terminal penceresi açın ve şunu yapın:

$ sudo nano /etc/udev/rules.d/90-usb-disks.rules

Sonra bu satırı boş / yeni bir dosyaya yapıştırın (eğer değilse, nanodan çıkın ve komutu yeniden verin, ancak dosya adını 91 gibi daha yüksek bir sayı ile başlatabilirsiniz.):

ENV{ID_FS_TYPE}=="ntfs", ENV{ID_FS_TYPE}="ntfs-3g"

Sonra kaydedin ve kapatın. Sürücüyü fişten çekin ve sonra terminali yapın:

$ sudo service udev restart

Ardından, sürücüyü tekrar takın ve keyfini çıkarın:)

    
verilen cevap user17254 15.09.2013 01:51
2

Tüm adımlar:

  1. ntfs-3g yüklemesi:

    sudo apt-get install -y ntfs-3g
    
  2. NTFS bölümünün bağlantısını kaldırın:

    sudo umount /mnt/windows
    
  3. ntfs-3g.usermap dosyanızı oluşturmak için UserMapping kullanın:

    sudo ntfs-3g.usermap /dev/disk/by-label/MY-NTFS
    

    veya

    sudo ntfs-3g.usermap /dev/sdb1
    
  4. UserMapping dosyasını eklemek için NTFS bölümünü tekrarlayın:

    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üncelleme bağlama satırı:

    1. Mevcut montaj hattınızı yedekleyin! Satırı çoğaltın ve başlangıçta # ekleyerek yorum yapın.
    2. Sonraki değiştir: UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
    3. Sonrakine: UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0 (% Co_de% ve sadece ntfs-3g seçeneğini kullanın)

    Böyle bir şeye benzemeli:

    default % Co_de%

  6. Son olarak, #UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0 'nizi kullanarak remount yapın:

    sudo umount /mnt/windows
    sudo mount -a
    

Bunu, sahip olduğunuz her NTFS bölümü için bir kez yapın!

WINDOWS OS İLE UYARI!

Windows 7 + ile kontrol ediyorum ve izinler Windows işletim sistemini etkiliyor! Windows dizinindeki Giriş Dizininin izinlerini değiştirdim ve Windows'u tekrar kullandığımda kullanıcının kırıldığını gördüm!

    
verilen cevap Eduardo Cuomo 26.02.2017 15:49
1

USB cihazları için n ile ilgili bir soru var. Bu cevap Her USB aygıtını yürütme izinleriyle otomatik olarak bağlamak istiyorsanız çirkin bir hack sağlar.

    
verilen cevap lumbric 28.12.2011 16:06
1

Özel izinler ve sahip

olan bir USB sürücüsünde NTFS bölümünü bağlama

Linux'ta, NTFS (ve FAT32) modu, bölümün mount options tarafından belirlenir. Bunu chmod ile değiştiremezsiniz.

Varsayım: USB sürücüsü sdb1 , durumunuzdaki sürücü harfini ve bölüm numarasını eşleştirmek için olarak görünür. Genel sözdizimi sdxn şeklindedir; burada x sürücü harfi ve n , örnek olarak görüldüğü bölüm numarasıdır. sudo lsblk -f

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 bağlama noktası oluşturun (yalnızca yeni bir bağlama noktası istiyorsanız), örneğin

    ile
    sudo mkdir -p /mnt/sd1
    
  • Kullanıcı kimliğinizin uid sayısını kontrol edin (genellikle 1000, bazen 1001 veya 1002 ...)

    grep ^"$USER" /etc/group
    

    ve sahipliğini ele geçirmek istiyorsanız bu numarayı kullanın (varsayılan değer root 'dir).

NTFS bölümünü takma

Örnek 1 (dosyalar için yürütme izinleri olmadan, başkalarına 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 komut dosyasını

    ile çalıştırabilirsiniz
    bash /mnt/sd1/this-script
    

Örnek 2 (dosyalar için yürütme izinleri, 'diğerleri' için erişim yokken)

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 komut dosyasını

    ile çalıştırabilirsiniz.
    /mnt/sd1/this-script
    

    ve bu konumdan da yürütülebilir programları çalıştırabilirsiniz (ö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
    
verilen cevap sudodus 15.09.2017 13:02

Etiketlerdeki diğer soruları oku