Create a Linux User & Set Permissions
This how-to explains how to create a Linux user and set Super User (sudo) permissions.
That’s an important precautionary step because the default root user is dangerously powerful, meaning we could inadvertently damage our system if we carry on working in that role.
Besides, you may well want a bunch of users with their own particular priviledges if, say, you have various folks administering sites and blogs from your VPS server.
Setup Unmanaged VPS: The Ubuntu-Nginx Guide
Take your virtual private server from zero to hero
.. from blank box to cute-as server ..
with this easy-to-follow copy/paste guide.
22+ parts with video, here’s the index.
For you, it makes more sense to create a user with the option of root’s Super User status enabled only when you need it, and only after you provide a password. That way, you can’t delete something important without first considering your actions.
This Linux thing .. nicely thought out, huh *.
* As an aside – ‘cos I fancy a rant – this is the key difference between Linux and Windoze.
This simple yet strong permissions system is why Linux is practically virus-free, whereas Windows “oh-permissions-forgot-about-that” is more akin to the inside of a malarial test-tube on a hot day in sub-Saharan swampland without a mosquito net and someone forgot the stopper. (Don’t even get me started on Internet Pi55-poorer.)
Er, let’s watch a vid!
Video: 'adduser' Command & 'visudo' Permissions
Watch the, er, guvideo for a better idea of how to do this.
Right, I shall say this only once:-
Fire up the terminal, logging into your VPS as we have learned to do.
Change Root Password
First, as a security measure, we’ll change our root password, so type the following and hit return:-
.. prompted, enter a password, and confirm it.
Create a Linux User
Now we’ll create a new Linux user. Call it whatever works for you; for instance, I may choose “guv”, “guvnr”, “olly” or “windozereallysux”.
.. prompted, enter and confirm a password for the new user and, again prompted, add some details such as name and telephone details, although the world won’t cave in if you just skip that bit by hitting return a few times.
Create Linux Super User Permissions
To give your new VPS user Super User access to administrative tasks we have to open up the Super Users permissions file, this time using a text editor called Vim – a tricky little devil, sorry, but we won’t use it again – by typing:-
.. and under the line that reads User privilege specification, type:-
Hold on, time out! I can see you cocking up here. Vim. Geeks love it. Damn .. blessed if I know why. You’d best read this before proceeding:-
Some Basic Vim Editing Tips ..
- To add a new line, type i at the cursor, then your text.
- After your edit, to quit and save the file press Esc then type a colon :, then the letter x x and hit return.
- If you make a mistake and want to start over, closing Vim without saving, type :q! and hit return.
NOTE for 10.04 & Debian5: Vim seems friendlier with these editions and these tips may be ignored.
OK. So, continuing from above, after the line that reads User privilege specification,press i (as in insert or innoying) and then type:-
Here’s how it should look now, replacing “guvnr” with your user name.
Now exit the file as explained above. And that’s that.
Steaming Ahead
With that basic house-keeping done-dusted, now we’ll get back to Fort-Knoxing our setup; critical steps indeed in the process of this virtual private server build.
Cue index ..
Setup Unmanaged VPS: The Ubuntu-Nginx Guide
Take your virtual private server from zero to hero
with this easy-to-follow copy/paste guide.
“My local PC runs Windows” Show me for Linux
“My local PC runs Linux” Show me for Windows
22+ parts with video, here’s the index ..
-
Setup Unmanaged VPS: The Ubuntu-Nginx Guide
Introducing vpsBible’s how-to guide for setting up a super-charged unmanaged VPS featuring Ubuntu and Nginx.
-
VPS (Virtual Private Server) vs Shared vs Dedicated
Before getting stuck in, let’s compare the web host types in detail and weigh up the differences between managed & unmanaged VPS.
-
Set Up a VPS Linux Distribution
Opening a VPS hosting account, we’ll choose, configure & launch a Linux server ‘distribution’.
-
Set Up Command Line Interface (CLI) using PuTTY
Now we’ve got a server to play with, we’ll connect to it, using the ’ssh’ protocol for a super-secure link.
-
Create a Linux User & Set Permissions
Initially you’ve logged into your remote Linux machine as ‘root’. We’ll add you as a user now, with root or SuperUser permissions.
-
Encrypt Data with OpenSSH & Auto-Login with PuTTY
Now we can use ‘authentication keys’ to shore up our connection while simplifying login to an automated, password-free yet secure process.
-
Harden the Secure Shell (SSH) & Create a Firewall
The final security step: galvanizing the OpenSSH protocol and setting up an ‘iptables’ firewall. Now the server is rock ruddy solid.
-
Edit bashrc for User-Friendly Linux, plus System Updates
We use the terminal a whole lot so let’s cut ourselves a break and create some command shortcuts, then update the server.
-
Add a Domain Zone to Your VPS
To make your server aware of yourDomain.com you’ll need a few ‘DNS’ records. Damn this is simple I’m practically asleep!
-
Prepare Linux Server for Email with Postfix
In order to send and receive email from our web applications we’ll install some software and tweak the ‘RDNS’ record.
-
Install PHP5 & MySQL – The One-Stop FastCGI Index Page
Add PHP5 & MySQL, but which FastCGI method is best? Here’s the benchmarking, 4 ways to install/compile, add caching modules & more.
-
Nginx (better than Apache) Web Server
Let’s install this supersonic web server, tweaking its file structure & adding default configuration files.
-
Setup FileZilla for Secure FTP (SFTP)
There’s FTP, and then there’s ‘Secure FTP’. We’ll set up FileZilla using SFTP – and those authentication keys – for secure file transfers.
-
Serve Multiple Sites & Blogs with Virtual Hosts
We want a website folder structure, some permissions, some site-specific configuration files and, hey, we’ll hook up ‘FastCGI’.
-
Adding Sub-Domains with Nginx
Need a sub-domain? If you do, here’s how to add subDomain.yourSite.com with an ‘A record’ and a configuration file.
-
Integrate A CMS Like WordPress, WP MU, Drupal etc
For those of you wanting to use a specific content framework, such as a CMS, blogging or forum software, pop in here and we’ll sort that out.
-
Google Apps for Domain-Specific Email
GA’s free Standard Edition for catchall webmail – POP-ping or IMAP-ped to your desktop client – saves precious server resources for your webs.
-
Moving Day! How to Move Your Blog or Site
Nearly there. Here’s the web site or blog migration guide, relocating to your VPS with minimal or no downtime.
Manage Unmanaged VPS: Ubuntu-Nginx Administration
Already set it up? We’d best maintain it then.
Toggle to the .. Ubuntu-Nginx Admin Index
Manage Unmanaged VPS: Ubuntu-Nginx Administration
Maintain your virtual private server with ..
.. cheatsheets, tutorials, tips & guides.
Head back to the .. Ubuntu-Nginx Installation Index
-
Nginx Control Panel: Here’s the Deal
You’re migrating shared-to-VPS and want a GUI like cPanel? No you don’t, not after you read this! What’s more, you don’t need one either.
-
Nginx Control Panel Workarounds
For every control panel module there’s an equivalent (and faster) terminal command. Let’s compare these.
-
Upgrade to Nginx Latest Version with ZERO Downtime
Keep Nginx up-to-date – and optimized for security. This guide shows precisely how *with no missed server requests*.
-
Compile an Advanced Nginx Module Configuration
Need special web server functions? Here’s how to install or upgrade Nginx with bespoke required modules & parameters.
-
Add Web Sites Nginx Cheatsheet
Once you’ve set up your first site, adding more gets easier. Especially when you refer to this. (Let’s face it, I’m just too good to you.)
-
Adding Sub-Domains with Nginx
Rather than add somesite.tld, maybe you want some.subsite.tld? Here’s how to set your A record using a DNS manager and the vhost file for Nginx.
-
Add/Delete MySQL Database from Command Line
Need a database? Want to bin an old db? This tutorial shows you how using the terminal command line console whatnot.
-
Configure phpMyAdmin for Nginx to Maintain MySQL
Rather than have to crunch databases via the command line, we can make life easier by adding this splendid tool to manage them.
-
Backup/Export MySQL DB with CLI & mysqldump
Here’s how to backup a database from the command line using the handy mysqldump utility.
-
Import MySQL Database using Command Line
Import data to a new database with this simple mysqldump guide .. great for reinstating an old backed-up db, for instance.
-
Batch Replace/Delete Data in MySQL Database
Change repetitive db data with a single command. Rather than manually find & alter each instance, isolate the lot & update multiple content.
-
LOST a MySQL Password? How to RESET it
Lost your MySQL password? That’s a bit of a bummer .. or it would be if you didn’t have this new password setup guide, huh.
-
Backup or Upload with Secure Copy SCP (Linux to Linux)
Never mind FTP m8! Save time and download/upload your files using encrypted SCP (secure copy), the #1 Linux-Linux file transfer solution.
-
Backup or Upload with PuTTY PSFTP (Windows/Linux)
Equivalent to the above, how to transfer your files if you’re unlucky enough to be running Windows for your local PC. Not that I’m biased.
-
*USEFULLY* Park A Spare Domain with Nginx
Got a spare domain name sat around doing nothing? Put it to some use, have it point its traffic at your primary domain. Here’s the deal ..
-
Password Protect Nginx Web Files/Directories
Maybe you want a hidden website directory, say, for projects, or are developing a site and want it off-limits ’till launch day. Top tip ..
-
Redirect Web Pages with Nginx Rewrite Rule
Here’s the syntax to point a site or blog to another domain. That way, for instance, traffic from a passive site benefits an active one.
-
Nginx Error & Access Logs
Need to troubleshoot some error, or want to find out who’s trying to hack your site? Here’s a start .. those tell-tale logs.
-
Subversion for Easy CMS Updates ie WordPress/Drupal/etc
A brief introduction to install and know about the power of Subversion, the version control system to keep scripts and platforms up-to-date.
-
You Tell Me …
Something missing? Probably. Let me know what you’d like included. And if it’s listed below, shout out anyhow and I’ll try to bump it.
Nginx Admin: In the Works ..
This lot’s marked for addition already:-
- Setup or Edit DNS using Bind
- Network Tools Troubleshooting Guide
- The Comprehensive Permissions Guide
- Configuring Nginx Rewrites
- Custom Website Error Page
- Setting up Cron Jobs
- Rsync for Incremental Remote-to-Local Backup
- Cron & Rsync for Automatic Backup
- Cron & mysqldump for Auto DB Backup
- Safeguard Bandwidth with Hotlink Protection
- Block Access with Nginx’ IP Deny
Got a Question? Want to Comment?
This site has no comments system. We've got a better system!
Please use the link at the top of the post and goto this topic's forum thread:-
- to help build community
- for a superior knowledge base
- to keep info in one place, not diluted between forum & comments.
For those posts ported from Guvnr.com (pre-Feb/2010), archive comments remain.
Handy info from these comments is in the process of being ported to the forum and attributed to the original author.
If you think this idea sucks, let me know.
Thank you.





















