Portál AbcLinuxu, 28. října 2025 05:10
Pokud jich máš hodně tak určitě jde napsat skript aby to sám přepisoval i v /etc/passwd atd....
Právě proto se ptám, jestli na to už neexistuje hotová utilikta. Potřebuji en block zvednout všem uživalům ID, aby se dal udělat dualboot staršího systému dohromady s Fedorou (16 nebo 17).
Pokud nepoužíváte jeden FS pro oba systémy není třeba s tím hejbat.....No, pochopitelně, že používám (/home), to dá rozum!
Pokud chcete nějakou část mít přístupnou z obou systémů a jsou to stejné OS pouze jiné verze tak bych vzal ty /etc/passwd z toho nového a nakopíroval do starého (případně si poznačil ID uživatelů a přepsal ručně) a pak nabotoval do toho starého a přepsal pomocí chown -R domácí adresáře těch uživatelů na starém OS.Jenomže já ty uživatele mám ve starém
To přece dá rozum, ne?
Jestli je uživatelů 5-10 tak bych to udělal ručně - nepředpokládám že u PC s dualbotem bude 200 uživatelů.I tak je to otrava... no nic, jdu na to psát skript :-/
chown --from=CURRENT_OWNER:CURRENT_GROUP -L -R OWNER:GROUP /*se mě změní na celém systému jen ten jeden uživatel? Jeden důvod pro změnu ID mám a to je synchronizace ID na strojích. Třeba původně v podstatě osobní systémy, kde uživatel dostane vždy implicitní ID (nekde 1000 nekde 500) se chtějí provázat přes NFS server a pak je třeba stejné ID u uživatele na serveru i na jednotlivých strojích.
find s testy -uid resp. -gid a chown, soubory v /etc/ můžete upravit nějakým skriptem.
Bude se to hodit.
Protože vývoj linuxových distribucí (Fedory) se soustředí hlavně na přečíslovávaní uživatelů, přešupování binárek z bin do usr/bin, přešupování grafického terminálu z F7 na F1, záměny bootloaderů kvůli HR tapetám, grafickým startům kvůli animovanému logu, přecházení z fungujícího sysvinitu na systemcmd, který podle funkce random(1,0) buď službu spustí nebo také ne, rušení klasiky jako je screensaver pro údajnou nepotřebnost, dále se soustředí na to, aby se myš pořádně proběhla - a občas se jí náhodou podařilo i nějakou aplikaci spustit (viz různé moderní ujeté způsoby jak implementovat obskurní desktopy). Hlavně se nesmí opravovat chyby v aplikacích (třeba i deset let hlášené) a linux nesmí být stabilní a funkční, protože by ho mohlo začít používat více než současných 1.66 % - a to by byl průšvih, kdyby ohrozil pozici macu a windlouz.
</rejp-joke>
Viz man usermod:
-u, --uid UID
The new numerical value of the user's ID.
This value must be unique, unless the -o option is used. The value must be non-negative. Values between 0 and 999 are typically reserved for system accounts.
The user's mailbox, and any files which the user owns and which are located in the user's home directory will have the file user ID changed automatically.
The ownership of files outside of the user's home directory must be fixed manually.
/, v tomto priklade predpokladam, ze user name files ani na remote FS ani inde ako v PATH, co prehladavam):
0) uistim sa, ze range old UIDs a new UIDs sa nekrizuju; viem teda s istotou povedat, ze dany file ma/nema zmenene UID
1) urobim si log pred zmenou UID
find /full/path/to/location -xdev -uid 1000 -exec ls -la {} \; | tee 1000.log
2)
find /full/path/to/location -xdev -uid 1000 | xargs chown $NEWID
Pri vela suboroch je citit rozdiel medzi -exec a xargs - xargs je citelne rychlejsi. Pri ZFS duplom, tak to ide po prvom find-e ako po masle (doslova).
Ak je ten range dost velky, je mozne urobit wrapper, ktory by ti toto rozforkoval, taky shellovy pseudocode:
#!/bin/sh
for myuid in `cat all_uids`; do
nohup change_uid $myuid &
done
-exec chown {} + což nakrmí chown fíce parametry také...
Ale xargs se hodí pokud chcete jet paralelně, nastavíte třeba že spustíte 8 instancí a find je krmí... Nicméně tady u diskových operací se to nevyužije.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.