用户和组管理的相关命令:
useradd、usermod、passwd、userdel
groupadd、groupmod、gpasswd、groupdel
chage, chsh, chfn
id, w, who, whoami
su
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@Blackghost ~] useradd tank #添加用户 [root@Blackghost ~] useradd -r zhangy #添加系统用户 [root@Blackghost ~] useradd -d /home/zhangying zhangying #添加用户,并且指定,home目录 [root@Blackghost ~] useradd -g mytest -d /home/hao hao #添加用户,指定组,并且设定home目录(此home目录不能事先存在) [root@Blackghost ~] useradd -e 04/05/13 fxxk #添加用户,并给用户设置有效期
练习:创建用户Oracle,所属附加组database和sql,ID号为400, 家目录为/home/database;
[root@Blackghost ~] useradd -u 400 -G database,sql -d /home/database oracle
groupadd [OPTIONS] GROUPNAME
-g GID: 指明组ID;
-r: 创建系统组;
示例:
添加一个用户组
[root@Blackghost ~] groupadd mytest添加一个用户组,并指定GID
[root@Blackghost ~] groupadd -g 444 test
id [OPTION]... [USER]
-u: UID
-g: GID
-G: Groups
-n: NAME
示例:
[root@localhost ~]# id #显示当前用户的信息 uid=0(root) gid=0(root) 组=0(root) [root@localhost ~]# id zhangy #显示zhangy的信息 uid=999(zhangy) gid=999(zhangy) 组=999(zhangy)
切换方式:
su USERNAME: 非完全切换;非登录式切换
su - USERNAME或su -l USERNAME: 完全切换;登录式切换
仅以指定用户的身份执行指定的命令:
su - USERNAME -c 'COMMAND'
示例:
[root@Blackghost ~] su zhangying #切换用户,原用户环境变量 [root@Blackghost ~] su - zhangying #切换用户,新用户环境变量 [zhangying@Blackghost ~] su -c ls root #切换用户执行命令,执行后返回原用户
usermod [OPTION]... LOGIN
-u UID
-g GID
-G GID[,GID,...]:修改用户所属的附加组;同时使用-a选项为追加附加组;
-s SHELL
-c 'COMMENT'
-d HOME: 修改用户的家目录为新位置时,用户原来的文件是不会被移动至新家;-m选项可实现同时将其迁至新的家目录;
-l LOGIN:
-L:lock user
-U: unlock user
示例:
[root@Blackghost ~] usermod -d /home/bak/ zhangying #更改用户home目录 [root@Blackghost ~] usermod -e 05/06/13 zhangying #给用户加个有效期
1、将 newuser2 添加到组 staff 中# usermod -G staff newuser22、修改 newuser 的用户名为 newuser1# usermod -l newuser1 newuser3、锁定账号 newuser1# usermod -L newuser14、解除对 newuser1 的锁定# usermod -U newuser1
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@Blackghost ~] passwd zhangying #给zhangying修改密码
userdel [-r] USERNAME
-r:删除用户的同时删除其家目录;
groupmod: 组属性修改
groupmod [OPTION] GROUPNAME
-n GROUP_NAME
-g GID
示例:
[root@Blackghost ~] userdel fxxk #删除用户 [root@Blackghost ~] userdel -r hao #删除用户,并且删除用户home目录
用法:gpasswd[-a user][-d user][-A user,...][-M user,...][-r][-R]groupname
参数:
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
gpasswd groupname:如系统有个peter账户,该账户本身不是groupname群组的成员,使用newgrp需要输入密码即可
示例:
[root@localhost ~]# gpasswd -A peter test2 #将peter设为test2组管理员 [root@localhost ~]# gpasswd -a peter test2 #将用户peter加入到test2组 [root@localhost ~]# gpasswd -d peter test2 #将用户peter从test2组中移出
示例:
[zhangy@localhost ~]# newgrp www #登录到www群组
说明:newgrp指令类似login指令,当它是以相同的帐号,另一个群组名称,再次登入系统。欲使用newgrp指令切换群组,您必须是该群组的用户,否则将无法登入指定的群组。单一用户要同时隶属多个群组,需利用交替用户的设置。若不指定群组名称,则newgrp指令会登入该用户名称的预设群组。
示例:
[root@Blackghost ~] groupdel test #删除组test
chage [OPTION]... LOGIN
参数意思:
-m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M 密码保持有效的最大天数。
-W 用户密码到期前,提前收到警告信息的天数。
-E 帐号到期的日期。过了这天,此帐号将不可用。
-d 上一次更改的日期
-I 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
示例:
1
[root@localhost ~]# chage -l zhangy #查看用户密码设定情况 最近一次密码修改时间 : 4月 27, 2013 密码过期时间 : 从不 密码失效时间 : 从不 帐户过期时间 : 从不 两次改变密码之间相距的最小天数 :-1 两次改变密码之间相距的最大天数 :-1 在密码过期之前警告的天数 :-1 [root@localhost ~]# chage -M 90 zhangy #密码有效期90天 [root@localhost ~]# chage -d 0 zhangy #强制用户登陆时修改口令 [root@localhost ~]# chage -d 0 -m 0 -M 90 -W 15 zhangy #强制用户下次登陆时修改密码,并且设置密码最低有效期0和最高有限期90,提前15天发警报提示
2
# chage -E '2014-09-30' test # test这个账号的有效期是2014-09-30
用法:who [选项]... [ 文件 | 参数1 参数2 ]
示例:
[root@localhost ~]# who #显示目前登入系统的用户信息 tank tty1 2013-05-10 08:29 tank pts/0 2013-05-10 08:29 (192.168.56.1) [root@localhost ~]# who -a #显示目前登入系统的用户详细信息 系统引导 2013-05-10 08:11 运行级别 2 2013-05-10 08:11 登录 tty4 2013-05-10 08:11 814 id=4 登录 tty5 2013-05-10 08:11 825 id=5 登录 tty2 2013-05-10 08:11 842 id=2 登录 tty3 2013-05-10 08:11 845 id=3 登录 tty6 2013-05-10 08:11 852 id=6 tank - tty1 2013-05-10 08:29 01:08 1395 tank + pts/0 2013-05-10 08:29 . 1493 (192.168.56.1) [root@localhost ~]# who -q #列出所有已登录用户的登录名与用户数量 tank tank # 用户数=2 [root@localhost ~]# who -u #列出已登录的用户 tank tty1 2013-05-10 08:29 01:08 1395 tank pts/0 2013-05-10 08:29 . 1493 (192.168.56.1) [root@localhost ~]# who -r #查看已登录的用户的级别 运行级别 2 2013-05-10 08:11 [root@localhost ~]# who -b #上次系统启动时间 系统引导 2013-05-10 08:11
语法:w [-fhlsuV][用户名称]
-f 开启或关闭显示用户从何处登入系统。
-h 不显示各栏位的标题信息列。
-l 使用详细格式列表,此为预设值。
-s 使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。
-u 忽略执行程序的名称,以及该程序耗费CPU时间的信息。
示例:
[root@localhost ~]# w #示目前登入系统的用户信息 09:30:39 up 1:19, 2 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT tank tty1 08:29 1:01m 1.04s 0.91s -bash tank pts/0 192.168.56.1 08:29 0.00s 1.70s 0.13s sshd: tank [priv]