it-swarm-eu.dev

Jak mohu použít 'chmod' na oddílu NTFS (nebo FAT32)?

Mám skript, který musím provést na oddílu NTFS. Povolení skriptu je nastaveno na 600.

Pokusil jsem se změnit oprávnění spuštěním chmod 755 script.sh, které nenahlásí selhání nebo nic - ale nemění také oprávnění k souboru:

$ 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

Jak vidíte, zůstává nezměněn.

136
Nathan Osman

Režim je určen možnostmi připojení oblasti (nemůžete jej změnit pomocí chmod).

Pro soubory „755“ a „777“ pro adresáře byste použili něco podobného

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

Na rozdíl od toho, co většina lidí věří, NTFS je souborový systém kompatibilní s POSIX a je možné použít oprávnění na NTFS .

Chcete-li to povolit, potřebujete při instalaci soubor „Mapování uživatelů“ nebo při připojení připojte možnost permissions (pokud není nutná kompatibilita se systémem Windows). To mapuje uživatele Linuxu ve vašem systému s uživatelskými ID, jako je NTFS/Windows, které používají interně.

Viz ntfs-3g manpage , kde jsou nějaké informace a příklady. Pokud potřebujete více informací, podívejte se na ntfs-3g pokročilá dokumentace o vlastnictví a oprávnění .

(Všimněte si, že to nefunguje na souborových systémech FAT.)

¹ Ano, může také ukládat názvy souborů, které jsou platné v linux/unixu, ale ne pod Windows, podporuje symlinks & hardlinks, atd.

94
JanC

Pro oddíly NTFS použijte v fstab volbu permissions.

Nejprve odpojte oddíl NTFS.

Identifikujte UUID oddílu pomocí blkid

Sudo blkid

Poté upravte /etc/fstab

# Graphical 
gksu gedit /etc/fstab

# Command line
Sudo -e /etc/fstab

A přidejte nebo upravte řádek pro oddíl NTFS

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

Vytvořte bod připojení (v případě potřeby)

Sudo mkdir /media/windows

Nyní připojte oddíl

mount /media/windows

Možnosti, které jsem vám dal, auto, automaticky připojí oddíl při spuštění a users umožňuje uživatelům připojit se a připojit.

Poté můžete na diskovém oddílu ntfs použít chown a chmod.

43
Panther

Kromě nastavení fmask a/nebo dmask v htorque odpověď výše, pokud chcete spustit skripty na jednotce, musel jsem také nastavit možnost "exec" mount.

Příkladem by tedy bylo:

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

Vždy můžete explicitně vyvolat interpret skriptu, v takovém případě nejsou vyžadována oprávnění ke spuštění. Pokud skript používá bash, jak lze ověřit na prvním řádku skriptu, stačí spustit

bash script.sh

Všimněte si, že skript volá jiné skripty nebo binární soubory ve stejném oddílu, nebude to fungovat. Všimněte si také, že strategie nefunguje s binárními soubory na rozdíl od textových souborů skriptů psaných v Bash Script, Perl, Python nebo podobně).

14
loevborg

Podle části vlastnictví a oprávnění v dokumentaci NTFS-3G můžeme pomocí možností připojení řídit soubor přístup a vytvoření. Kombinace jsou velmi komplikované (viz dvě tabulky tam). Také je nečtu a nedostanu je všechny. Například nevím, zda je seznam ACL POSIX vybrán v době kompilace či nikoliv z binárního balíčku NTFS-3G. Ale to nejlepší, co jsem vyšel, je použití souboru ser Mapping v kombinaci s některými možnostmi připojení, aby se přiblížilo věrohodné mapování vlastnictví souboru a oprávnění mezi Windows a Linuxem.


Varování : Toto je to, co nejlépe funguje pro mé sdílení NTFS datový oddíl (jednotka D: ve Windows) mezi dual-bootovanými Windows 8 a Kubuntu 14.04. Pokyny jsou zaznamenány při pečlivé retrospekci, ale nejsou důkladně testovány. Je příliš únavné a únavné opakovat celý postup znovu. Sledujte to na vlastní nebezpečí. Ale pokud ano, podělte se o své zkušenosti. Pokud se rozhodnete postupovat podle pokynů, přečtěte si jej, abyste si před skutečným jednáním vytvořili celý obrázek. Hodně štěstí!


Dobře, jdete! Podrobné pokyny se skládají ze tří částí. Část 1 by měla být prováděna v systému Windows, zatímco část 2 v systému Linux. Část 3 je pro zkoušku.

Část 1

