用户管理命令
组帐号维护命令
useradd [options] LOGIN
-u UID: [UID_MIN, UID_MAX]定义在/etc/login.defs
例如:指定UID为999999
[root@centos7 ~]# useradd -u 999999 hello
[root@centos7 ~]# id hello
uid=999999(hello) gid=10000(hello) groups=10000(hello)
-o 配合-u选项,不检查UID的唯一性
例如:
[root@centos7 ~]# useradd -o -u 999999 hai
[root@centos7 ~]# id hello
uid=999999(hello) gid=10000(hello) groups=10000(hello)
[root@centos7 ~]# id hai
uid=999999(hello) gid=10000(hello) groups=10000(hello)
-g GID:指明用户所属基本组,可为组名,也可以GID
-c "COMMENT":用户的注释信息
-d HOME_DIR: 以指定的路径(不存在)为家目录
-s SHELL: 指明用户的默认shell程序
可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...]:为用户指明附加组,组须事先存在
-N 不创建私用组做主组,使用users组做主组
-r: 创建系统用户 CentOS 6: ID<500, CentOS 7: ID<1000
例如:创建 UID为123456,主组为user1 付加组为jerr 家目录为 /app/user3 shell为/bin/csh
[root@centos7 ~]# useradd -o -u 123456 -g user1 -G jerr -d /app/user3 -s /bin/csh -c "good" user3
useradd -D 显示新建用户默认属性
例如:
[root@centos7 ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
useradd –D -s SHELL #修改新建用户的默认shell
useradd –D –b BASE_DIR #修改新建用户的默认家目录
useradd –D –g GROUP #修改新建用户的默认组
/etc/default/useradd # 新建用户默认配置文件
/etc/skel/* # 新建用户的文件,例如:
[root@centos6 ~]# ls -a /etc/skel/
. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla
/etc/login.defs # 用户登陆默认文件
newusers passwd格式文件 批量创建用户
chpasswd 批量修改用户口令
usermod [OPTION] login
-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的
附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s SHELL:新的默认SHELL
-c 'COMMENT':新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移
动原家数据,同时使用-m选项
-l login_name: 新的名字;
-L: lock指定用户,在/etc/shadow 密码栏的增加 !
-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期
-f INACTIVE: 设定非活动期限
范例1:修改haiyun用户的UID为6666
[root@centos7 ~]# id haiyun
uid=1004(haiyun) gid=1004(haiyun) groups=1004(haiyun)
[root@centos7 ~]# usermod -u 6666 haiyun
[root@centos7 ~]# id haiyun
uid=6666(haiyun) gid=1004(haiyun) groups=1004(haiyun)
范例2:修改用户haiyun的说明列,加上“haiyun's test”
[root@centos7 ~]# usermod -c "haiyun's test" haiyun
[root@centos7 ~]# getent passwd haiyun
haiyun:x:6666:1004:haiyun's test:/home/haiyun:/bin/bash
范例3:修改用户haiyun密码在2017年8月14日失效
[root@centos7 ~]# usermod -e 2017-08-15 haiyun
[root@centos7 ~]# getent shadow haiyun
haiyun:$6$QzvQ4qfN$kbiUQYmdV9oehOHnXmQ/DYW83czB..nhEWhxqo.v25W6kiBxBWFEN0kLuraSSxwDdX340HcK5zWULX7GzpGLV.:17391:0:99999:7::17393: <==第8个字段代表密码失效时间17393,是使用1970年以来的总日数设置
范例4:新建用户haiyun这个系统账号时并没有给予主文件夹,请新建他的主文件夹
[root@centos7 ~]# ll -d ~haiyun <==haiyun用户确实没有家目录
ls: cannot access /home/haiyun: No such file or directory
[root@centos7 ~]# cp -a /etc/skel /home/haiyun <==复制模板文件
[root@centos7 ~]# chown -R haiyun:haiyun /home/haiyun/ <==修改所有者和所属组
[root@centos7 ~]# chmod 700 /home/haiyun/ <==修改权限
[root@centos7 ~]# ll -a ~haiyun <==查看
total 12
drwx------. 3 haiyun haiyun 78 Jul 14 11:16 .
drwxr-xr-x. 6 root root 71 Aug 13 14:37 ..
-rw-r--r--. 1 haiyun haiyun 18 Aug 3 2016 .bash_logout
-rw-r--r--. 1 haiyun haiyun 193 Aug 3 2016 .bash_profile
-rw-r--r--. 1 haiyun haiyun 231 Aug 3 2016 .bashrc
drwxr-xr-x. 4 haiyun haiyun 39 Jul 14 11:16 .mozilla
userdel [OPTION]... login
-r: 删除用户家目录
范例1:删除用户haiyun,且把她的家目录一块删除
[root@centos7 ~]# userdel -r haiyun
id [OPTION]... [USER]
-u: 显示UID
-g: 显示GID
-G: 显示用户所属的组的ID
-n: 显示名称,需配合ugG使用
范例1:查看haiyun用户的UID
[root@centos7 ~]# id -u haiyun
1004
范例2:查看haiyun用户的GID
[root@centos7 ~]# id -g haiyun
1004
范例3:根据UID 1004查看是哪个用户
[root@centos7 ~]# id -n 1004 -u
haiyun
su [options...] [-] [user [args...]]
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的
配置文件,不改变当前工作目录
su - UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
root su至其他用户无须密码;非root用户切换时需要密码
换个身份执行命令:
su [-] UserName -c 'COMMAND'
选项: -l --login
su -l UserName 相当于 su - UserName
范例1:以非登陆方式切换到用户haiyun
[root@centos7 ~]# su haiyun
[haiyun@centos7 root]$ pwd
/root
范例2:以登陆方式切换到用户haiyun
[root@centos7 ~]# su - haiyun
Last login: Sun Aug 13 14:46:40 CST 2017 on pts/0
[haiyun@centos7 ~]$ pwd
/home/haiyun
范例3:切换到haiyun用户,查看root目录下的内容,使用su 执行命令ls
[root@centos7 ~]# su haiyun
[haiyun@centos7 root]$ ls
ls: cannot open directory .: Permission denied
[haiyun@centos7 root]$ su - -c "ls"
Password:
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates
Desktop Downloads Music Public Videos
passwd [OPTIONS] UserName: 修改指定用户的密码,仅root用户权限
passwd: 修改自己的密码
常用选项:
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接收用户密码
echo "PASSWORD" | passwd --stdin USERNAME
范例1:请root用户为haiyun用户设置密码
[root@centos7 ~]# passwd haiyun <==为haiyun设置密码,后面不跟用户就是为自己设置密码
Changing password for user haiyun.
New password:
BAD PASSWORD: The password is shorter than 8 characters <==密码太过简单或太短的报错!
Retype new password:
passwd: all authentication tokens updated successfully. <==虽然简单或短但还是设置成功了!
范例2:haiyun为自己设定密码
[haiyun@centos7 ~]$ passwd
Changing password for user haiyun.
Changing password for haiyun.
(current) UNIX password: <==此处输入原来的旧密码,如果旧密码输入不通过的话是无法设置新密码的!
New password: <==输入新密码,密码不通过,少于8位(要符合密码复杂策略)
BAD PASSWORD: The password is shorter than 8 characters
New password: <==重新输入
Retype new password: <==已通过再次输入
passwd: all authentication tokens updated successfully. <==设置成功
范例3:使用标准输入来设置密码
[root@centos7 ~]# echo "haiyun" | passwd --stdin haiyun
Changing password for user haiyun.
passwd: all authentication tokens updated successfully.
范例4:管理haiyun的密码,使其具有30天更改、10天密码失效的设置
[root@centos7 ~]# passwd -S haiyun
haiyun PS 2017-08-13 0 99999 7 -1 (Password set, SHA512 crypt.)
# 以上依次为:密码新建时间、密码最短有效期(0)、密码最长有效期(99999)、密码过期警告天数(7)、密码失效时间(-1:代表永久不会失效)、括号里的内容代表密码已设置使用SHA512加密
[root@centos7 ~]# passwd -x 30 -i 10 haiyun
Adjusting aging data for user haiyun.
passwd: Success
[root@centos7 ~]# passwd -S haiyun
haiyun PS 2017-08-13 0 30 7 10 (Password set, SHA512 crypt.)
范例5:让haiyun的账号失效,查看完毕再让他失效
[root@centos7 ~]# passwd -l haiyun
Locking password for user haiyun.
passwd: Success
[root@centos7 ~]# passwd -S haiyun
haiyun LK 2017-08-13 0 30 7 10 (Password locked.) <==可以看到密码已失效
[root@centos7 ~]# getent shadow haiyun
haiyun:!!$6$ExWq7rry$kmJHHH8TeTzLH87b9x1iRRqDUwgNGDLmd9qcF/JxoX6rgkSfrmz7cCgZvbCOri0evGe8Yh51RCLnDW6I6Pfqk1:17391:0:30:7:10:: <==在密码字段前面家里两个!!
chage [-ldEImMW]帐号名
选项与参数:
-l :列出该帐号的详细密码参数;
-d :后面接日期,修改shadow 第三栏位(最近一次更改密码的日期),格式YYYY-MM-DD
-E :后面接日期,修改shadow 第八栏位(帐号失效日),格式YYYY-MM-DD
-I :后面接天数,修改shadow 第七栏位(密码失效日期)
-m :后面接天数,修改shadow 第四栏位(密码最短保留天数)
-M :后面接天数,修改shadow 第五栏位(密码多久需要进行变更)
-W :后面接天数,修改shadow 第六栏位(密码过期前警告日期)
范例1:列出haiyun的详细密码参数
[root@centos7 ~]# chage -l haiyun
Last password change : Aug 13, 2017
Password expires : Sep 12, 2017
Password inactive : Sep 22, 2017
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 30
Number of days of warning before password expires : 7
范例2:新建一个名为test的账号,该账号第一次登陆后使用默认密码,但必须要更改过密码后使用新密码才能够登陆系统使用bash环境
[root@centos7 ~]# useradd test
[root@centos7 ~]# echo "test123"|passwd --stdin test
Changing password for user test.
passwd: all authentication tokens updated successfully.
[root@centos7 ~]# chage -d 0 test
范例3:尝试以test登陆的情况
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user test.
Changing password for test.
(current) UNIX password: <==输入当前密码
New password: <==输入新密码,密码太短
BAD PASSWORD: The password is shorter than 8 characters
New password: <==重新输入
Retype new password: <==再次输入
passwd: all authentication tokens updated successfully.
finger [-s] username #查阅用户相关信息
选项与参数:
-s :仅列出使用者的帐号、全名、终端机代号与登入时间等等;
-m :列出与后面接的帐号相同者,而不是利用部分比对(包括全名部分)
范例:查看用户haiyun的相关属性信息
[root@centos7 ~]# finger haiyun
Login: haiyun Name:
Directory: /home/haiyun Shell: /bin/bash
Last login Sun Aug 13 14:56 (CST) on pts/0
No mail.
No Plan.
chfn [-foph] [帐号名] #修改用户相关信息
选项与参数:
-f :后面接完整的大名;
-o :您办公室的房间号码;
-p :办公室的电话号码;
-h :家里的电话号码!
范例:修改haiyun的信息
[root@centos7 ~]# chfn haiyun
Changing finger information for haiyun.
Name []: haiyun
Office []: haiyun
Office Phone []: 100
Home Phone []: 101
Finger information changed.
[root@centos7 ~]# finger haiyun
Login: haiyun Name: haiyun
Directory: /home/haiyun Shell: /bin/bash
Office: haiyun, 100 Home Phone: 101
Last login Sun Aug 13 14:56 (CST) on pts/0
No mail.
No Plan.
chsh [-ls] #修改shell
选项与参数:
-l :列出目前系统上面可用的shell ,其实就是/etc/shells 的内容!
-s :设定修改自己的Shell 啰
范例1:列出当前系统上所有合法的shell
方法①:
[root@centos7 ~]# chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
方法②:
[root@centos7 ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
范例2:修改用户haiyun的shell为csh
[root@centos7 ~]# chsh -s /bin/csh haiyun <==注意:不要随便修改shell
Changing shell for haiyun.
Shell changed.
[root@centos7 ~]# getent passwd haiyun
haiyun:x:1004:1004:haiyun,haiyun,100,101:/home/haiyun:/bin/csh
groupadd [OPTION]... group_name
-g GID: 指明GID号; [GID_MIN, GID_MAX]
-r: 创建系统组
CentOS 6: ID<500
CentOS 7: ID<1000
范例1:新建一个名为group1的用户组
[root@centos7 ~]# groupadd group1
[root@centos7 ~]# getent group group1
group1:x:1006:
范例2:新建一个名为tset的系统组
[root@centos7 ~]# groupadd -r tset
[root@centos7 ~]# getent group tset
tset:x:984:
组属性修改: groupmod
groupmod [OPTION]... group
-n group_name: 新名字
-g GID: 新的GID
范例:将刚才上个命令创建的group1名臣修改为mygroup,GID为666
[root@centos7 ~]# getent group group1
group1:x:1006:
[root@centos7 ~]# groupmod -g 666 -n mygroup group1
[root@centos7 ~]# getent group mygroup
mygroup:x:666:
groupdel [groupname]
范例:删除组mygroup
[root@centos7 ~]# groupdel mygroup
gpasswd [OPTION] GROUP
-a user: 将user添加至指定组中
-d user: 从指定组中移除用户user
-A user1,user2,...: 设置有管理权限的用户列表
-M user1,user2:将某些账号加入这个用户组中
范例1:新建一个用户组,名为testgroup且用户组交给haiyun管理
[root@centos7 ~]# groupadd testgroup
[root@centos7 ~]# gpasswd testgroup
Changing the password for group testgroup
New Password:
Re-enter new password:
[root@centos7 ~]# gpasswd -A haiyun testgroup <==加入用户组管理员为haiyun
[root@centos7 ~]# getent gshadow testgroup
testgroup:$6$jLCPW/52OqN/LV$XSUnOXNHbAnCTo.q1yTYeC.qvQqoXYs5oGC7kURAOW1AY755dYJQBJpieAQSFiiaQkgm2Akrf7FqIMMkQYrrX/:haiyun:
范例2:以haiyun登陆系统,并且让他加入haiyun1,haiyun2成为testgroup成员
[root@centos7 ~]# id haiyun1 <==确认haiyun1存在且没有加入testgroup组
uid=1006(haiyun1) gid=1007(haiyun1) groups=1007(haiyun1)
[root@centos7 ~]# id haiyun2 <==确认haiyun2存在且没有加入testgroup组
uid=1007(haiyun2) gid=1008(haiyun2) groups=1008(haiyun2)
[root@centos7 ~]# su - haiyun <==切换到haiyun用户
Last login: Sun Aug 13 14:56:49 CST 2017 on pts/0
[haiyun@centos7 ~]$ gpasswd -a haiyun1 testgroup <==将用户haiyun1加入到testgroup组
Adding user haiyun1 to group testgroup
[haiyun@centos7 ~]$ gpasswd -a haiyun2 testgroup <==将用户haiyun2加入到testgroup组
Adding user haiyun2 to group testgroup
[root@centos7 ~]# getent group testgroup <==确认添加成功
testgroup:x:1006:haiyun1,haiyun2
newgrp命令:临时切换主组,如果用户本不属于此组,则需要组密码
范例1:临时切换到root组
[root@centos7 ~]# gpasswd root <==为root组设置密码
Changing the password for group root
New Password:
Re-enter new password:
[root@centos7 ~]# su - haiyun <==切换到haiyun
Last login: Sun Aug 13 16:00:31 CST 2017 on pts/0
[haiyun@centos7 ~]$ id <==未切换前的主组
uid=1004(haiyun) gid=1004(haiyun) groups=1004(haiyun) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[haiyun@centos7 ~]$ newgrp root <==临时切换主组
Password:
[haiyun@centos7 ~]$ id <==切换成功
uid=1004(haiyun) gid=0(root) groups=0(root),1004(haiyun) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
groupmems [options] [action]
options:
-g, --group groupname 更改为指定组 (只有root)
Actions:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表
范例1:查看testgroup组的成员
[root@centos7 ~]# groupmems -l -g testgroup
haiyun1 haiyun2
范例2:将haiyun3加入到testgroup组中
[root@centos7 ~]# groupmems -g testgroup -a haiyun3
[root@centos7 ~]# groupmems -g testgroup -l
haiyun1 haiyun2 haiyun3
范例3:将haiyun2从testgroup中移除
[root@centos7 ~]# groupmems -g testgroup -d haiyun2
[root@centos7 ~]# groupmems -g testgroup -l
haiyun1 haiyun3
范例4:清除testgroup组总的所有成员
[root@centos7 ~]# groupmems -g testgroup -p
[root@centos7 ~]# groupmems -g testgroup -l
[root@centos7 ~]#
groups [OPTION].[USERNAME]... 查看用户所属组列表
范例:查看用户haiyun1加入的组
[root@centos7 ~]# groups haiyun1
haiyun1 : haiyun1 testgroup
方法1:groupmems
[root@centos7 ~]# groupmems -g testgroup -a haiyun
方法2:usermod
[root@centos7 ~]# usermod -G testgroup haiyun2
方法3:
[root@centos7 ~]# gpasswd -a haiyun3 testgroup
Adding user haiyun3 to group testgroup
范例:将haiyun,haiyun1,haiyun2,haiyun3添加到testgroup组
[root@centos7 ~]# groupmems -g testgroup -l
[root@centos7 ~]# gpasswd -M haiyun,haiyun1,haiyun2,haiyun3 testgroup
[root@centos7 ~]# groupmems -g testgroup -l
haiyun haiyun1 haiyun2 haiyun3