一、用户管理
1、为什么需要用户
1)计算机及网络资源的合理分配 2)可以控制用户访问系统的权限。3)身份认证 4) 进程 以某个用户的身份来运行
2、用户分类
用户的角色是通过UID(用户ID)来识别的,而不是用户名
Linux系统三大类用户:root用户、系统用户、普通用户
1)root用户
root用户UID为0,权限最高的
2)系统用户
又成虚拟用户、伪用户或假用户,不具有登录Linux系统的能力,但却是系统运行不可缺少的用户
CentOS6:1~499
CentOS7:1~999
3)普通用户
能登录Linux系统,使用的权限有限,由管理员创建
CentOS6:500~65535
CentOS7:1000~65535
3、用户授权
某个用户对某一个文件或者是某一个文件夹的操作权限,为授权(authorization)
4、组
将多个用户与权限建立关联关系的容器,一次给文件设置权限
管理组、普通组
基本组、附加组
5、管理用户和组
常用命令:useradd,passwd,userdel,usermod,groupadd,gpasswd,groupdel,groupmod
1) useradd命令
useradd [-c comment] [-d home_dir]
[-e expire_date] [-f inactive_time]
[-g initial_group] [-G group[,...]]
[-m [-k skeleton_dir] | -M] [-s shell]
[-u uid [ -o]] [-n] [-r] login
(-c:指定描述信息,-d:指定家目录,-e:帐 号 终 止 日 期,-f:非活动时间,-g:基本组,-G:附加组,-s:指定的shell,-u:指定uid
[root@localhost software]# useradd -u 501 user1
user1:x:501:501::/home/user1:/bin/bash
即:用户名:密码:用户UID:基本组ID:用户描述信息:用户家目录:bash
(注意:创建用户时,如果没有指定基本组,则会自动创建一个与用户名同名的组)
2)passwd命令
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
用法:
passwd: 修改自己的密码
passwd username 修改指定用户的密码
[root@localhost ~]# passwd user1
更改用户 user1 的密码 。
新的 密码:
重新输入新的 密码:
参数:
--stdin :可以通过来自前一个管道的数据,作为密码输入
-l :lock的意思,会将/etc/shadow第二列最前面加上!使密码失效
-u :与-l相对,是Unlock的意思
-S :列出密码相关参数,即shadow文件内的大部分信息
-n :后面接天数,shadow的第4字段,多久不可修改密码
-x :后面接天数,shadow的第5字段,多久内必须要改动密码
-w :后面接天数,shadow的第6字段,密码过期前的警告天数
-i :后面接“日期”,shaodow的第7字段,密码失效日期
[root@localhost ~]# echo "yubing" | passwd --stdin yubing
更改用户 yubing 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost ~]# passwd -S yubing
yubing PS 2015-12-31 0 99999 7 -1 (密码已设置,使用 SHA512 加密。)
[root@localhost ~]# passwd -l yubing 锁用户
3)usermod 修改用户属性
-a|--append ##把用户追加到某些组中,仅与-G选项一起使用
-c|--comment ##修改/etc/passwd文件第五段comment
-d|--home ##修改用户的家目录通常和-m选项一起使用
-e|--expiredate ##指定用户帐号禁用的日期,格式YY-MM-DD
-f|--inactive ##用户密码过期多少天后采用就禁用该帐号,0表示密码已过期就禁用帐号,-1表示禁用此功能,默认值是-1
-g|--gid ##修改用户的gid,改组一定存在-G|--groups ##把用户追加到某些组中,仅与-a选项一起使用
-l|--login ##修改用户的登录名称
-L|--lock ##锁定用户的密码
-m|--move-home ##修改用户的家目录通常和-d选项一起使用
-s|--shell ##修改用户的shell
-u|--uid ##修改用户的uid,该uid必须唯一
-U|--unlock ##解锁用户的密码
案例:
[root@localhost ~]# useradd user02
[root@localhost ~]# echo "123456" | passwd --stdin user02
更改用户 user02 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost ~]# groupadd user
[root@localhost ~]# usermod -aG user user02 #多个组之间用空格隔开
[root@localhost ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@localhost ~]#usermod -d /test/user02
[root@localhost ~]#usermod -l userchain user02
[root@localhost ~]# id userchain
uid=503(userchain) gid=503(user02) 组=503(user02),504(user)
[root@localhost ~]# usermod -e “2016-08-11” userchain
[root@localhost ~]#usermod -f 0 userchain
(注意:usermod不允许你改变正在线上的使用者帐号名称。当usermod用来改变userID,必须确认这名user没在电脑上执行任何程序)
4)userdel 删除命令
语法
userdel [-r] login
描述
userdel 命 令 修 改 系 统 帐 号 档删 除 所 有 login 会 参 考 的 部 份 。使 用 者 名 称 必 须是 存 在 的 。
-r 使 用 者 目 录 下 的 档 案 一 并 移 除 。 在 其 他 位 置 上 的 档案 也 将 一 一 找 出 并 删 除 。
[root@localhost ~]# userdel -r userchain
[root@localhost ~]# id userchain
id: userchain:无此用户
4)groupadd 组创建命令
-g GID 指定gid号
[root@localhost ~]# groupadd mygrp2
[root@localhost ~]# tail /etc/group
stapusr:x:156:
stapsys:x:157:
stapdev:x:158:
tcpdump:x:72:
slocate:x:21:
user1:x:501:
yubing:x:502:
user02:x:503:
user:x:504:
mygrp2:x:505:
5)groupdel 删除组
[root@localhost ~]# groupdel mygrp2
二、用户权限
1、用户权限主要包括:r w
针对文件: r: 可使用查看工具查看内容(cat,vi) w: 可编辑其内容 x: 将此文件向内核提请启动为进程
针对目录: r:可以使用ls命令列出其内部所有文件及子目录的相关信息
w: 在此目录内创建及删除文件
x:可以cd进此目录,可以切换进此目录,使用ls -l查看目录及子文件的所有权限信息
2、用户启动某进程访问某文件资源,权限匹配机制
1)首先查看此进程的属主,与被访问的文件的属主是否为同一个用户,如果是,则以被访问的属主的身份去运行该文件,从而应用的权限为属主的权限
例如:在系统上,以root用户的身份运行ls命令,查看/etc/fstab文件,而这个被访问的文件的属主为root,此时判定位同一个用户
2)如果不是,要查看运行进程用户,是不是属于被访问文件的属组,如果是,则应用组权限,如果不是,即应用其他权限