Linux用户,组管理命令整理及实例详解

用户,组

相关文件:
/etc/passwd 用户相关信息
/etc/login.defs 设置用户创建时默认相关信息
/etc/defualt/useradd 用户添加时会创建的相关信息设置
/etc/skel 用户家目录下相关隐藏文件
/etc/group 组相关信息
/etc/gshadow 组密码
/etc/shadow 用户密码
/var/spool/mail 用户邮箱记录

添加用户就是在/etc/passwd、/etc/shadow、/etc/group中添加用户相关信息
默认属性来源:
/etc/default/useradd
/etc/skel
/etc/default/useradd**

用户类别

    管理员		    0    root
    普通用户		1-65535,2^16个
    管理用户     1-200    系统中的管理用户
    系统用户	    201-999,专门用来运行后台进程和服务的用户,不允许登陆系统(服务用户)
   	普通用户     1000-60000,后面的很少使用    

用户组类别

按照用户类别的分法 
		管理员组    root
		普通组      
	    常用分法
		(主)基本组,用户的默认组      
		附加组	额外组,默认组以外的其他组     

文件中各个字段的含义
/etc/shadow

redhat:$6$e4FZXLbs$hgRQKtk00memafY5XWbVqGFcvEcgwFmNuKat90h9QmcBTnqeBnQR/Kg10JvmWvRXsfVzAR6HwpZjj1GXBWhYv.:17801:0:99999:7:::
用户名:加密后的密码: 最后一次修改时间:密码最短使用期限:密码最长使用期限:密码过期警告时间:密码过期宽限时限:账号过期精确时间:保留字段              
最后一次修改时间:距离1970年1月1日的天数
密码最短使用期限:为0 表示不限制
密码最长使用期限:密码使用多久之后必须更改,99999表示可以不更改
密码过期警告时间:密码过期前多少天进行警告,提醒用户更改密码但不锁定用户
密码过期宽限时限:密码过期后还可以更改密码的时间,若没改则锁定用户
账号过期精确时间:若为99999则永不过期

etc/passwd

redhat:x:1088:1000:redhat:/home/redhat:/bin/bash
#用户名:密码的占位符:UID:GID:描述字段(注释):用户家目录:shell字段设置account		用户名
	password	密码,x为密码占位符,目标为/etc/shadow第二个字段
	UID			用户ID
	GID			基本组ID,额外组信息在/etc/group文件中
	CECOS		用户基本信息
	HOME DIR	用户家目录,系统用户不允许登陆
	shell		用户的默认shell,/etc/shells保存了所有的合法shell

命令解析

用户管理

useradd  
    useradd USERNAME/adduser
    -l
	-u UID	指定UID
	-g GID	指定基本组
	-G GID1,GID2,...	指定附加组
	-c	“注释信息”		指定用户注释信息      chfn 
	-d	/path/to/dir	指定某个目录为用户家目录
	-s	/shell			指定用户使用的shell    

usermod	修改用户相关信息,选项同useradd 
	-u	修改UID
	-g	修改基本组,基本组必须事先存在
	-G	这个选项会覆盖之前的附加组,和-a选项配合使用
		usermod -a -G 追加附加组
	-c	修改用户注释信息
	-s	修改用户shell
	-l	修改登陆名
userdel
	userdel USERNAME
	-r	删除用户时删除用户家目录和用户的邮箱
	
id		查看用户的ID信息,选项同useradd
	-u	显示UID
	-G	显示附加GID
	-g	显示GID	
passwd	修改用户密码
		--stdin
			echo "redhat" | passwd --stdin USERNAME
		-l	锁定用户账号密码
		-u	解锁用户账号 
		-n	指定密码最短使用期限
		-x	指定密码最长使用期限
		-w	指定警告时间
		-i	指定宽限动时间
		-d	删除用户密码,在redhat中,空密码用户禁止登陆
chage	change age
	    -d	指定最后一次修改密码日期
	    -E	过期日期
	    -I	宽限时间
	    -m	最短使用期限
	    -M	最长使用期限
	    -w	警告时间	

组管理

groupadd	添加一个组
        -n
		-g	GID
		-r	添加系统组
groupdel	删除一个组   (不能删除基本组)
groupmod	修改一个组
		-g	GID	
		-n	GRPNAME	修改组名
