Vraag Hoe gebruik ik 'chmod' op een NTFS (of FAT32) partitie?


Ik heb een script dat ik moet uitvoeren op een NTFS-partitie. De toestemming van het script is ingesteld op 600.

Ik heb geprobeerd de rechten te wijzigen door te draaien chmod 755 script.sh, die een fout of iets niet meldt - maar het verandert ook niet de permissies van het bestand:

$ 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

Zoals je ziet, blijft het ongewijzigd.


119
2017-11-06 23:12


oorsprong


Er kan een betere oplossing worden gevonden hier Deze twee vragen moeten worden gekoppeld!


antwoorden:


De modus wordt bepaald door de mount-opties van de partitie (je kunt dit niet veranderen via chmod).

Voor '755' op bestanden en '777' op mappen zou je zoiets gebruiken

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever

75
2017-11-06 23:35



Oké, dat zou ook een paar andere dingen verklaren. - Nathan Osman
Wat moet ik plaatsen in plaats van /dev/whatever en /mnt/whatever als ik de toestemming van mijn HDD-partitie moet wijzigen /media/Prtn - Prakash Gautam
Zorgt montage op deze manier voor behoud van de oorspronkelijke instellingen van de schijf? D.w.z. is het veilig om een ​​Windows-schijf te monteren? - Jonathan
Ik stel de gebruiker in op 'andrew' wat mijn hoofdgebruiker is. Door ls voor NTFS-partities wordt getoond dat alle bestanden / mappen daarin door root zijn. - deathangel908
De echte oplossing is ntfs-3g.usermap. Zie hieronder... - Eduardo Cuomo


In tegenstelling tot wat de meeste mensen denken, is NTFS een POSIX-compatibel bestandssysteem, en het is mogelijk om permissies te gebruiken op NTFS.

Om dit in te schakelen, hebt u een "gebruikerskaartbestand" nodig of geeft u gewoon het permissions optie bij het monteren (wanneer geen compatibiliteit met Windows vereist is). Hiermee worden linux-gebruikers op uw systeem toegewezen met de gebruikers-ID's zoals NTFS / Windows die ze intern gebruiken.

Zie de ntfs-3g manpage voor wat info en enkele voorbeelden. Als u meer informatie nodig heeft, raadpleegt u de ntfs-3g geavanceerde documentatie over eigendom en rechten.

(Merk op dat dit niet werkt op FAT-bestandssystemen.)

¹ Ja, het kan ook bestandsnamen opslaan die geldig zijn in linux / unix maar niet onder Windows, ondersteunt symlinks en hardlinks, etc.


78
2017-11-02 16:57



hier is goede documentatie. in het kort: sudo ntfs-3g.usermap /dev/disk/by-label/MY-NTFS en dan sudo mv UserMapping /media/MY-NTFS/.NTFS-3G/ - flying sheep
Dus dit zal je toelaten om willekeurig rechten in te stellen zoals chmod 655 /some/file op de NTFS-partitie aangekoppeld in Linux? Ik probeer erachter te komen hoe ik mijn home-partitie van Linux kan samenvoegen in c: \ Users. Kan ik met het gebruik van usermap alle rechten behouden? Ik was van plan om de directory c: \ Users naar / home in Linux te installeren. - trusktr
dit zou het geaccepteerde antwoord moeten zijn. - petermolnar
Laat me nogmaals uw opmerking benadrukken: "wanneer er geen compatibiliteit met Windows nodig is". ref: askubuntu.com/questions/92863/... - Eliptical view
ntfs-3g manpage link gebroken - ctrl-alt-delor


Gebruik voor NTFS-partities de permissions optie in fstab.

Ontkoppel eerst de NTFS-partitie.

Identificeer je partitie UUID met blkid

sudo blkid

Bewerk vervolgens /etc/fstab

# Graphical 
gksu gedit /etc/fstab

# Command line
sudo -e /etc/fstab

En voeg een regel toe of bewerk deze voor de NTFS-partitie

# change the "UUID" to your partition UUID
UUID=12102C02102CEB83 /media/windows ntfs-3g auto,users,permissions 0 0

