1 前言
本文档主要介绍用户及组管理类相关命令如:useradd 、usermod、passwd、userdel、groupadd、groupmod\gpasswd、groupdel、hage,chsh,chfn,、id,w,who,whoami、wck,gourpck、su,并提供相应案例解释其含义。
学习这些基础命令是一个Linux爱好者需要具备的首要条件,让小编带领你们进入Linux的世界看看它的一颦一笑。
读者对象
本文档(本指南)主要适用于以下人员:
Linux爱好者
2 环境简介
项目 |
配置 |
硬件型号 |
Tinkpad T440P |
CPU |
I5-4210 |
内存 |
4G |
操作系统 |
Windows 8.1 |
虚拟系统 |
Vmware workstation 11 |
CPU |
1Core |
内存 |
1G |
操作系统 |
Centos 7.1 |
3 用户及组管理命令详解
3.1 用户管理命令
用户管理命令可以快速创建useradd 、usermod、passwd、userdel
useradd: 创建一个新用户或更新默认新用户信息
标准用法:
useradd [option] username
useradd –D [option]
useradd -D
选项详解 -r 创建系统用户 -u UID :指定UID -g GID :指定用户所属基本组,此组必须事先存在 -c ‘COMMENT’指定一段描述 -d /PATH/TO/SOMEWHERE:指定用户的主目录路径:此位置不能事先存在,否则,其用户相关配置文件将被复制:/etc/sk1 -s SHELL,设定用户的默认shell cat /etc/shells -G GID 指定所属的附加组,此组必须事先存在 -M 不为用户创建家目录 |
示例: 创建一个用户Oracle, ,ID号为3000.家目录为/home/database,并指定描述‘data admin’ [[email protected] ~]# useradd -u 3000 -d /home/database -c ‘sql admin‘ Oracle [[email protected] ~]# cat /etc/passwd //查看用户属性 Oracle:x:3000:3000:sql admin:/home/database:/bin/bash |
创建用户并分配组示例: [[email protected] ~]# useradd -g sq1 Oracle1 //创建用户Oracle1 分配到基本组sql1 useradd: group ‘sq1‘ does not exist [[email protected] ~]# useradd -G sq2 Oracle1 //创建用户Oracle1 分配附加组sql2 useradd: group ‘sq2‘ does not exist |
从上个案例不难看出创建用户并分配到相应组,此组必先事先存在如不存在将无法进行用户创建工作(关于组的创建详见本文3.)
上面的示例可以让我们了解到,系统其实已经规范好了一些新增用户时的参数了,像我没有指定用户的家目录,也没有指定用户的 UID 和 GID 可是系统会帮我们为用户加上,同时其默认shell被设置成了 /bin/bash ,也让我知道了,使用 useradd 命令一定要有 root 权限。那么, useradd 去新增用户时,其默认值是多少呢?
使用上面所说的 useradd 的 -D 参数可以显示和修改默认值,各位可以看出,其值完全与 /etc/default/useradd 这个文件里面的内容相同。原来在 linux 中使用 useradd 去新增用户时,一些在 /etc/passwd 中的值是会去参考 /etc/default/useradd 这个文件的。其文件内容基本如下:
[[email protected] ~]# cat /etc/default/useradd //查看useradd文件 # useradd defaults file GROUP=100 //基本组ID HOME=/home //家目录路径 INACTIVE=-1 //密码过期的宽限时间,对应 /etc/shadow 的第七列 EXPIRE= //账号失效时间对应/etc/shadow第八列 SHELL=/bin/bash //默认使用的shell SKEL=/etc/skel //用户家目录里面的内容参照文件 CREATE_MAIL_SPOOL=yes //建立使用者的mailbox |
usermod :用户属性修改
-u UID 用户UID -g GID 修改用户所属的基本组 -G GID 修改用户所属的附加组 同时使用-a-追加附加组的选项 -s SHELL 设定用户的默认shell -c ‘COMMENT‘注释信息 -d HOME:修改用户的家目录为新的位置时,用户原来的文件时不会被移动到新家的 -m选项可实现同时将其文件新的家目录 -l LOGIN 修改用户名 -L lock user 锁定用户无法登录 -U unlock user 解锁 |
示例: 修改用户Oracle为Oracle1,ID号为4000.家目录为/home/database1,并指定描述‘SQL Admin1’ usermod -l Oracle1 Oracle -u 4000 -md /home/database1 -c ‘SQL Admin1‘ usermod:目录 /home/database1 不存在 //无需理会 [[email protected] ~]# cat /etc/passwd //查看用户属性 Oracle1:x:4000:3000:SQL Aadmin1:/home/database1:/bin/bash |
passwd :给用户添加密码
-n 最短使用期限 -x maxdays 默认999999天 存活时间 -w warndays 警告时间 -i inactivadays --stdin 从标准输出接收用户密码: |
示例: [[email protected] ~]# echo ‘123.com‘ | passwd --stdin Oracle1 更改用户 Oracle1 的密码 。 passwd:所有的身份验证令牌已经成功更新。 |
userdel
-r 删除用户家目录 -f 强制删除,包括正在登陆的用户也可删除,删除后SSH不会断开,当用户登出后将不能再登陆。 |
示例: [[email protected] ~]# userdel -r Oracle1 //删除Oracle1用户 userdel: Oracle1 邮件池 (/var/spool/mail/Oracle1) 未找到 |
id:查看用户相关的id信息
-u 仅显示 用户的UID -g GID 组ID -G groups 用户所属组 -n:name 用户登录名 [[email protected] ~]# id yuqian uid=1000(yuqian) gid=1000(yuqian) 组=1000(yuqian) |
su:switch user 切换用户或以其他用户的身份执行命令切换方式
su USERNAME :非完全切换 非登录切换 su - USERNAME 或 su -l USERNAME :完全切换 su - USERNAME -C ‘COMMAND‘ 仅以指定用户的身份执行指定的命令 |
示例 [[email protected] ~]# su - yuqian -c ls /home/yuqian //临时使用yuqian权限访问/home/yuqian 公共 模板 视频 图片 文档 下载 音乐 桌面 |
chsh命令更换登录系统时使用的shell。若不指定任何参数与用户名称,则chsh会以应答的方式进行设置。
-l 查看shell列表 -s 更改或指定用户shell路径 |
[[email protected] ~]# chsh –l 查看shell /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh [[email protected] ~]# chsh -s /bin/bash gentoo //更改gentoo用户shell路径//bin/bash Changing shell for gentoo. chsh: Shell not changed. |
chfn修改用户的注释信息
-f, --full-name full-name 用户全名 -o, --office office 办公室电话 -p, --office-phone office-phone 办公电话 -h, --home-phone home-phone 家庭电话 |
chage: 修改用户账户及密码的属性
-d LAST_DAY 修改用户最近一次修改密码的时间 -E 帐号到期的日期。过了这天,此帐号将不可用 -l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期 -m 码可更改的最小天数。为零时代表任何时候都可以更改密码。 -M 密码保持有效的最大天数 -W 用户密码到期前,提前收到警告信息的天数。 |
[[email protected] ~]# chage -l yuqian //查看用户yuqian 注释信息 最近一次密码修改时间 :8月 20, 2015 密码过期时间 :从不 密码失效时间 :从不 帐户过期时间 :从不 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :99999 在密码过期之前警告的天数 :7 修改用户注释信息:修改密码的日期2014/9/29 密码保存有效最大天数20,警告时间7天 密码更改最小天数9天 [[email protected] ~]# chage -d 2014-8-29 -M 20 -W 7 -m 9 yuqian [[email protected] ~]# chage -l yuqian 最近一次密码修改时间 :8月 29, 2014 密码过期时间 :9月 18, 2014 密码失效时间 :9月 21, 2014 帐户过期时间 :从不 两次改变密码之间相距的最小天数 :9 两次改变密码之间相距的最大天数 :20 在密码过期之前警告的天数 :7 |
3.2 组管理命令
groupadd 创建组
-g GID 指明组ID -r 创建系统组 |
[[email protected] ~]# groupadd test1 [[email protected] ~]# cat /etc/group test1:x:3003: |
groupmod: 组属性修改
-n 修改组名称 -g 修改GID |
示例: [[email protected] ~]# groupmod -n test2 test1 //修改test1 组名为test2 [[email protected] ~]# tail /etc/group test2:x:3003: |
gpasswd 修改用户组内成员、管理员等,不加任何选项时则为group设置密码
-a:添加用户到组; -d:从组删除用户; -A:指定管理员; -M:指定组成员和-A的用途差不多; -r:删除密码; -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。 |
示例: [[email protected] ~]# gpasswd yuqian //为yuqian组添加密码 正在修改 yuqian 组的密码 新密码: 请重新输入新密码: [[email protected] ~]# gpasswd -a yuqian test2 正在将用户“yuqian”加入到“test2”组中 [[email protected] ~]# id yuqian //查看用户yuqian id信息 uid=1000(yuqian) gid=1000(yuqian) 组=1000(yuqian),3003(test2) |
newgrp :切换基本组为指定组。例如用户需要运行一个程序,但是没有权限时,可临时切换进该程序的所有组,让用户临时拥有改组的权限,当用户临时加入该组后创建的文件的属组也会是这个组,提前是要先用gpasswd为用户组创建密码
示例 [[email protected] ~]# gpasswd yuqian //为yuqian组添加密码 正在修改 yuqian 组的密码 新密码: 请重新输入新密码: [[email protected] ~]# useradd testuser //添加用户testuser [[email protected] ~]# passwd testuser //为用户testuser 添加密码 更改用户 testuser 的密码 。 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 [[email protected] ~]# su -l testuser //切换用户testuser 上一次登录:六 8月 29 09:18:49 CST 2015pts/1 上 [[email protected] ~]$ id // 查看用户ID信息 uid=1003(testuser) gid=3002(testuser) 组=3002(testuser) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [[email protected] ~]$ newgrp yuqian //使用newgrp 临时切换到yuqian组 密码: [[email protected] ~]$ id //查看id ,gid已经变成yuqian uid=1003(testuser) gid=1000(yuqian) 组=3002(testuser),1000(yuqian) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 |
groupdel :删除指定组,如果组内拥有用户则需要删除用户方可删除组。