家目录:HOME
Linux是一个多用户操作系统,支持多个用户同时登陆系统。比如你学校里的服务器、公司里的服务器,就允许多个员工登陆,每个人都可以在服务器上面编写程序、编译程序。
对于登陆的每一个用户,Linux系统都会分配一个用户名和密码。登陆系统成功后,Linux会在/home目录下创建一个跟用户名同名的目录:/home/wit,用户可以在自己的/home/wit目录下开展各自的工作。普通用户也只有对自己的这个目录有写的权限,对其他用户的目录或系统目录没有写的权限。
Linux系统会使用HOME这样一个环境变量,来表示当前用户的HOME目录,用户可以通过echo来查看这个环境变量的值:
zhaixue@ubuntu:~$ echo $HOME
/home/zhaixue
当我们切换到root账户,再次使用echo命令查看HOME环境变量的值时,你会发现此时已经发生了变化:
root@ubuntu:/# echo $HOME
/root
TIPS:命令行前的 $ 提示符,表示当前用户是普通用户。命令行前的 # 提示符,表示当前的用户是超级用户。
用户名和密码
在系统的/etc/passwd文件里,有一个关于用户名和密码的文件。它会记录每个用户的用户名、登录密码、登录后默认启动的shell工具等信息
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
...
wit:x:1000:1000:zhaixue.cc,,,:/home/wit:/bin/bash
/etc/passwd文件里的每个字段的意义如下:
root:x:0:0:root:/root:/bin/bash
wit:x:1000:1000:zhaixue.cc,,,:/home/wit:/bin/bash
用户名:密码:UID:GID:注释性描述(真实姓名、网址):用户登录后的缺省目录:默认shell解释器
root用户是一个超级权限用户,也是系统中唯一的超级用户,相当于Windows系统中的system用户,但是system权限更大,可以删除系统中的大部分文件,导致系统崩溃,因此具有破坏性,很多黑客攻击大多数时候都是先获取root权限,然后再接着干坏事。因此为了安全起见,建议不要使用root用户进行各种操作。
创建ROOT用户
有时候我们也需要对其他目录的文件进行写操作、或者修改一些系统级的配置文件,此时你可以使用sudo命令。每次使用sudo执行超级权限,都需要输入当前用户的密码进行验证,从某种程度了减少了误操作对系统安全造成的威胁,但每次输入密码也比较麻烦。如果你使用的是虚拟机,开启了节点备份功能,其实也可以切换到root用户下进行操作,把系统搞崩溃了,再还原回来就可以了。如果你使用公司的服务器开发程序,建议不用使用root,因为root用户的修改或配置可能会影响到服务器上所有的用户,当然,服务器的管理员也不可能让你拿到root权限。
sudo背后执行了什么事情?
sudo是系统管理指令,运行系统管理员让普通用户执行执行一部分root特权命令的一个工具。当普通用户使用sudo去执行一些命令时,sudo会依照安全策略中的指定,授权用户以超级用户或其他用户身份执行命令。在实现层面,其实就是再开辟一个子进程,以root权限去执行该命令,命令执行结束后,子进程退出,当前用户保持不变。
使用sudo的好处是用户不必在root账户下也可以执行超级权限的命令,减少了root用户的登录和管理时间,一定程度上提高了系统的安全性。
我们也可以直接在root账户下运行命令。在切换到root用户之前,首先要给root用户设置一个密码:
$ sudo passwd root
Enter new UNIX password: 123456
Retype new UNIX password: 123456
passwd: password updated successfully
密码设置成功后,输入su命令,输入刚刚设置的密码:123456,就可以切换到root用户。在root用户下,输入exit命令,就可以返回到原来的普通用户wit
$ su Password: 123456
# cd ~
# pwd
/root
# exit
$ cd ~
$ pwd
/home/wit