Maak een koppelpunt (indien nodig)

sudo mkdir /media/windows

Monteer nu de partitie

mount /media/windows

De opties die ik je heb gegeven, auto, zal de partitie automatisch koppelen tijdens het opstarten en users staat gebruikers toe om te monteren en te monteren.

U kunt dan chown en chmod op de ntfs-partitie gebruiken.


34
2017-12-28 16:31



Hoe worden deze rechten opgeslagen? In ADS? Andere metadata? - hexafraction
Hoe zit het met fat32? Ik heb een Micro SD-kaart die tegen schrijven is beveiligd en die ik niet kan openen en formatteren. - Waqas
@RanaMuhammadWaqas - dit is een oude vraag, maar je kunt hem ook met verschillende opties koppelen. Moeilijk te weten wat uw probleem is, identificeer uw hardware misschien en stel een afzonderlijke vraag. - Panther
@ bodhi.zazen users impliceert noexec, nosuid, en nodev. is dat niet? Hoe gebruikers mount / umount kunnen gebruiken noexec wordt ingesteld? - Khurshid Alam
@EduardoCuomo - Een reactie plaatsen in een antwoord waarin staat dat het niet werkt, helpt je waarschijnlijk niet. Welk bestandssysteem? Ik stel voor dat je een vraag opent. U moet het bestandssysteem identificeren en uw fstab-vermelding publiceren - Panther


Naast het instellen van de fmask en / of dmask in het antwoord van htorque hierboven, als je scripts wilt uitvoeren op de schijf, moest ik ook de optie "exec" -mount instellen.

Dus het voorbeeld zou zijn:

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000,exec /dev/whatever /mnt/whatever

20
2017-12-14 08:26





U kunt de scriptinterpreter altijd expliciet aanroepen, in welk geval uitvoeringsmachtigingen niet vereist zijn. Als het script gebruikt bash, zoals kan worden gecontroleerd door naar de eerste regel van het script te kijken, gewoon uitvoeren

bash script.sh

Merk op dat het script andere scripts of binaries op dezelfde partitie aanroept, dit zal niet werken. Merk ook op dat de strategie niet werkt met binaries in tegenstelling tot tekstuele scriptbestanden geschreven in Bash Script, Perl, Python en dergelijke.


13
2017-12-14 10:00



+1 - Ik heb er nooit over nagedacht om het op die manier aan te roepen. - Nathan Osman
Gebruik binaire bestanden om uit te voeren /lib64/ld-linux-x86-64.so.2 ./program.bin voor 64-bits programma's en /lib/ld-linux.so.2 ./program.bin voor 32-bits exemplaren. - Lekensteyn


Volgens de Eigendom en machtigingen sectie van de NTFS-3G-documentatie, kunnen we de mount-opties gebruiken om het bestand te besturen toegang en schepping. De combinaties zijn erg gecompliceerd (zie de twee tabellen daar). Ik lees ze ook niet en krijg ze allemaal. Ik weet bijvoorbeeld niet of POSIX ACL's is geselecteerd tijdens het compileren of niet van het binaire pakket NTFS-3G. Maar de beste die ik heb is het gebruik van een Gebruiker Mappingbestand gecombineerd met een aantal mount-opties om een ​​plausibele afbeelding van bestandseigendom en -rechten tussen Windows en Linux te benaderen.


Waarschuwing: Dit is alleen wat het beste werkt voor het delen van een NTFS gegevenspartitie (rijden D: op Windows) tussen dual-booted Windows 8 en Kubuntu 14.04. De instructies zijn vastgelegd in een zorgvuldige terugblik maar niet grondig getest. Het is te vermoeiend en vervelend om de hele procedure opnieuw te herhalen. Dus volg het op eigen risico. Maar als je dat doet, deel je ervaring dan. Als u besluit de instructies op te volgen, lees deze dan volledig om een ​​volledig beeld te hebben voordat u daadwerkelijk handelt. Succes!


Oké, hier ga je! De gedetailleerde instructies bestaan ​​uit drie delen. Deel 1 moet op Windows worden uitgevoerd, terwijl deel 2 op Linux. Deel 3 is voor test.

