[{"data":1,"prerenderedAt":285},["ShallowReactive",2],{"navigation":3,"latest-changelog-release":42,"\u002Fblog\u002Fmanaging-users-and-groups-on-linux-a-practical-guide":70,"\u002Fblog\u002Fmanaging-users-and-groups-on-linux-a-practical-guide-surround":280},[4],{"title":5,"path":6,"stem":7,"children":8,"page":41},"Blog","\u002Fblog","blog",[9,13,17,21,25,29,33,37],{"title":10,"path":11,"stem":12},"Clean Fix for the ‘Model Not in Registry’ Error in Odoo Addons","\u002Fblog\u002Fclean-fix-for-the-model-not-in-registry-error-in-odoo-addons","blog\u002Fclean-fix-for-the-model-not-in-registry-error-in-odoo-addons",{"title":14,"path":15,"stem":16},"From Sales to Production: The Story of a Connected Manufacturing Workflow in Odoo","\u002Fblog\u002Ffrom-sales-to-production-the-story-of-a-connected-manufacturing-workflow-in-odoo","blog\u002Ffrom-sales-to-production-the-story-of-a-connected-manufacturing-workflow-in-odoo",{"title":18,"path":19,"stem":20},"How to Install Odoo 18 Community Edition on Ubuntu Server","\u002Fblog\u002Fhow-to-install-odoo-18-community-edition-on-ubuntu-server","blog\u002Fhow-to-install-odoo-18-community-edition-on-ubuntu-server",{"title":22,"path":23,"stem":24},"How to Properly Backup Your Odoo Instance (Database + Filestore)","\u002Fblog\u002Fhow-to-properly-backup-your-odoo-instance-database-filestore","blog\u002Fhow-to-properly-backup-your-odoo-instance-database-filestore",{"title":26,"path":27,"stem":28},"Launch Your Odoo MVP in Weeks with MoSCoW Prioritization","\u002Fblog\u002Flaunch-your-odoo-mvp-in-weeks-with-moscow-prioritization","blog\u002Flaunch-your-odoo-mvp-in-weeks-with-moscow-prioritization",{"title":30,"path":31,"stem":32},"Managing Users and Groups on Linux: A Practical Guide","\u002Fblog\u002Fmanaging-users-and-groups-on-linux-a-practical-guide","blog\u002Fmanaging-users-and-groups-on-linux-a-practical-guide",{"title":34,"path":35,"stem":36},"Understanding Odoo's Filestore Structure: What’s Inside and Why It Matters","\u002Fblog\u002Funderstanding-odoos-filestore-structure-whats-inside-and-why-it-matters","blog\u002Funderstanding-odoos-filestore-structure-whats-inside-and-why-it-matters",{"title":38,"path":39,"stem":40},"What Is a BoM and How Does It Affect Product Costs?","\u002Fblog\u002Fwhat-is-a-bom-and-how-does-it-affect-product-costs","blog\u002Fwhat-is-a-bom-and-how-does-it-affect-product-costs",false,{"id":43,"title":44,"added":45,"body":50,"date":57,"description":58,"extension":59,"fixed":60,"image":60,"imageAlt":60,"improved":61,"meta":63,"navigation":64,"path":65,"seo":66,"stem":67,"version":68,"__hash__":69},"changelog\u002Fchangelog\u002Fv0.9.1.md","Current website version",[46,47,48,49],"Homepage introducing Koderstory and its work.","Services page for website, business system, and ERP work.","Blog with practical articles.","About page with company information and approach.",{"type":51,"value":52,"toc":53},"minimark",[],{"title":54,"searchDepth":55,"depth":55,"links":56},"",2,[],"2026-10-17","The current pre-1.0 baseline for the Koderstory website.","md",null,[62],"Replaced the About page company information section with a clearer contact call to action.",{},true,"\u002Fchangelog\u002Fv0.9.1",{"title":44,"description":58},"changelog\u002Fv0.9.1","0.9.1","2BmReZMoo2c1JW3Ek64_ZyALBF8Yx8MR4yi8uQnb8SE",{"id":71,"title":30,"author":72,"body":77,"date":275,"description":276,"extension":59,"image":76,"meta":277,"minRead":179,"navigation":64,"path":31,"seo":278,"stem":32,"__hash__":279},"blog\u002Fblog\u002Fmanaging-users-and-groups-on-linux-a-practical-guide.md",{"name":73,"to":74,"avatar":75},"Koderstory","https:\u002F\u002Fdevlog.koderstory.com",{"src":76,"alt":73},"\u002Fimages\u002Fkoderstory-avatar.png",{"type":51,"value":78,"toc":270},[79,83,88,103,114,118,121,187,198,202,213,253,256,266],[80,81,82],"p",{},"Security often starts with something as simple as managing users and groups. On Linux, these controls help organize collaboration and strengthen multi-user environments such as ERP platforms.",[84,85,87],"h2",{"id":86},"user-management","User management",[80,89,90,94,95,98,99,102],{},[91,92,93],"code",{},"sudo useradd testuser"," creates a user with the lower-level account tool. It does not create a home directory or set a password by default. For an interactive setup that creates a home directory and prompts for user details, use ",[91,96,97],{},"sudo adduser testuser",". Set a password with ",[91,100,101],{},"sudo passwd testuser",".",[80,104,105,106,109,110,113],{},"To remove an account while keeping its files, use ",[91,107,108],{},"sudo userdel testuser",". When the account and its home directory should both be removed, ",[91,111,112],{},"sudo deluser --remove-home testuser"," is the more complete cleanup command. Confirm the account and data are no longer needed before removing them.",[84,115,117],{"id":116},"group-management","Group management",[80,119,120],{},"Groups make it easier to grant shared access without changing permissions for each person individually:",[122,123,127],"pre",{"className":124,"code":125,"language":126,"meta":54,"style":54},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sudo groupadd devgroup\nsudo usermod -aG devgroup testuser\nsudo gpasswd -d testuser devgroup\nsudo groupdel devgroup\n","bash",[91,128,129,145,161,177],{"__ignoreMap":54},[130,131,134,138,142],"span",{"class":132,"line":133},"line",1,[130,135,137],{"class":136},"sBMFI","sudo",[130,139,141],{"class":140},"sfazB"," groupadd",[130,143,144],{"class":140}," devgroup\n",[130,146,147,149,152,155,158],{"class":132,"line":55},[130,148,137],{"class":136},[130,150,151],{"class":140}," usermod",[130,153,154],{"class":140}," -aG",[130,156,157],{"class":140}," devgroup",[130,159,160],{"class":140}," testuser\n",[130,162,164,166,169,172,175],{"class":132,"line":163},3,[130,165,137],{"class":136},[130,167,168],{"class":140}," gpasswd",[130,170,171],{"class":140}," -d",[130,173,174],{"class":140}," testuser",[130,176,144],{"class":140},[130,178,180,182,185],{"class":132,"line":179},4,[130,181,137],{"class":136},[130,183,184],{"class":140}," groupdel",[130,186,144],{"class":140},[80,188,189,190,193,194,197],{},"The commands create a group, add a user, remove a user, and delete the group. The ",[91,191,192],{},"-a"," option in ",[91,195,196],{},"usermod -aG"," appends the group while preserving the user's existing supplementary groups.",[84,199,201],{"id":200},"use-groups-to-limit-access","Use groups to limit access",[80,203,204,205,208,209,212],{},"To limit SSH access to approved users, configure ",[91,206,207],{},"AllowGroups"," in ",[91,210,211],{},"\u002Fetc\u002Fssh\u002Fsshd_config",", then add authorized accounts to that group. For a shared team directory, assign the directory to a group and set permissions so only group members can use it:",[122,214,216],{"className":124,"code":215,"language":126,"meta":54,"style":54},"sudo mkdir \u002Fsrv\u002Fproject\nsudo chown :devgroup \u002Fsrv\u002Fproject\nsudo chmod 2770 \u002Fsrv\u002Fproject\n",[91,217,218,228,240],{"__ignoreMap":54},[130,219,220,222,225],{"class":132,"line":133},[130,221,137],{"class":136},[130,223,224],{"class":140}," mkdir",[130,226,227],{"class":140}," \u002Fsrv\u002Fproject\n",[130,229,230,232,235,238],{"class":132,"line":55},[130,231,137],{"class":136},[130,233,234],{"class":140}," chown",[130,236,237],{"class":140}," :devgroup",[130,239,227],{"class":140},[130,241,242,244,247,251],{"class":132,"line":163},[130,243,137],{"class":136},[130,245,246],{"class":140}," chmod",[130,248,250],{"class":249},"sbssI"," 2770",[130,252,227],{"class":140},[80,254,255],{},"On a multi-tenant server, a separate group and directory for each tenant can keep files isolated. Services such as PostgreSQL and NGINX should also run under dedicated, limited accounts. These practices support least privilege, clearer ownership, and safer operations as teams and systems grow.",[80,257,258,259,102],{},"Originally published on ",[260,261,265],"a",{"href":262,"rel":263},"https:\u002F\u002Fdevlog.koderstory.com\u002Fmanaging-users-and-groups-on-linux-a-practical-guide",[264],"nofollow","Koderstory Devlog",[267,268,269],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":54,"searchDepth":55,"depth":55,"links":271},[272,273,274],{"id":86,"depth":55,"text":87},{"id":116,"depth":55,"text":117},{"id":200,"depth":55,"text":201},"2025-04-21","Practical Linux user and group commands for access control, team collaboration, and service isolation.",{},{"title":30,"description":276},"ePTxTbKUGvXm7PxNB1kZ63nDG4de9dQWsrr1C-jLaS4",[281,283],{"title":26,"path":27,"stem":28,"description":282,"children":-1},"A practical way to launch an Odoo ERP MVP quickly by focusing the team on the features that matter most.",{"title":34,"path":35,"stem":36,"description":284,"children":-1},"Learn where Odoo stores uploaded files, why the filestore uses hashed directories, and what to include in backups.",1792253290486]