useraddjava
userdelpython
usermodlinux
groupaddshell
groupdelbash
为何须要有用户?ui
1. linux是一个多用户系统加密
2. 权限管理(权限最小化)spa
用户:存在的目录是为了对系统中的资源作归属code
密码:存在的目的是为了对用户作身份认证blog
用户和用户组
用户组,在用户组中能够包含一个或者多个用户
方便对多个用户进行受权操做
/etc/passwd:用户基本信息
/etc/shadow:用户密码信息、过时时间等
/etc/group:用户组信息
/etc/gshadow:用户组密码
/etc/default/useradd:建立用户的默认配置信息
/etc/skel/:用户家目录模板
/etc/login.defs:全局用户设定信息
/etc/passwd: 每行是一个用户,用来记录用户的基本信息,每行的格式
account:password:UID:GID:GECOS:directory:shell
accout:用户名
password:用户密码,密码位置默认是x
UID:用户身份id,用来惟一的标识一个用户
GID:用户组id,用来在系统中惟一的标识一个用户组(这里指的是其基本组的组ID)
GECOS:用户描述信息,能够空白,也能够随意写(useradd -c )
directory:用户家目录
shell:用户所使用的shell类型
/bin/bash-->能够登陆系统
/sbin/nologin-->该用户必定没法登陆系统
好比
root : x : 0 : 0 : newuser : /root : /bin/bash
用户名 密 码 用户id 用户所在组的id 描述信息 家目录 shell类型
/etc/group
用户组信息
linux,用户必定是属于一个组的
在linux中,建立用户的时候,
会自动建立一个组,组名和组id都和所建立的用户相同
并且,该用户会自动加入到这个组中
c:x:1007:
组成:groupname:password:GID: [user1, user2.....]
groupname:组名
password:组密码
GID:组id
[user1, user2.....]:改组中的用户列表
概念
用户的基本组(主组):当前用户具备哪一个组的权限
用户的附加组:用户额外属于的组
zx
主组:gp02
附加组:gp0一、gp03
/etc/default/useradd
定义建立用户默认选项的文件
# useradd defaults file # useradd默认文件
GROUP=100 #表示可建立普通组
HOME=/home #用户的家目录建在/home中;用户家目录的默认建立地
INACTIVE=-1 #是否启用账号过时停权,-1表示不启用;宽限天数,0及如下数皆为无效数字
EXPIRE= #账号终止日期,不设置表示不启用;账号失效日期(如:20081212)
SHELL=/bin/bash #所用SHELL的类型;登陆后执行的程序
SKEL=/etc/skel #用户家目录中的环境文件,默认添加用户的目录默认文件存放位置;也就是说,当咱们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;
CREATE_MAIL_SPOOL=yes #是否建立用户邮件缓冲,yes表示建立
能够登陆系统的用户
管理员用户:uid为0的用户
普通用户:就是能够登陆系统,可是没有管理员权限的用户
不能登陆系统的用户:
系统用户:用来运行一个程序,而不是用来登陆系统
各种用户的id
管理员用户:0
系统用户:1-999
普通用户:1000-60000(自定义uid最大4294967294)
系统用户的特色
1. 由于不须要登陆,因此shell类型一般为/sbin/nologin
2. 系统用户没有家目录
3. 系统用户id一般是小于1000
useradd [options] username
options:
-d, --home HOME_DIR:指定用户家目录
-c, --comment COMMENT:用户说明信息
-e, --expiredate EXPIRE_DATE:指的帐号的过时时间,时间格式 YYYY/MM/DD
-g, --gid GROUP:指的用户的基本组的组id
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指的用户的附加组列表
-u,--uid UID:指的用户的uid
-m, --create-home:建立用户的时候自动建立用户家目录(默认就已经使用)
-M:不自动建立用户家目录
-o, --non-unique:一般和-u一块儿使用,用来让两个用使用相同的uid
-r, --system:建立一个系统用户
-s, --shell SHELL:在建立用户的时候,指定用户的shell类型
(/bin/bash/,/sbin/nlogin)
建立一个系统用户
# useradd -s /sbin/nologin -M -r ken
passwd [[options] username]
(若是不指定用户名,那么就是修改当前用户的密码)
options:
--stdin
-l:锁定用户
-u:解锁用户
-d:删除用户密码
-e:让用户密码过时
echo “ 123“ | passwd --stdin ken
表示给ken用户设置密码123 (ken用户必须存在)
设置密码的原则
1. 长度要够
2. 密码复杂度(数字+字母+特殊符号)
删除用户 userdel
userdel [options] username
options:
-r:在删除用户的时候,连同用户数据一并删除
groupadd [options] groupname
options:
-g GID:
-o:
groupdel groupname
zxhk: $6$dgnPoZ0s$6xNKEWz : 17729 : 0 : 99999 : 7 : : :
第一段:用户名:
第二段:加密后的密码
第三段:上次修改密码举例元年通过的天数1970年1月1日(若是该字段空,意味着该用户密码被禁用)
第四段:密码最短使用时间(0表示不限制)
第五段:密码最长有效期(99999表示不限制)(若是第5的值小于第四段,那么用户没法修改本身的密码)
第六段:密码到期前几天开始发送告警,提示密码即将过去,请当即修改
第七段:非活动期间,密码到期后的宽限时间(登陆系统的时候必须先修改密码,才能登陆)
第八段:密码过时时间(也是举例计算机元年通过的天数)(这里和前面的几个时间没有联系)
第九段:保留字段
usermod [options] username
options
-g, --gid GROUP: 更 新 使 用 者 新 的 起 始 登 入 群 组 。 群 组 名 须 已 存 在 。
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]: 定 义 使 用 者 为 一 堆 groups 的 成 员 。 每 个 群 组 使 用 ,区 格 开 来
-u, --uid UID: 用 者 ID 值 。必 须 为 惟 一 的 ID 值
-s, --shell SHELL: 指 定 新 登 入 shell 。 如 此 栏 留 白 , 系 统 将 选 用 系 统 预 设 shell 。
-L, --lock: 锁定用户的密码
-U : 解锁用户的密码
-l, --login NEW_LOGIN : 变 更 使 用 者 login 时 的 名 称 为 login_name 。
-e, --expiredate EXPIRE_DATE:加 上 使 用 者 账 号 停 止 日 期 。 日 期 格 式 为 MM/DD/YY.
-d, --home HOME_DIR:更 新 使 用 者 新 的 登 入 目 录 。
-m, --move-home:移动用户家目录至新的位置
做用:用来查看指定的用户的信息(或判断用户是否存在)
格式:id [-u|-g|-G] username
选项
-u:仅仅显示用户uid
-g:仅仅显示用户gid
-G:仅仅显示用户所有组id
做用:进行切换用户
格式:su - 目标用户
su命令和su -命令最大的本质区别就是:
前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;然后者连用户和Shell环境一块儿切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成
root用户之后,pwd一下,发现工做目录仍然是普通用户的工做目录;而用su -命令切换之后,工做目录变成root的工做目录了。用echo $PATH命令看一下su和su -之后的环境变量有
何不一样。以此类推,要从当前用户切换到其它用户也同样,应该使用su -命令
1. 建立用户java,uid 1000 基本组是gp001 附加组 gp002 gp003
2. 修改用户java,
将名称修改成python,
将uid修改成 2000,
修改主组是cats,
shell类型改成 /sbin/nologin
让该用户在10月1号到期
答案:
1.
[root@ken ~] # useradd -u 1000 -g gp001 -G gp002,gp003 java
2.
[root@ken ~]# usermod -l python -u 2000 -g cats -s /sbin/nologin -e 10/01 java