Deel 1

De Gebruiker Mapping sectie van de NTFS-3G documentatie specificeert twee versies om gebruikerstoewijzing in te stellen tussen Windows en Linux, één Windows-versie en één Linux-versie. Mijn ervaring was dat de Linux-versie eindigde met een missen. Het Linux-account was niet toegewezen aan mijn Windows-account, maar sommige onbekend account verscheen onder een SID. Het resultaat was een puinhoop omdat dit onbekende account eigenaar wordt van alle bestanden van mijn Windows-account. In die situatie worden bestanden onder uw Windows-account ontoegankelijk, tenzij u over beheerdersrechten beschikt om uw eigendom terug te nemen. Maar zelfs als je schurft, is het dat wel nog steeds een verkeerde toewijzing. Dat betekent dat later alle bestanden die u op Linux maakt toegewezen worden aan dat onbekende account op Windows en dat die op Windows toegewezen worden aan root op Linux (als ik het me goed herinner). Dus op Windows moet je het eigendom weer terugnemen en op Linux het eigendom veranderen. Dat is niet wat we verwachten dat het is. Na verschillende hopeloze pogingen om het probleem op te lossen, gaf ik het op en wendde ik me tot de Windows-versie. Die werkte. Gedetailleerde instructies uit het betreffende gedeelte van de NTFS-3G-documentatie volgen:

  1. Download de usermap hulpmiddel, pak het ergens uit (in mijn geval, rijden C:), beter buiten de NTFS-partitie (in mijn geval drive D:) om te delen.

  2. Open de Windows-opdrachtregel. Ga naar de uitgepakte directory tools (standaard) van de usermap tool. Voer vervolgens de volgende opdracht uit:

    C:\tools> mapuser > UserMapping
    

    Dit genereert een sjabloon en leidt deze om naar een bestand met de naam UserMapping. Open het bestand met een teksteditor, zeg Kladblok, je zou de volgende regels moeten zien:

    # 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
    

    Waarschijnlijk de eerste SID moet uw gebruikers-SID zijn, terwijl de tweede uw groeps-ID is. Je kunt ze respectievelijk controleren via commando's whoami /user en whoami /groups.

  3. Nadat u ervoor hebt gezorgd dat de SID's correct zijn, volgt u de instructies in de opmerking, dat wil zeggen, wijzigen user in de user::SID regel naar uw gebruikersnaam en group in de :group:SID regel naar uw primaire groepsnaam op Linux. Op Ubuntu zijn ze hetzelfde. Voeg bovendien je Linux-groepsnaam toe na de eerste dubbele punt van de user::SIDlijn. Dus de rij zou er ongeveer zo uit moeten zien user:group:SID. Het lijkt erop dat als het niet wordt gedaan, bestanden die op Windows zijn gemaakt, worden toegewezen user:root op Linux.

  4. Bewaar het bestand. Verplaats het naar een map met de naam .NTFS-3G (maak het aan als het nog niet bestaat) op de NTFS-partitie die moet worden gedeeld (in mijn geval drive D:).

  5. Deze stap is voor de test in Deel 3. Maak op de gedeelde NTFS-partitie een nieuwe map en een nieuw bestand.

Deel 2

Start nu op in Linux. sudo bewerk het bestand /etc/fstab. Voeg de regel voor de gedeelde NTFS-partitie toe of pas deze toe op iets als het volgende:

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

Het essentiële is om de umask (dmask en fmask kan ook werken, maar niet getest). Kies een waarde voor umask je houdt van, hoewel ik heb geplukt 077. Het lijkt erop dat zonder deze instelling volledige rechten worden gegeven ovoor nieuw gecreëerde bestanden.

Bewaar het bestand. Nu sudo mount of opnieuw plaatsen (sudo umount en dan sudo mount) de gedeelde NTFS-partitie (in mijn geval /data):

$ sudo mount /data

Deel 3