gpasswd  +用户名设置组密码
     -a 添加用户到组
	 -d 将指定用户移出本组
	 -M 设置组成员列表    
	 -A 指定管理员(组长)    
     -r 删除组密码
	 -R 限制用户登录组,只有组中成员才能加入该组
newgrp	登陆一个新组
使用exit退出新组	

实例详解

一、
创建学习组1,学习组2 ;他们的组gid分别为1111,2222,添加成员并将uid为1088,和uid为1066的成员为两组的组长,其中一组组长有一个‘外号’laoda。
不同学习组进入需要密码才能进入(设置密码);
作为学习组长可以将指定成员拉进本组,和移出本组其他成员没有权利干涉。
(只能一个一个拉和删);即使密码泄露也不希望组之外的成员进入。

创建组1和2,并搞出来两个指定用户
  groupadd learn1 -g 1111
  groupadd learn2 -g 2222
  usermod -u 1088  -a -G 1111 redhat 
  usermod -u 1066  -a -G 2222 xiaoming 
将指定用户设置为组长
  gpasswd -A redhat learn1
  gpasswd -A xiaoming learn2
给一个组长起外号(改注释)
[root@arya test]# usermod -c "老大" xiaoming 
给学习组设置密码
[root@arya test]# gpasswd learn2
Changing the password for group learn2
New Password: 
Re-enter new password: 
限制用户登录组,只有组中用户可以登录该组(密码泄露其他人也无法登陆)
[root@arya test]# gpasswd -R learn1
[root@arya test]# gpasswd -R learn2

二、
创建用户和用户组
请按照以下要求创建用户、用户组:
1.新建一个名为adminuser的组,组id为40000

[root@arya ~]# groupadd -g 40000 adminuser

2.新建一个名为natasha的用户,并将adminuser作为其附属组

[root@arya ~]# useradd natasha -G adminuser

[root@arya ~]# cat /etc/group | grep 40000
adminuser:x:40000:natasha
[root@arya ~]# cat /etc/passwd | grep natasha
natasha:x:1001:1001::/home/natasha:/bin/bash
[root@arya ~]# cat /etc/shadow | grep natasha
natasha:!!:17802:0:99999:7:::
[root@arya ~]# id natasha
uid=1001(natasha) gid=1001(natasha) groups=1001(natasha),40000(adminuser)

3.新建一个名为harry的用户,并将adminuser作为其基本组

[root@arya ~]# useradd -g adminuser harry

[root@arya ~]# id harry
uid=1003(harry) gid=40000(adminuser) groups=40000(adminuser)

4.新建一个名为sarah的用户,其不属于adminuser组,并将其shell设置为
不可登陆shell

[root@arya ~]# useradd sarah -s /sbin/nologin

[root@arya ~]# id sarah
uid=1002(sarah) gid=1002(sarah) groups=1002(sarah)

5.添加用户maomao,修改它的家目录为/maomao,要求切换maomao时命令提示
显示正常。

[root@arya ~]# useradd maomao -d /maomao

[root@arya ~]# su - maomao
[maomao@arya ~]$ id maomao
uid=1004(maomao) gid=1004(maomao) groups=1004(maomao)
[maomao@arya ~]$ su - root
Password: 
Last login: Fri Sep 28 12:20:05 CST 2018 from 192.168.75.1 on pts/1
[root@arya ~]# cat /etc/passwd | grep maomao
maomao:x:1004:1004::/maomao:/bin/bash

6.创建std1 ,std2两个组,要求std1组中有三个用户,{1 2 3}
std2有四个用户。{a b c d}
(此处可以批量创建用户,编写一个shell脚本来实现)

先创建两个组
[root@arya test]# groupadd std1 -g 2000
[root@arya test]# groupadd std2 -g 2002

[root@arya test]# cat /etc/group | grep 2000
std1:x:2000:
[root@arya test]# cat /etc/group | grep 2002
std2:x:2002:
编写脚本:在根下创建的test目录中创建这样几个文件
-rw-r--r--. 1 root root   8 Sep 28 12:58 user1.txt
-rw-r--r--. 1 root root 304 Sep 28 12:58 useradd.sh
-rw-r--r--. 1 root root   7 Sep 28 12:47 user.txt
脚本
[root@arya test]# vim useradd.sh

