
用到的命令主要有:
组命令:groupadd、groupdel、groupmod、gpasswd、groupmems、 newgrp
用户命令:useradd、userdel、usermod、passwd
其他相关命令:
getent:getent passwd USERNAME、getent shadow GROUPNAMEchagechshidsu
用户组命令:
groupadd
groupadd GROUP_NAME:创建新组
可选参数:
-g GID:手动指定GID,默认是上一个组的GID+1-r:创建系统组
groupmod
groupmod GROUP_NAME 修改组信息
-g GID:修改GID-n NEW_NAME OLD_NAME:修改组名
groupdel
groupdel GROUP_NAME:删除组
例子:
|
1
2
3
4
5
6
7
8
|
groupadd grp
groupadd -g 2000 grp1
groupadd -r sysgrp
groupadd -r -g 306 sysgrp1
groupmod -g 702 sysgrp1
groupmod -n newsysgrp1 sysgrp1
groupdel grp
|
gpasswd
gpasswd GROUP_NAME:给组加密码,一般默认不加,不加的话,用户就不能用newgrp切换属组(组密码那里是两!!,表示无密码,无密码的组,用户也不能临时切换到这个组。)
groupmems
|
1
2
3
4
5
6
7
8
9
10
|
用法:groupmems [选项] [动作]
选项:
-g, --group groupname 更改组 groupname,而不是用户的组(只 root)
动作:
-a, --add username 将用户 username 添加到组成员中
-d, --delete username 从组的成员中删除用户 username
-p, --purge 从组中移除所有成员
-l, --list 列出组中的所有成员
|
比如下面,就是列出admins组里的所有成员,然后删除其中的一个成员natasha:
|
1
2
3
4
|
[root❄centos7 skel]☭ groupmems -g admins -l
natasha harry
[root❄centos7 skel]☭ groupmems -g admins -l
harry
|
newgrp
newgrp GROUPNAME
临时切换主组,如果切换不属于的组,要输入组密码。如果不属于的组而且没有设置组密码,则无法切换。
用户命令
useradd
useradd :创建新用户或者更新默认新用户信息
-u:指定UID-g:指定基本组GID,组名必须存在才行,不能用来新建GID。-G GROUP1[,GROUP2,...[GROUPN]]:指定GID,指明用户的附加组,多个组之间用逗号分隔。-c COMMENT:注释信息-d HOME_DIR:指定家目录(本质是通过复制/etc/skel目录并重命名实现的),如果目录路径本身就存在,则不会为用户复制/etc/skel下的内容。-s SHELL: 指定用户的默认shell,可用于所有shell列表存在的shell(shell列表:/etc/shells)-r:创建系统用户-D:修改创建用户时候的默认选项(man useradd可以看一下详情,,其实更改的就是/etc/default/useradd)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
useradd docker
useradd -u 3000 openstack
useradd -u 3001 -g 3001 openshift
useradd -g cloudgroup cloudstack
useradd -G grp,grp1 archlinux
useradd -c "Hacker Linux" kalilinux
useradd -d /opt/sybase sybase
mkdir /tmp/test1
useradd -d /tmp/test1 test1
useradd -s /bin/csh test2
useradd -s /sbin/nologin test3
|
tips:要查看useradd的默认规则,可以查看
/etc/default/useradd文件。
|
1
2
3
4
5
6
7
8
9
|
[root❄centos7 default]☭ cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
|
我们可以看到有个
SKEL,skel里存放的是环境变量文件,当创建新用户时候,会复制一份到用户家目录里面。
|
1
2
3
|
[root❄centos7 default]☭ cd /etc/skel/
[root❄centos7 skel]☭ ls -a
. .. .bash_logout .bash_profile .bashrc .mozilla
|
usermod
usermod:修改用户属性
-u UID:修改用户的UID-g:修改用户所属的基本组-G :修改用户的附加组,原来的附加组会被覆盖掉-a:append,和-G结合使用,表示新添加的组,兵不会覆盖掉原来的组-c COMMENT:修改注释信息-d:修改用户的家目录,用户原有的文件不会被转移到新位置。-m:move-home,更改用户主目录,和-d配合使用,会移动原来家目录的文件。-l:修改用户名
-s SHELL: 修改用户的默认shell,可用于所有shell列表存在的shell(shell列表:/etc/shells)-L:Lock,锁定用户密码(在原来的密码字符串之前加一个!)-U:unlock,解锁用户的密码(删掉!)
userdel
userdel:删除用户-r:删除用户并删除其家目录和mail spool
passwd
passwd修改用户自己的密码passwd USERNAME修改其他用户的密码(root有此权限)
-- stdin参数echo ‘test2' | passwd --stdin test2
记住echo后面的字符串要用弱引用,强引用的话如果密码串里有特殊字符,就会不是原始密码了。
其他相关命令
chage
chage:change age 更改用户密码过期时间
chage USERNAME:不跟参数,会进入一个交互式的模式来修改各个时间,如下面:设置最短修改密码时间为0;最长密码时间为92天过期,上次更改密码时间保持默认那天(20170526),快过期的开始警告设置的在快过期前7天开始,密码过期后,7天内要修改密码,否则变为不活动(Inactive,即锁住),最后一条是设置账号过期时间,设置为默认不过期(-1)。
|
1
2
3
4
5
6
7
8
9
10
|
[root❄centos7 skel]☭ chage gentoo
Changing the aging information for gentoo
Enter the new value, or press ENTER for the default
Minimum Password Age [0]: 0
Maximum Password Age [99999]: 92
Last Password Change (YYYY-MM-DD) [2017-05-26]:
Password Expiration Warning [7]: 7
Password Inactive [-1]: 7
Account Expiration Date (YYYY-MM-DD) [-1]:
|
带参数,下面是参数设置,和上面类似,就是把交互式变成了参数选项:
chage [option] USERNAME
-d LAST_DAY -d 0:第一次登陆,强制让你该口令。
-E –expiredate EXPIRE_DATE
-I –inactive INACTIVE
-m –mindays MIN_DAYS
-M –maxdays MAX_DAYS
-W –warndays WARN_DAYS
–l 显示密码策略
示例:
|
1
2
3
4
5
|
chage -d 0 tom #下一次登录强制重设密码
chage -m 0 –M 42 –W 14 –I 7 tom
chage -E 2016-09-10 tom
|
id
id [USERNAME]:显示用户的uid和gid,USERNAME省略的话表示只显示当前用户的id信息。
-u显示用户id-g显示基本组id-G显示所有组id-n显示名字而不是id
su
su命令:switch user,切换用户
- 登录式切换:会通过读取目标用户的配置文件来重新初始化
su - USERNAME
*su -l USERNAMEl就表示login
- 非登陆式切换:不会读取目标用户的配置文件来进行初始化
su USERNAME
Note:管理员可无密码切换到其他任意用户。
参数:-c 'COMMAND':仅以目标用户登录,后执行后面的命令,然后就退出
示例:su -test -c 'whoami'
getent
get entries from Name Service Switch libraries
从命名服务切换库获得条目
getent passwd [USERNAME]:不输入USERNAME默认是全部用户,如果输入了,就是指定的那个
|
1
2
|
[root❄centos7 skel]☭ getent passwd gentoo
gentoo:x:1001:1001:Gentoo Distribution:/home/gentoo:/bin/csh
|
getent shadow [GROUPNAME]:不输入GROUPNAME默认是全部用户组信息,如果输入了,就是指定的那个
|
1
2
|
[root❄centos7 skel]☭ getent shadow gentoo
gentoo:!!:17312:0:92:7:7::
|
finger
查看用户信息
|
1
2
3
4
5
6
7
8
9
10
|
[root❄ centos7 ~]☭ finger root
Login: root Name: root
Directory: /root Shell: /bin/bash
On since Sun May 28 16:17 (CST) on pts/0 from 172.17.251.64
4 seconds idle
On since Wed May 24 20:40 (CST) on :0 from :0 (messages off)
On since Wed May 24 20:40 (CST) on pts/2 from :0
3 days 19 hours idle
No mail.
No Plan.
|