Sekce Mapování uživatelů dokumentace NTFS-3G specifikuje dvě verze pro nastavení mapování uživatelů mezi Windows a Linuxem, jednu verzi Windows a jednu verzi Linuxu. Moje zkušenost byla taková, že verze pro Linux skončila s miss. Účet Linux byl ne mapován na můj účet Windows, ale nějaký účet neznámý se objevil pod SID . Výsledkem byl nepořádek, protože tento neznámý účet převezme vlastnictví všech souborů mého účtu Windows. V takovém případě, pokud nemáte administrátorské oprávnění pro zpětné převzetí vlastnictví, budou soubory pod účtem Windows nepřístupné. Ale i když mange, je to ještě špatné mapování. To znamená, že později budou všechny soubory, které vytvoříte v systému Linux, přiřazeny tomuto neznámému účtu v systému Windows a soubory v systému Windows budou přiděleny rootovi v systému Linux (pokud si dobře pamatuji). V systému Windows je tedy třeba znovu převzít vlastnictví a v systému Linux změnit vlastnictví. To není to, co očekáváme. Po několika beznadějných pokusech problém vyřešit, jsem se vzdal a obrátil se na verzi Windows. To fungovalo. Podrobné pokyny extrahované z příslušné části dokumentace NTFS-3G následují:

  1. Stáhněte si nástroj sermap , rozbalte ho někde (v mém případě drive C:), lepší mimo oddíl NTFS (v mém případě jednotka D:) ke sdílení.

  2. Otevřete příkazový řádek systému Windows. Přejděte do extrahovaného adresáře tools (ve výchozím nastavení) nástroje usermap. Poté spusťte následující příkaz:

    C:\tools> mapuser > UserMapping
    

    Tím se vytvoří šablona a přesměruje se do souboru s názvem UserMapping. Otevřete soubor pomocí textového editoru, řekněme Poznámkový blok, měli byste vidět následující řádky:

    # 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
    

    První SID by měl být pravděpodobně SID vašeho uživatele, zatímco druhý SID vaší skupiny. Můžete je zkontrolovat respektive příkazy whoami /user a whoami /groups.

  3. Po ověření správnosti identifikátorů SID postupujte podle pokynů v komentáři, tj. Změňte user v user::SID řádek s vaším uživatelským jménem a group v :group:SID řádek s názvem vaší primární skupiny v systému Linux. Na Ubuntu jsou stejné. Kromě toho přidejte název své Linuxové skupiny také za první dvojtečku user::SID řádek. Řádek by tedy měl vypadat jako user:group:SID. Zdá se, že pokud tak neučiníte, soubory vytvořené ve Windows budou přiřazeny k user:root na Linuxu.

  4. Uložte soubor. Přesuňte jej do adresáře s názvem .NTFS-3G (vytvořte jej, pokud ještě neexistuje) na oddílu NTFS, který má být sdílen (v mém případě jednotka D:).

  5. Tento krok je testován v části 3. Na sdíleném oddílu NTFS vytvořte nový adresář a nový soubor.

Část 2

Nyní spusťte systém Linux. Sudo upravte soubor /etc/fstab. Přidejte nebo upravte řádek sdíleného oddílu NTFS tak, jako je následující:

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

Podstatné je nastavení umask (dmask a fmask mohou také fungovat, ale nebyly testovány). Vyberte hodnotu pro umask, kterou chcete, i když jsem vybral 077. Vypadá to, že bez tohoto nastavení budou pro nově vytvořené soubory udělena plná oprávnění o.

Uložte soubor. Nyní Sudo mount nebo znovu připojte (Sudo umount a pak Sudo mount) sdílený oddíl NTFS (v mém případě /data):

$ Sudo mount /data

Část 3

Nyní (stále v systému Linux) cd do bodu připojení (v mém případě /data), ls -l soubory tam. Zkontrolujte, zda se jejich vlastnictví a oprávnění shodují s údaji uvedenými v souboru UserMapping a umask, které jste nastavili v /etc/fstab (shoda mezi oprávněními a umask vyžaduje určitý výpočet doplňku, další informace viz man (1) umask )). Pokud ano, gratuluji, je dosaženo polovičního cíle. Jinak, ubohá. Zeptejte se Ubuntu nebo Windows.

Poté vytvořte nový adresář a nový soubor. ls -l zkontrolovat jejich vlastnictví a oprávnění. Vlastnictvím by mělo být vaše uživatelské jméno a primární skupina jako obvykle. Oprávnění by se měla shodovat s umask. Nyní restartujte počítač a spusťte systém Windows. Vyhledejte ve sdíleném oddílu NTFS adresář a soubor, který jste právě vytvořili v systému Linux. Zkontrolujte jejich vlastnosti a zkontrolujte, zda jsou přiřazeny k vašemu účtu Windows. Pokud ano, gratuluji, jste hotovi. Jinak smůlu. Zeptejte se Windows nebo Ubuntu.

