用户
Linux用户分为三种
- 根用户:就是root,拥有最高权限
- 系统用户:系统运行时必须拥有的用户,并不是真实的使用者,如系统用户apache用来运行httpd
- 普通用户:实际使用的真实用户
我们平常所说的用户都是指普通用户,Linux中记录用户信息的是/etc/passwd和/etc/shadow两个文件
创建用户
useradd -d /home/john -m -s /bin/bash john
参数解释
- -d:指定登陆后所在的目录
- -m:如果/home/john家目录不存在就创建
- -s:指定shell
修改密码
创建用户后需要设置密码,否则不能登陆
passwd john
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
修改用户
usermod -d /home/test -m john
将用户的家目录改为/home/test
我们可以通过cat /etc/passwd来查看是否修改了家目录
cat /etc/passwd
....
john:x:1001:1001::/home/test:/bin/bash
可以看到用户的家目录已经改为/home/test了
删除用户
userdel john
userdel john只是删除了/etc/passwd以及/etc/shadow中的记录,但是并没有删除家目录以及其他相关文件,要想同时删除对应的家目录及相关文件,可以加上-r
userdel -r john
简便方法
Linux创建用户还有一种简单的方法,可以直接创建家目录,设置密码,指定bash
vagrant@homestead:~$ sudo adduser john
Adding user `john' ...
Adding new group `john' (1001) ...
Adding new user `john' (1001) with group `john' ...
Creating home directory `/home/john' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for john
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
可以看到输入命令后,系统直接执行了创建用户、用户组、将用户添加到用户组、创建家目录、设置密码等操作,创建后直接就可以登陆了
用户组
创建用户组
Linux中用户组的信息记录在/etc/group中
groupadd test
查看/etc/group文件
cat /etc/group
....
test:x:1001:
可以看到末尾添加了test用户组,group文件中每一行代表一个用户组,格式为3个冒号隔开的4列参数,从前到后一次为用户组名:密码(实际并不使用):用户组id:组成员,因为用户组现在还没成员,所以组成员为空
删除用户组
groupdel test
添加、删除用户到用户组
将用户添加到用户组
vagrant@homestead:~$ sudo gpasswd -a john vagrant
Adding user john to group vagrant
参数解释
- -a:将用户添加到用户组
- john:用户名
- vagrant:用户组名
添加完后可以通过groups查看用户所属用户组
john@homestead:/vagrant$ groups
john vagrant
从用户组中删除用户
vagrant@homestead:~$ sudo gpasswd -d john vagrant
Removing user john from group vagrant
通过groups查看
john@homestead:/vagrant$ groups
john
切换用户
切换用户有两种方式
- su(switch user)
- sudo
su
su:切换用户,不加参数时su默认切换到root用户,如果要切换到其他用户,su后加上用户名即可
vagrant@homestead:~$ su
Password:
root@homestead:/home/vagrant# pwd
/home/vagrant
root@homestead:/home/vagrant# su vagrant
vagrant@homestead:~$ pwd
/home/vagrant
su后可加上“-”参数
vagrant@homestead:~$ su -
Password:
root@homestead:~# pwd
/root
root@homestead:~# su - vagrant
vagrant@homestead:~$ pwd
/home/vagrant
通过示例可以看到,加“-”与不加“-”的区别是:加上“-”之后,不但身份切换了,同时用户环境也切换了
sudo
因为su切换root用户时,每次都要输入root密码,而root用户拥有最高的权限,这样大部分人就都知道了root密码,为了解决这个问题,于是就有了sudo,sudo就是用root的身份执行某段命令,且不需要输入密码,但是sudo也不是所有用户都可以使用的,需要授权才可使用,这样就避免了任何用户都可以用sudo来执行命令。
管理sudo使用权限的文件在/etc/sudoers中
john@homestead:/vagrant$ sudo vim /etc/hosts
[sudo] password for john:
john is not in the sudoers file. This incident will be reported.
刚创建的用户john不可以使用sudo
通过visudo来编辑sudoers文件,也可以用vi来修改,但是visudo会检测配置文件是否有错误,防止改错了过后sudo无法使用
root@homestead:~# visudo
#找到以下代码
root ALL=(ALL:ALL) ALL
#在后面追加一条
john ALL=(ALL:ALL) ALL
这样john用户即可使用sudo