用户管理:
linux是一个多用户的操作系统,linux服务器会导致很多的在线用户去用不同的用户访问同一个,这时候会产生很多用户在用同一个服务器;
区分用户不是目的,目的是给不同的用户区分不同的权限;用用户来区分权限
用户之间怎么区分,它的不同之处:是靠3个文件来管理的
/etc/passwd #用户管理
/etc/shadow #用户管理
/etc/group #用户组管理
两个用户管理文件会记录一个用户的16种属性
useradd user01 创建用户
adduser user02 创建用户
# tail -1 /etc/passwd 查看文件最后一行
user01:x:500:500::/home/user01:/bin/bash ----》这是7个属性
1:用户名
2:口令位(如果是x,登录需要密码;没有x,就不需要密码;root切换user01不用密码;普通用户需要)
切记:权限大的用户往权限小的切换不用密码;都是普通用户之间需要密码;权限小的用户往权限大的切换用密码
3:uid(系统之间不是通过用户名来区分的,是通过uid来区分的;用户名是用户为了方便来记的)
4:gid;组id
5:描述信息(默认为空);说白了就是注释
6.用户的家目录(默认在/home/用户名)
7.shell(默认/bin/bash)
# tail -2 /etc/shadow
user01:!!:17228:0:99999:7:::
user02:!!:17228:0:99999:7:::
1:用户名
2:密码(需要注意的是,如果密码是以!开头的,代表该用户处于禁用状态;linux下禁用是禁用的是密码,就是怎么输密码,都不对)
3.上次修改时间(时间是距离1970-1-1有多少天)
4.最小间隔
5.最大间隔
6.警告时间
7.缓冲时间
8.失效时间
9.保留
设置密码:
方法一:交互设置密码:
#passwd 用户名
方法二:非交互设置密码:
#echo "明文密码"|passwd 用户名 --stdin
组(用户组)分类:
1.主组(在/etc/passwd里面第4个字段上)
2.从组(附加组)
约定:一个用户只能属于一个主组(默认跟随用户自动创建出来的那个组),可以属于多个附加组!
系统约定:
uid: 0 特权用户
uid: 1~499 系统用户(程序用户)
uid: 500+ 普通用户
# useradd user02 -u 503 //创建用户usr02,指定uid(没事不要自定义uid,因为系统默认uid是有限制的)
# useradd user03 -d /aaa //创建用户user03 指定家目录
# useradd user04 -M //创建用户user04,不创建家目录,而不是不在passwd中设置家目录(意思就是配置文件里面有,但是真正home下面没有 一些资源网络用户的时候才用到,为了安全不用创建家目录
例如:
# useradd tom -M
# tail -1 /etc/passwd 配置文件有
tom:x:502:502::/home/tom:/bin/bash
# ls /home/ 实际是没有 user01 user02
# useradd user08 -e 2014-04-01 //指定过期时间
# useradd user05 -s /sbin/nologin //创建用户并指定shell,默认是bash
# useradd user06 -g hr //创建用户,指定主组,尽量不要制定主组,指定附加组
# useradd user07 -G sale //创建用户,指定附加组
查看用户id号:
[root@test ~]# id user10
uid=506(user10) gid=510(user10) groups=510(user10)
修改已经存在用户的信息 usermod
# usermod -u 2000 user10 //修改用户uid
# usermod -s /sbin/nologin user10 //修改用户shell
==删除用户==
# userdel user10 //删除用户user10,但不删除用户家目录;再次创建同名用户,使用原同名用户的家目录
# ll -d /home/user10/
drwx------ 3 506 510 4096 09-01 21:14 /home/user10/
==删除用户及主目录==
[root@test ~]# userdel -r user11 //删除用户user11,删除用户家目录(但不建议使用r)
[root@test ~]# ll /home/user11
ls: /home/user11: 没有那个文件或目录
# usermod -L tom #禁用tom
# usermod -U tom #解除禁用
# passwd -l tom #禁用tom
# passwd -u tom #解除禁用
# passwd -S tom #查看用户状态,是否已经锁定
# passwd -d tom #清除密码,变成空密码,就是没有密码
用户组:
# groupadd hr
# groupadd sale
# groupadd it
# groupadd net01 -g 2000 添加组net01,并指定gid 2000
# groupdel net01 删除组net01
# grep 'net01' /etc/group 查看/etc/group中组net01信息
组是用来管理一些相似权限的用户,可能是权限相似,也可能是属性相似;把相似的权限或者属性添加到组里面,然后给组设置权限
组在linux下有两种类型:一种是指定主组,另外是指定附加组
/etc/group这个文件本来是用来记录组名,组ID
/etc/passwd记录用户属于哪个组
# usermod -u 2000 user10 //修改用户uid
# usermod -s /sbin/nologin user10 //修改用户shell
# usermod --help //修改用户属性的时候,尽量用命令修改,少用配置文件,因为可能要更改的不是一个地方
用户的附加组没有记录在/etc/passwd里面,记录在/etc/group
一个用户只能属于一个主组,/etc/passwd:gid指定记录
一个用户可以有多个附加组,/etc/group指定记录
id username:可以用id来查看用户的主组和附加组
用户创建文件,默认为主组,默认不会标记附加组,附加组不受影响
组在做配额要注意:如果要给一个组设置配额,一定要考虑那个组内的用户它所创建的文件组名写的是不是受配额影响的那个组;
所谓的配额怎么去统计?就是扫描所有文件,如果是组配额,就扫描所有文件,查看哪些文件是标记为哪个组,如果在做配额的时候
==useradd 命令参考的文件==以下这三个文件是创建用户相关的文件,相当于模板文件
1. /etc/login.defs //定义在创建用户时候的初始设置,uid gid 是否家目录 邮箱位置神码的
2. /etc/default/useradd //系统默认用户创建配置,可以修改家目录的位置 (但是为什么组是100)可以使用命令 useradd -D查看
3. /etc/skel/* //用户的初始配置文件
[root@ldap ~]# ls /etc/skel/.bash* 用户配置文件
/etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.bashrc
登出时执行命令 登录时执行的命令 是否创建bashrc
系统还会把用户以上的所有信息写入到/etc/passwd 文件中。
组的信息会存储到/etc/group中
用户的密码信息在/etc/shadow文件中存储
组的密码信息在/etc/gshadow文件中存储
useradd 用户名 或 adduser用户名
-d 指定家目录的位置
-c 指定备注的内容
-s 指定shell程序文件名
-r 创建系统用户(服务账户)
-M 不创建用户的家目录
-m 创建用户的家目录
-u 指定用户的UID
-g 指定用户的私有组(群组)
-G 指定用户加入某个普通组
-e 2014/7/25
usermod [参数] 用户名
-d -c -s -g -G -e
-L 锁定用户 (lock)
-U 解锁用户 (unlock)
-l 为用户更改登录名称
uid=0 管理员
gid=0 管理组
uid=1-499 系统用户
gid=1-499 系统用户组
uid=500-60000 普通用户
gid=500-60000 普通用户组
附加组:
#usermod -G boss wg 覆盖用户wg的附加组
#usermod -a -G kf wg 添加用户wg的附加组
组密码
gpasswd boss
Useradd:
-g 初始组
-G 附属组
-d 指定用户默认路径
-m 指定的路径不存在,自动创建。
Usermod:
-d 修改用户登录时的目录
-e 修改用户的有效期
-g 修改用户所属组群
-p 修改用户密码
-L 锁定用户
-U 解锁用户
Userdel:
-r 删除用户的同时也删除用户所属的目录
Groupadd:
-g 指定GID(唯一的)
-o 指定GID(可以是不唯一的)
Groupmod: -
-g 修改GID
-n 修改组名称
Gpasswd:
-a 添加用户到组
-d 删除组中的用户
-A 指定组管理员