用户和组管理的相关命令:
useradd、usermod、passwd、userdel
groupadd、groupmod、gpasswd、groupdel
chage, chsh, chfn
id, w, who, whoami su
useradd:创建用户
useradd [options] LOGIN
useradd -D [options]
-r: 创建系统用户
-u UID: 指定UID;
-g GID: 指定用户所属基本组,此组必须事先存在
-c 'COMMENT':
-d /PATH/TO/SOMEWHERE:指定用户的主目录路径;此位置不能事先存在,否则,其用户相关配置文件将被复制;/etc/skel
-s SHELL:设定用户的默认shell;
cat /etc/shells
-G GID,...:指定所属的附加组;
-M: 不给用户创建家目录;
示例:
[root@Localhost~] useradd test #添加用户
[root@Localhost~] useradd -r liaodijin #添加系统用户
[root@Localhost~] useradd -d /home/liaodijin liaodijin #添加用户,并且指定,home目录
[root@Localhost~] useradd -g mytest -d /home/hell hell #添加用户,指定组,并且设定home目录(此home目录不能事先存在)
练习:创建用户Centos,所属附加组user和test,ID号为300, 家目录为/home/test;
[root@Localhost~] useradd -u 300 -G uesr,test -d/home/test Centos
groupadd:创建组
groupadd [OPTIONS] GROUPNAME
-g GID: 指明组ID;
-r: 创建系统组;
示例:
添加一个用户组
[root@Localhost~] groupadd mage
添加一个用户组,并指定GID
[root@Localhost~] groupadd -g 400 mage
id:查看用户相关的id信息
id [OPTION]... [USER]
-u: UID
-g: GID
-G: Groups
-n: NAME
示例:
[root@localhost~]# id #显示当前用户的信息
[root@localhost~]# id
uid=0(root)gid=0(root) groups=0(root)context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@localhost~]# id Centos #显示Centos的信息
uid=1002(Centos)gid=1002(Centos) groups=1002(Centos)
su:switchuser, 切换用户或以其它用户的身份执行命令
切换方式:
su USERNAME: 非完全切换;非登录式切换
su - USERNAME或su -lUSERNAME: 完全切换;登录式切换
仅以指定用户的身份执行指定的命令:
su - USERNAME -c 'COMMAND'
示例:
[root@Localhost~] su Centos #切换用户,原用户环境变量
[root@Localhost~] su - Centos #切换用户,新用户环境变量
[Centos@Localhost~] su -c ls root #切换用户执行命令,执行后返回原用户
usermod:用户属性修改
usermod [OPTION]... LOGIN
-u UID
-g GID
-G GID[,GID,...]:修改用户所属的附加组;同时使用-a选项为追加附加组;
-s SHELL
-c 'COMMENT'
-d HOME: 修改用户的家目录为新位置时,用户原来的文件是不会被移动至新家;-m选项可实现同时将其迁至新的家目录;
-l LOGIN:
-L:lockuser
-U: unlock user
示例:
[root@Localhost~] usermod -d /home/hell/ Centos #更改用户home目录
[root@Localhost~] usermod -e 03/06/16 Centos #给用户加个有效期
1、将 user2添加到组 staff 中
#usermod -G staff user2
2、修改 user的用户名为 user1
#usermod -l user1 user
3、锁定账号 user1
#usermod -L user1
4、解除对 user1的锁定
#usermod -U user1
passwd:给用户添加密码
passwd [OPTION] [UserName]
-l: lock user
-u: unlock user
-n mindays: 最短使用期限;
-x maxdays:默认为99999天;
-w warndays:
-i inactivedays:
--stdin:从标准输出接收用户密码;
echo 'centos' | passwd--stdin centos
示例:
[root@Localhost~] passwd Centos #给Centos修改密码
userdel:删除用户
userdel [-r] USERNAME
-r:删除用户的同时删除其家目录;
groupmod: 组属性修改
groupmod [OPTION] GROUPNAME
-n GROUP_NAME
-g GID
示例:
[root@Localhost~] userdel hao #删除用户
[root@Localhost~] userdel -r hao #删除用户,并且删除用户home目录
gpasswd:设定组密码
用法:gpasswd[-a user][-d user][-A user,...][-M user,...][-r][-R]groupname
参数:
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
gpasswdgroupname:如系统有个peter账户,该账户本身不是groupname群组的成员,使用newgrp需要输入密码即可
示例:
[root@localhost~]# gpasswd -A peter test1 #将peter设为test1组管理员
[root@localhost~]# gpasswd -a Centos test1 #将用户Centos加入到test1组
[root@localhost~]# gpasswd -d Centos test1 #将用户Centos从test1组中移出
newgrp:切换基本组为指定的组
示例:
[Centos@localhost ~]# newgrp Us #登录到Us群组
说明:newgrp指令类似login指令,当它是以相同的帐号,另一个群组名称,再次登入系统。欲使用newgrp指令切换群组,您必须是该群组的用户,否则将无法登入指定的群组。单一用户要同时隶属多个群组,需利用交替用户的设置。若不指定群组名称,则newgrp指令会登入该用户名称的预设群组。
groupdel:删除组
示例:
[root@Localhost~] groupdel test #删除组test
chage:修改用户账号及密码的属性
chage [OPTION]... LOGIN
参数意思:
-m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M 密码保持有效的最大天数。
-W 用户密码到期前,提前收到警告信息的天数。
-E 帐号到期的日期。过了这天,此帐号将不可用。
-d 上一次更改的日期
-I 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
示例:
1
[root@localhost~]# chage -l Centos #查看用户密码设定情况
最近一次密码修改时间 : 8月 27, 2015
密码过期时间 : 从不
密码失效时间 : 从不
帐户过期时间 : 从不
两次改变密码之间相距的最小天数 :-1
两次改变密码之间相距的最大天数 :-1
在密码过期之前警告的天数 :-1
[root@localhost~]# chage -M 60 Centos #密码有效期60天
[root@localhost~]# chage -d 0 Centos #强制用户登陆时修改口令
[root@localhost~]# chage -d 0 -m 0 -M 90 -W 15 Centos #强制用户下次登陆时修改密码,并且设置密码最低有效期0和最高有限期90,提前15天发警报提示
2
#chage -E '2016-08-27' test # test这个账号的有效期是2016-08-27
image
其它命令:
chfn:改 变 你 的 finger 讯 息
chsh:用于 改变 用户的 登录 shell. 如果 没有在 命令行上 指定 shell, chsh 能够做出 提示.
finger:用户信息查找
whoami:打印与当前生效的用户 ID 关联的用户名。与 id -un 相同。
who:显示当前已登录的用户信息
用法:who [选项]... [ 文件 | 参数1 参数2 ]
示例:
[root@localhost~]# who #显示目前登入系统的用户信息
(unknown) :0 2015-08-25 20:05 (:0)
root pts/0 2015-08-25 20:13 (192.168.0.179)
[root@localhost~]# who -a #显示目前登入系统的用户详细信息
system boot 2015-08-25 20:05
run-level 5 2015-08-25 20:05
(unknown)? :0 2015-08-25 20:05 ? 2707 (:0)
root + pts/0 2015-08-25 20:13 . 3038 (192.168.0.179)
[root@localhost~]# who -q #列出所有已登录用户的登录名与用户数量
(unknown)root
#users=2
[root@localhost~]# who -u #列出已登录的用户
(unknown):0 2015-08-25 20:05 ? 2707 (:0)
root pts/0 2015-08-25 20:13 . 3038 (192.168.0.179)
[root@localhost~]# who -r #查看已登录的用户的级别
run-level 5 2015-08-25 20:05
[root@localhost~]# who -b #上次系统启动时间
system boot 2015-08-25 20:05
w:显示目前登入系统的用户信息。
语法:w [-fhlsuV][用户名称]
-f 开启或关闭显示用户从何处登入系统。
-h 不显示各栏位的标题信息列。
-l 使用详细格式列表,此为预设值。
-s 使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。
16:13:36up 1 day, 20:08, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM IDLE WHAT
root pts/0 192.168.0.179 0.00s w -s
-u 忽略执行程序的名称,以及该程序耗费CPU时间的信息。
16:13:09 up 1 day, 20:08, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
(unknown:0 :0 Tue20 ?xdm? 21:02 0.44s gdm-session-worker[pam/gdm-launch-environment]
root pts/0 192.168.0.179 Tue20 5.00s 0.30s 0.00s w -u
示例:
[root@localhost~]# w #示当前登入系统的用户信息
16:10:45up 1 day, 20:05, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.0.179 Tue20 5.00s 0.32s 0.03s w