Linux用户,组管理命令整理及实例详解_第1张图片

[root@arya test]# vim useradd.sh

[root@arya test]# cat /etc/passwd
1:x:1005:2000::/home/1:/bin/bash
2:x:1006:2000::/home/2:/bin/bash
3:x:1007:2000::/home/3:/bin/bash
a:x:1008:2002::/home/a:/bin/bash
b:x:1009:2002::/home/b:/bin/bash
c:x:1010:2002::/home/c:/bin/bash
d:x:1011:2002::/home/d:/bin/bash

7.natasha、harry和sarah三个用户的密码均设置为glegunge

改密码的第一种方法:
[root@arya test]# passwd natasha
Changing password for user natasha.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
第二种:
[root@arya test]# echo "glegunge" | passwd --stdin harry
Changing password for user harry.
passwd: all authentication tokens updated successfully.
[root@arya test]# echo "glegunge" | passwd --stdin sarah
Changing password for user sarah.
passwd: all authentication tokens updated successfully.

8.请创建一个名为alex的用户,并满足以下要求:
用户id为3456,描述名为alian密码为glegunge

[root@arya test]# useradd -u 3456 -c "alian" alex
[root@arya test]# echo glegunge | passwd --stdin alex
Changing password for user alex.
passwd: all authentication tokens updated successfully.

[root@arya test]# id alex
uid=3456(alex) gid=3456(alex) groups=3456(alex)
[root@arya test]# cat /etc/shadow | grep alex
alex:$6$6YOVSoLi$sfvEAhkMPrI7Oc4Q/RcKt98gQbjJoxaKBUCcZj6YO8SsEzU3eezMo55gF4/MyRMvXbfyIcq7pD9.GpXUO.ZLz/:17802:0:99999:7:::

9.创建g1组,要求创建一个属于redhat用户g1组的文件redhat.txt

[root@arya test]# groupadd g1
[root@arya test]# id redhat
uid=1000(redhat) gid=1000(redhat) groups=1000(redhat)

创建文件redhat.txt并查看
[root@arya test]# touch redhat.txt
[root@arya test]# ll redhat.txt
-rw-r--r--. 1 root root 0 Sep 28 13:22 redhat.txt

更改文件的所属者和所属组
[root@arya test]# chown redhat redhat.txt
[root@arya test]# chgrp g1 redhat.txt

呜啦!呜啦啦啦啦!!!可以看到所属者变成了redhat所属组变成了g1。
[root@arya test]# ll redhat.txt
-rw-r--r--. 1 redhat g1 0 Sep 28 13:22 redhat.txt

三、
1、创建一个用户xiaoming,其ID号为2002,基本组为one(组ID为3003),附加组为linux。

[root@arya test]# groupadd -g 3003 one
[root@arya test]# groupadd -g 3004 linux
[root@arya test]# useradd -u 2002 -g 3003 -G linux xiaoming

[root@arya test]# id xiaoming
uid=2002(xiaoming) gid=3003(one) groups=3003(one),3004(linux)

2、创建一个用户fedora,其全名为Fedora Community,默认shell为tcsh。

[root@arya test]# useradd -c "Fedora Community" -s /bin/tcsh fedora

[root@arya test]# cat /etc/passwd | grep fedora
fedora:x:3457:3457:Fedora Community:/home/fedora:/bin/tcsh

3、修改xiaoming的ID号为4004,基本组为linux,附加组为one和fedora。

[root@arya test]# usermod -u 4004 -g linux -G one,fedora xiaoming

[root@arya test]# cat /etc/passwd | grep xiaomin
xiaoming:x:4004:3004::/home/xiaoming:/bin/bash
[root@arya test]# id xiaoming
uid=4004(xiaoming) gid=3004(linux) groups=3004(linux),3003(one),3457(fedora)

4、将alex的默认shell改为/bin/bash。

[root@arya test]# usermod -s /bin/bash alex

[root@arya test]# cat /etc/passwd | grep alex
alex:x:3456:3456:alian:/home/alex:/bin/bash

5、添加系统用户hbase,且不允许其登陆系统。

[root@arya test]# useradd -r hbase -s /sbin/nologin

你可能感兴趣的:(Linux学习)