EOF

9
reflectionalist

Staré vlákno, já vím, ale stále relevantní a chybí tip na konkrétní případ použití, složený z různých návrhů na různých jiných fórech/vláknech a testovaný na Ubuntu GNOME 13.04, kde jsem chtěl, aby externí disk obsahoval knihovnu Steam ...

Pokud je oddíl NTFS například na externí jednotce USB - což znamená, že je oddíl připojen za běhu po připojení -, můžete pomocí následující metody vytvořit oddíly udev mount ntfs s právy spuštění.

Otevřete okno terminálu a proveďte:

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

Pak vložte tento řádek do prázdného/nového souboru (pokud ne, pak ukončete nano a zadejte příkaz znovu, ale začněte s názvem souboru vyšším číslem, jako je 91 -...):

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

Poté uložte a zavřete. Odpojte jednotku a poté proveďte terminál:

$ Sudo service udev restart

Dále připojte disk zpět a užijte si :)

7
user17254

Všechny kroky:

  1. Nainstalujte ntfs-3g:

    Sudo apt-get install -y ntfs-3g
    
  2. Odpojit [~ # ~] ntfs [~ # ~] oddíl:

    Sudo umount /mnt/windows
    
  3. Použijte ntfs-3g.usermap pro vygenerování vašeho souboru UserMapping:

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

    nebo

    Sudo ntfs-3g.usermap /dev/sdb1
    
  4. Připojte [~ # ~] ntfs [~ # ~] oddíl k přidání souboru UserMapping:

    mount -a
    Sudo mkdir /mnt/windows/.NTFS-3G
    Sudo mv UserMapping /mnt/windows/.NTFS-3G/
    
  5. Aktualizujte svůj soubor fstab:

    Sudo vim /etc/fstab
    

    Aktualizovat připojovací řádek :

    1. Zálohujte svou aktuální připojovací linku! Duplikujte řádek a přidejte komentář # na začátku.
    2. Změnit další: UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
    3. Další: UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0 (Použijte ntfs-3g a pouze default možnost)

    Mělo by to vypadat takto:

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

  6. Nakonec znovu připojte pomocí vašeho fstab:

    Sudo umount /mnt/windows
    Sudo mount -a
    

dělejte to jednou pro každý [~ # ~] ntfs [~ # ~] oddíl, který máte!

VAROVÁNÍ S OS Windows!

Zkontroluji to s Windows 7 + a oprávnění ovlivní OS Windows! Změňuji oprávnění svého domovského adresáře na oddílu Windows a když jsem znovu používal Windows, viděl jsem, že uživatel byl poškozen!

4
Eduardo Cuomo

Připojte oddíl NTFS na jednotku USB s vlastními oprávněními a vlastníkem

V systému Linux je režim NTFS (a FAT32) určen volbami připojení pro oddíl . Nemůžete to změnit pomocí chmod.

Předpoklad: USB disk je považován za sdb1, upravit aby odpovídalo písmenům jednotky a číslu oddílu ve vašem případě . Obecná syntaxe je sdxn, kde x je písmeno jednotky a n je číslo oddílu, jak je vidět například z Sudo lsblk -f

Příprava

  • Odpojte oddíl NTFS.

    Sudo umount /dev/sdxn   # general syntax
    Sudo umount /dev/sdb1   # modify to match your case
    
  • Vytvořte vlastní přípojný bod (pouze pokud chcete nový přípojný bod), například pomocí

    Sudo mkdir -p /mnt/sd1
    
  • Zkontrolujte číslo uid vašeho ID uživatele (obvykle je 1000, někdy 1001 nebo 1002 ...)

    grep ^"$USER" /etc/group
    

    a použijte toto číslo, pokud chcete získat vlastnictví (výchozí je root).

Připojte oddíl NTFS

Příklad 1 (bez oprávnění ke spouštění souborů, bez přístupu pro „ostatní“),

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
  • v tomto případě můžete spustit skript this-script

    bash /mnt/sd1/this-script
    

Příklad 2 (s oprávněními ke spouštění souborů, bez přístupu pro „ostatní“),

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
  • V tomto případě můžete spustit skript this-script

    /mnt/sd1/this-script
    

    a spustitelné programy můžete také spustit z tohoto umístění (nikoli to, že se doporučuje).

Příklad 3 (plná oprávnění pro všechny, což je pohodlné, ale není bezpečné, je-li více uživatelů),

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

Pro zařízení USB neexistuje n související otázka. Tato odpověď poskytuje ošklivý hack, pokud chcete připojit každé zařízení USB automaticky s oprávněními ke spuštění.

1
lumbric