Linux用户管理
Linux系统中超级用户是root,通过超级用户root可以创建其他的普通用户,Linux是一个支持多用户的操作系统。在实际应用中,一般会分配给开发人员专属的账户,这个账户只拥有部分权限,如果权限太高,操作的范围过大,一些误操可能导致系统崩溃,或者数据不安全,所以多用户机制就是一种系统安全策略。
在Linux系统中任何一个用户都对应:一个用户名 + 一个口令(密码)。用户使用系统时需要输入用户名和口令登录,登录成功后就可以进入自己的主目录(主目录就是自己的工作目录)。
用户账号管理主要包括三个方面:
- 用户组的管理;
- 用户的管理;
- 为用户主目录之外的目录授权。
1. 用户组的管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
用户组的管理涉及用户组的添加、修改和删除。
用户组的添加、修改和删除实际上就是对/etc/group文件的更新。添加一个用户组,相当于在这个文件中添加一个记录。
使用root账户查看当前系统的用户组有哪些:
[root@iZ2ze4z8h14hq1x56p3n9xZ test]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:33:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
users:x:100:
nobody:x:65534:
dbus:x:81:
utmp:x:22:
每一条记录都是用冒号隔开的字段,第一个字段表示组名,第二个字段表示组的密码表示,第三个字段是组的ID,再往后是组的成员(可能没有)。即:
组名:密码标识:GID:该用户组中的用户列表
查看当前登录用户属于哪一组:
groups
查看某一个用户属于哪一组:
[root@iZ2ze4z8h14hq1x56p3n9xZ test]# groups root
root : root
[root@iZ2ze4z8h14hq1x56p3n9xZ test]# groups zyx
zyx : zyx
1.1 用户组的添加
语法:groupadd [选项] 组名
常用选项包括:
-g :可以通过这个选项来指定新用户组的标识好哦(GID)
添加一个用户组dev1:
groupadd dev1
添加一个用户组dev2并指定GID:
groupadd -g 101 dev2 # 其中101就是dev2这个组的组号
1.2 用户组的修改
修改组标识号:
groupmod -g 102 dev2 # 将dev2这个组的组号改为102
修改组名:
groupmod -n dev3 dev2 # 将dev2修改为dev3
1.3 用户组的删除
删除用户组:
groupdel dev3 # 删除用户组dev3
2. 用户的管理
用户管理工作主要涉及到用户的添加、修改和删除。
2.1 添加用户
添加用户就是在系统中创建一个新账号,然后为新账号分配用户组、主目录等资源。
语法:useradd [选项] 用户名
选项:
- -d:指定新用户的主目录;
- -g:指定新用户属于哪个组(主组);
- -G:可以给新用户添加附加组。
添加用户:
useradd zyx
注意:当新建用户时,没有指定组,也没有指定工作目录时:
- 默认的组名:可自己用户名一样
- 默认的主目录:/home/用户名
添加用户zhangsan并设置该用户的主目录:
useradd -d /usr/zhangsan zhangsan
添加用户lisi并指定组和附加组:
useradd -d /usr/lisi -g dev -G lisi # 添加lisi用户,该用户主目录为/usr/lisi,所属组dev(开发),附加组test(测试)
2.2 设置密码
给用户设置密码:
passwd 用户名
例如:给用户lisi设置密码:
passwd lisi
注意:增加用户就是在/etcd/passwd文件中为新用户增加一条记录,同时更新其他系统文件如:/etx/shadow,/etc/passwd。
通过查看/etc/passwd文件可以看到系统中有哪些用户,例如执行:cat /etc/passwd:
用冒号隔开的字段分别是:用户名:密码:用户id:组id:用户备注信息:主目录:shell程序路径
密码会单独存储在/etc/shadow文件中,例如执行:cat /etc/shadow:
2.3 切换用户
切换用户前面说过,使用su命令就行,例如从root用户切到lisi用户:
su lisi
注意:从普通用户切换到高级用户需要密码,密码输入时不回显。
切换到普通用户之后,该普通用户默认只对自己的“主目录”有权限,主目录之外的目录是没有权限的。
2.4 修改用户
修改用户就是对用户名,用户主目录,用户组等进行修改。
语法:usermod [选项] 用户名
- -d:指定新用户的主目录;
- -g:指定新用户属于哪个组(主组);
- -G:可以给新用户添加附加组;
- -l:指定新的用户名(小写的L)。
修改用户名:
usermod -l zhangsi zhangsan # 把zhangsan的名字改为zhagnsi
修改主目录:
# -m 选项很重要,当有了这个选项之后,目录不存在时会新建该目录
usermod -d /usr/zhangsan2 -m zhangsan # 把zhangsan的主目录改为zhangsan2
修改所属组:
usermod -g dev1 zhangsan # 把zhangsan的组改为dev1
锁定用户:
usermod -L zhangsan # 把用户zhangsan锁定
解锁用户:
usermod -U zhangsan # 给zhagnsan用户解锁
2.5 删除用户
删除用户并连同用户主目录一块删除:
userdel -r zhangsan # -r选项的作用是连同该用户主目录一块删除。
3. 为用户主目录之外的目录授权
第一步:创建目录
mkdir /java
第二步:给目录授权
# -R表示递归设置权限,该目录下所有的子目录以及子文件。chmod是授权的,后面章节会详细说明。
# 7 7 5 :分别表示文件拥有者的权限 同组人员的权限 其他组成员的权限
chmod -R 775 /java
第三步:创建组
groupadd dev
第四步:把目录赋予组
chgrp -R dev /java # 把/java这个组给dev这个组
第五步:创建用户
useradd xiaoming # 这个时候xiaoming是有一个默认的组的(主组)
第六步:设置密码
passwd xiaoming
第七步:给用户添加附加组
usermod -G dev xiaoming