Nu (nog steeds onder Linux) cd naar het mountpoint (in mijn geval /data) ls -l de bestanden daar. Controleer of hun eigendom en machtigingen overeenkomen met die welke u hebt opgegeven in de UserMapping bestand en de umask jij bent begonnen /etc/fstab (de overeenkomst tussen rechten en umask vereist een aanvulling van het complement, zie man (1) umask voor meer informatie). Als ze dat doen, gefeliciteerd, wordt een half doel bereikt. Anders, arme jij. Vraag Ubuntu of Windows.

Maak vervolgens een nieuwe map en een nieuw bestand. ls -l om hun eigendom en rechten te controleren. Het eigendom zou uw gebruikelijke gebruikersnaam en primaire groep moeten zijn. De machtigingen moeten overeenkomen met de umask. Start nu uw computer opnieuw op en start Windows op. Zoek op de gedeelde NTFS-partitie de map en het bestand dat u zojuist op Linux hebt gemaakt. Controleer hun eigenschappen om te zien of ze zijn toegewezen aan uw Windows-account. Als dat zo is, gefeliciteerd, bent u klaar. Anders pech. Vraag Windows of Ubuntu.

EOF


8
2017-08-22 22:35





Oude draad, ik weet het, maar nog steeds relevant en mist een bepaalde use case tip, samengesteld uit verschillende suggesties op verschillende andere forums / threads en getest op Ubuntu GNOME 13.04, waar ik wilde dat een externe schijf een Steam-bibliotheek bevat ...

Wanneer de NTFS-partitie zich bijvoorbeeld op een externe usb-schijf bevindt - wat betekent dat de partitie onmiddellijk wordt gekoppeld na verbinding - dan kunt u de volgende methode gebruiken om udev-mount ntfs-partities met uitvoeringsrechten te maken.

Open een terminalvenster en doe:

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

Plak dan deze regel in wat een blanco / nieuw bestand zou moeten zijn (als dat niet het geval is, sluit dan nano af en voer de opdracht opnieuw uit maar begin de bestandsnaam met een hoger nummer zoals 91 -...):

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

Sla dan op en sluit. Koppel de schijf los en voer deze vervolgens in de terminal uit:

$ sudo service udev restart

Sluit vervolgens de schijf weer aan en geniet ervan :)


5
2017-09-14 23:51



Uitstekend, dit zou het geaccepteerde antwoord moeten zijn. - leftaroundabout


Alle stappen:

  1. Installeren ntfs-3g:

    sudo apt-get install -y ntfs-3g
    
  2. ontkoppelen NTFS partitie:

    sudo umount /mnt/windows
    
  3. Gebruik ntfs-3g.usermap om jouw te genereren UserMapping het dossier:

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

    of

    sudo ntfs-3g.usermap /dev/sdb1
    
  4. opnieuw monteren NTFS partitie om toe te voegen UserMapping het dossier:

    mount -a
    sudo mkdir /mnt/windows/.NTFS-3G
    sudo mv UserMapping /mnt/windows/.NTFS-3G/
    
  5. Update uw fstab het dossier:

    sudo vim /etc/fstab
    

    Bijwerken berg lijn:

    1. Maak een back-up van je huidige mount-regel! Dupliceer de regel en becommentarieer de regel door een regel toe te voegen # in het begin.
    2. Verander volgende: UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
    3. Door de volgende: UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0 (Gebruik ntfs-3g en alleen default keuze)

    Het zou er ongeveer zo uit moeten zien:

    #UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0 UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0

  6. Tot slot, opnieuw gebruiken met uw fstab:

    sudo umount /mnt/windows
    sudo mount -a
    

Doe dit een keer voor elke keer NTFS partitie die je hebt!

WAARSCHUWING MET WINDOWS OS!

Ik controleer het met Windows 7+ en de rechten zijn van invloed op Windows OS! Ik verander de toestemmingen van mijn Home-directory op de Windows-partitie en toen ik Windows opnieuw gebruikte, kon ik zien dat de gebruiker kapot was!


2
2018-02-26 14:49





Er is een gerelateerde vraag voor USB-apparaten. Dit antwoord biedt een lelijke hack als je elk USB-apparaat automatisch wilt koppelen met uitvoeringsmachtigingen.


1
2017-12-28 15:06