alexandre.fr May 31st, 2009 at 3:59 pm
i had centos without visudo
so i … no, i not install sudo.rpm,
i change os package!
(centos centos-5-i386-hostinabox576 950Mb)
after read the below, i tought instead of visudo
try sudo or sudoers
may be this could help:
http://www.centos.org/modules/newbb/viewtopic.php?forum=6&topic_id=513&viewmode=flat
MODIFY THE SEARCH PATH:
If you haven’t already done so for other software, you now need to modify the search paths so that the system can find the sudo program and its manual pages. :
PATH=$PATH:/usr/local/bin:/usr/local/sbin:/usr/local/bin
MANPATH=$MANPATH:/usr/man/:/usr/local/man
It’s advisable to log out and log in again at this point to activate these changes. Make sure that the system can find the sudo program
# Sudo -V
(that’s an upper case “V”) and that you can display the manual pages:
# man sudo
# man visudo
# man sudoers
the_guv October 2nd, 2009 at 4:16 pm
@alexandre.fr .. darn, sorry for delay, never saw this but tx for that input .. hope it’s handy for Centos users
Nuha October 27th, 2009 at 2:57 pm
VERY THANKS FOR THIS INFORMATION
the_guv October 28th, 2009 at 7:13 pm
@Nuha .. very thanks for your comment too, Sir
Hide Data & Simple Login - SSH & PuTTY - VPS Bible Pt 5 - GUVNR November 30th, 2009 at 9:05 pm
[...] to be replaced by your username:group (likely the same word for each, definitely so if you followed Part 6: Create a Linux User & Set Permissions). Swap my user directory, guvnr, for yours too, [...]
Chris December 22nd, 2009 at 9:48 pm
having a small problem, I tried to adduser and then put username however it does not ask me for a password – yet creates the user? Any advice please?