首页 > 代码库 > 第6章 用户和用户组管理(2)_用户和用户组命令

第6章 用户和用户组管理(2)_用户和用户组命令

3. 用户管理命令

3.1.1 用户添加命令:useradd

(1)useradd命令useradd [选项] 用户名

选项

含义

-u UID

手工指定用户的UID

-d 家目录

手工指定用户的家目录

-c 用户说明

手工指定用户的说明

-g 组名

手工指定用户的初始组

-G 组名

手工指定用户的附加组

-s Shell

手工指定用户的登录Shell,默认是/bin/bash

(2)注意事项

  ①如果只是执行useradd,而没有设置密码。则信息不完整,不能登录

  ②useradd user1一个用户后,会同时修改etc/passwd、/etc/shadow、/etc/group、/etc/gshadow等文件,同时创建/home/user1家目录和/var/spool/mail/lamp邮件文件。

(3)用户默认值文件/etc/default/useradd

  默认值

含义

GROUP=100

#用户默认组

HOME=/home

#用户家目录

INACTIVE=-1

#密码过期宽限天数(shadow文件第7字段)

EXPIRE=

#密码失效时间(第8字段)

SHELL=/bin/bash

#默认shell

SKEL=/etc/skel

#模板目录

CREATE_MAIL_SPOOL=yes

#是否建立邮箱

(4)默认的用户账号限制文件/etc/login.defs

  默认值

含义

PASS_MAX_DAYS 99999

#密码有效期(shadow文件的第5字段)

PASS_MIN_DAYS 0

#密码修改间隔(shadow文件的第4字段)

PASS_MIN_LEN  5

#密码最小5位(PAM)

PASS_WARN_AGE 7

#密码到期警告(shadow文件的第6字段)

UID_MIN       500

#最小UID

UID_MAX       60000

#最大UID

ENCRYPT_METHOD SHA512

#加密模式

(5)应用举例

#useradd -u 550 -G root,bin -d /home/user2 -c "test User2" -s /bin/bash user2

3.1.2 修改用户密码:passwd

(1)passwd命令格式: passwd [选项] 用户名

选项

含义

-S

查询用户密码的密码状态。仅root用户可用。

-l

暂时锁定用户。仅root用户可用

-u

解锁用户。仅root用户可用

--stdin

可以通过管道符输出的数据作为用户的密码

(2)应用举例

  ①查看密码状态:#passwd –S testUser

  ②锁定用户和解锁用户:#passwd –l testUser //则testUser不能登录。-u为解锁。本质上是在/etc/shadow文件中用户对应的密码前加“!!”

  ③使用字符串作为用户的密码#echo "123" | passwd –stdin testUser //将echo输出的内容(“123”)作为testUser的密码,即将testUser的密码改为123。这种做法主要是在Shell脚本中批量输入密码时经常用到。

3.1.3 修改用户信息(usermod)和修改用户密码状态(chage)

(1)usermod命令:

  ①usermod [选项] 用户名

选项

含义

-u UID

修改指定用户的UID

-c 用户说明

修改指定用户的说明

-G 组名

手工指定用户的附加组

-L

临时锁定用户(Lock)

-U

解锁用户锁定(Unlock)

  ②应用举例:#usermod –c "test User" –G root –u 550 testUser

(2)修改密码状态(chage)

  ①chage [选项] 用户名

选项

含义

-l

列出用户的详细密码状态

-d 日期

修改密码最后一次更改日期(shadow的第3字段)

-m 天数

两次密码修改间隔(第4字段)

-M 天数

密码有效期(第5字段)

-W 天数

密码过期前警告天数(第6字段)

-I 天数

密码过期后宽限天数(第7字段)

-E 日期

账号失效时间(第8字段)

  ②应用举例:

    #chage –d 0 testUser //将密码修改日期归0,这样用户一登陆就要修改密码。如批量为用户设置的初始密码可能不完全,如果将这个归0,这样就会要求用户一登录就要修改。

3.1.4 删除用户(userdel)和用户切换命令(su)

(1)删除用户 userdel

  ①userdel格式: #userdel [-r] 用户名 (其中-r表示删除用户的同时,删除家目录)

  ②说明:userdel与useradd一样,都是同时操作那5个文件(etc/passwd、/etc/shadow、/etc/group、/etc/gshadow等文件以及/home/user1和/var/spool/mail/lamp目录)

(2)查看用户ID:#id 用户名

(3)切换用户:su

  ①su格式: #su [选项] 用户名

选项

含义

-

选项只使用“-”代表连带用户的环境变量一起切换

-c 命令

仅执行一次命令,而不切换用户身份

  ②注意事项:

    A.#su root,只是切换用户的身份,但环境变量仍为切换之前的用户的环境变量(可用#env查询)。因此可以加“-”,即#su – root连同环境变量一起切换

    B.从root用户切换到普通用户不需要输入密码,反之需要输入密码。

  ③应用举例:

    $su –root –c  "useradd user2" //不切换成root用户,但是执行useradd命令

4. 用户组管理命令

4.1 添加用户组

1)groupadd 命令#groupadd [选项] 组名

可加“-g 组ID”选项来指定组ID

(2)应用举例:#groupadd testGroup //添加testGroup用户组,可cat /etc/group查看

4.2 修改用户组

(1)格式:#groupmod [选项] 组名

选项

含义

-g GID

修改组ID

-n 新组名

修改组名

(2)应用举例:#groupmod –n testGrp testGroup //将原testGroup组名改为testGrp

4.3 删除用户组

(1)groupdel命令:#groupdel 组名

(2)注意事项

  ①如果要删除的组中存在有用户的话,一定要确保这个组没有被任何用户作为初始组。因为用户必须存在一个初始组,否则用户无法单独存在

  ②如果要删除的组只是被其它用户的作为附加组,则该组可以直接删除

(3)应用实例分析

#groupadd tg           //增加tg组
#useradd -g tg test1   //添加test1用户将加入tg组,即test1用户的初始组为tg
                       //注意,此时并不生成test1组,因为test1己经有初始组tg了
#useradd -G tg test2   //添加test2用户并将tg作为其附加组(但会同时为test2创建初始组test2)

#groupdel tg //会产生失败,因为tg是test1的初始组,如果删除初始组,则test1用 //户将没有初始化,linux系统不允许一个用户没有初始组。所以如果 //删除这个组,必须先删除所有以这个组为初始组的用户(但不要求删除 //以这个组为附加组的用户),最后再删除该组。 #groupdel test2 //也会失败。同理,要先删除test2用户,最后才能删除该组。

4.4 把用户添加到组或从组中删除

(1)gpasswd [选项] 组名

选项

含义

-a 用户名

把用户加入组

-d 用户名

把用户从组中删除

(2)注意事项

  命令中,用户名写在前面,最后是组名。因为gpasswd操作的对象是组,所以组放最后。useradd操作的对象是用户,所以useradd放在命令的最后面。

(3)应用举例:

  ①#gpasswd –a user1 root //将user1加入root组,可以cat /ect/group查看root组中都有哪些用户。

第6章 用户和用户组管理(2)_用户和用户组命令