用户和用户组的管理命令

用到的命令主要有:

组命令groupaddgroupdelgroupmodgpasswdgroupmems、 newgrp

用户命令useradduserdelusermodpasswd

其他相关命令

  • getentgetent passwd USERNAMEgetent shadow GROUPNAME
  • chage
  • chsh
  • id
  • su

用户组命令:

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

我们可以看到有个SKELskel里存放的是环境变量文件,当创建新用户时候,会复制一份到用户家目录里面。

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]:显示用户的uidgidUSERNAME省略的话表示只显示当前用户的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.
原文地址:https://www.cnblogs.com/momenglin/p/8532504.html