用户管理
一、Linux用户和组相关的文件
/etc/passwd:
centos:x:500:500::/home/centos:/bin/bash
各部分解释,一共分为7部分,用“:”分割
用户名:用户密码:UID:GID:注释信息:家目录:SHELL
/etc/shadow:
centos:$6$LFk9FU0x$lgGUCoCUkzJAyiEkAPWf04g8VootkRtEpWDDX68K8MbD60oHAagQx0pTqS5vETYSZZUnPwhUrMzZveCxgO/NP0:16673:0:99999:7:::
各部分同样用“:”分隔开,一共9段
1、 用户名
2、 加密的密码串,格式:$XXXXX$XXXXXXXXX
3、 上次修改密码的日期(相对于UNIX元年,1970年1月1日)
4、 最短使用期限(按天计算,0代表无限期短)
5、 最长使用期限(按天计算)
6、 密码警告期限(离密码修改时间前N天提醒)
7、 密码非活动期限(到最长使用期限N天不修改密码则限制登陆)
8、 账号到期时间(从1970年1月1日计算)
9、 保留
/etc/group:centos:x:500:
1、 组名
2、 密码
3、 GID
4、 用户列表
二、命令演示
useradd 添加用户
useradd [options] LOGIN
useradd -D [options] 设置默认选项
-u 指定UID
-g 指定GID,事先存在
-G 指定groups,事先存在
-s 指定shell
-d 指定家目录
-M 创建用户不给家目录
-r 创建系统用户(已此用户身份来启动服务,默认是不登陆系统的)不常用
-c 填写注释信息(比如什么NAME,phone number,office number等)不常用
-e 账号到期时间,格式YYYY-MM-DD
实例演示:
创建一个用户指定UID为2000,GID为1000,并且加入sql、Oracle两个所属组中,家目录为/home/database,注释信息为“test account”,指定的shell是/sbin/nologin,用户名为wkp
[[email protected] ~]# useradd -u 2000 -g 1000 -d /home/database -c "test account" -s /sbin/nologin -G sql,oracle wkp
[[email protected] ~]# id wkp
uid=2000(wkp) gid=1000(test) groups=1000(test),501(sql),502(oracle)
创建用户的时候指定用户的失效日期,不过在/etc/shadow中是按UNIX元年计算
例如:
[[email protected] ~]# useradd -e 2015-08-27 test1
[[email protected] ~]# tail -2 /etc/shadow
wkp:!!:16673:0:99999:7:::
test1:!!:16673:0:99999:7::16674:
16674:1970年1月1日至到期日期
[[email protected] ~]# useradd -M test3
[[email protected] ~]# ls /home/
centos database test1 test2
创建用户时,不给家目录
groupadd 创建组
-r 系统组
-g 指定GID
[[email protected] ~]# groupadd -g 1008 test4
[[email protected] ~]# tail -1 /etc/group
test4:x:1008:
id 查看用户UID、GID等信息
-u 仅查看uid
-g 仅查看gid
-G 仅查看groups
-n 仅查看name
su switch user 切换用户
su username 半切换
su – username 或者su –l username 完全切换
su – name –c “command”
以某用户身份执行命令
usermod 修改用户属性信息
-u 修改用户uid
-g 修改用户gid
-G 修改用户所属组,需要加上-a选项
-s 修改用户是shell
-c 修改用户注释信息
-d 修改用户家目录,如果将原来家目录移动到别处要另外加上-m
-l 修改账户的用户名
-L lock
-U unlock
修wkp用户uid为1001,gid为1001,所属组为2002和2003 ,shell为/bin/bash,家目录为/home/wkp
用户锁定
用户解锁
修改用户名
passwd 修改用户名密码
-d, --delete delete the password for the named account (root only)
-l, --lock lock the password for the named account (root only)
-u, --unlock unlock the password for the named account (root only)
-e, --expire expire the password for the named account (root only)
-x, --maximum=DAYS maximum password lifetime (root only)
-n, --minimum=DAYS minimum password lifetime (root only)
-w, --warning=DAYS number of days warning users receives before password expiration (root only)
-i, --inactive=DAYS number of days after password expiration when an account becomes disabled (root only)
--stdin 从标准输出接收密码
普通用户只能修改自己的密码,并且密码复杂度符合要求
root为其他用户设置简单的密码
锁定、解锁用户演示
加上—stdin避免了与用户的交互,可以在脚本自动化中使用
userdel 删除用户
-r 删除用户同时把用户家目录删除
groupmod 修改组属性信息
-n 修改组名
-g 修改组ID
gpasswd 修改组密码
一般情况下用不着,这种情况下用得到
newgrp:切换基本组为指定的组
为wkp组设置密码
可以看出,在临时切换基本组的时候需要用到密码,新建后的文件所属组发生变化(变成临时切换的组)
groupdel 删除组
groupdel GROUPNAME 即可
chage 修改账号和密码的有效期
-l 查看账号状态,当前的设置
-d 设置上一次修改日期
-E 设置账户过期的日期
-m 密码最小使用时间
-M 密码最长使用时间
-W 设置过期警告时间
chage --help可以查看到这些用法说明
修改账户的密码最小使用日期为3天、最长使用时间33天、密码过期前2天警告
finger 查看账号的信息
用户名、家目录、shell、是否登陆、mail和任务计划