10.用户和组的管理

用户分类


管理员 0
普通用户:1-65535
系统用户 1-466,1-999(centos7),系统用户是给应用程序使用的
登陆用户:500+,1000+(centos7)

1.用户管理命令


useradd(adduser软连接) 添加用户
usermod 修改用户
userdel 删除用户
id 显示用户信息
su 用户切换
passwd 修改密码
newusers 批量创建用户

1.1、useradd命令


常用选项:

-u:用户id
-d:指定家目录路径
-s:指定shell类型
-g:指定主组,组必须已经创建有的
-G:表示附加组,加多个附加组的话用逗号隔开
-M:表示不创建家目录,默认自动创建
-m:创建家目录,一般用户创建系统用户的时候
-r:表示创建系统用户,这时候不自动创建家目录,加-m表示系统用户也创建家目录

1.显示创建用户的一些默认设置

[root@Centos7 home]#useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

2.修改一些默认设置

 #useradd -D -s /sbin/nologin
这样创建新用户的时候shell就默认为/sbin/nologin
其他设置:
useradd –D -s SHELL
useradd –D –b BASE_DIR
useradd –D –g GROUP

3.创建一个用户apache,组为apache,附加组为test和root,家目录/var/www而暂不创建,/sbin/nologin,id是80

 #useradd -s /sbin/nologin -d /var/www -g apache -G test,root -M -r -u 80 apache

1.2、usermod命令


应用:修改已创建的用户一些信息

格式:usermod [OPTION] login

-u UID: 新UID

 #usermod -u 1004 nginx

-g GID: 新主组

 #usermod -g 1004 nginx  把nginx用户的主组改为1004

-G GROUP1,GROUP2,..新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项

-s SHELL:新的默认SHELL,下面是2中方法修改shell

 #usermod -s /bin/bash test3
 #chsh -s /bin/bash test3 

-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项,修改名字的时候,家目录最好也重名

 #usermod -d /home/new test2

-l new old: 新的名字;应用:公司员工离职,我们只需修改用户名和密码就行了,不用删掉再创建一个新用户,避免原有的文件所属问题,因为文件的所属根本是UID和GID,和用户名无关。

-L: lock指定用户,在/etc/shadow 密码栏的增加 !

-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉

-e YYYY-MM-DD: 指明用户账号过期日期

1.3、userdel命令


应用:删除用户
-r:把家目录和邮箱也删除,正在登陆的用户删除不了。

 #userdel -r chen   删掉chen用户

1.4、id命令


应用:显示用户一些信息,写脚本的时候,配上#echo $? 来判断用户是否存在

格式:id [OPTION]... [USER]
-u: 显示UID
-g: 显示GID
-G: 显示用户所属的组的ID
-n: 显示名称,需配合ugG使用

例子:

[root@Centos7 data]#id nginx
uid=1004(nginx) gid=1002(nginx) groups=1002(nginx),1001(webs)
解释:用户ID 主组ID groups=主组,附加组

1.5、su命令


切换账号,有2种用法:

 #su user  不改变当前目录
 #su - user 直接切换到用户的家目录

su命令切换之后,是无法使用whoami等命令查看当前用户

1.6、passwd命令


应用:修改用户密码、锁定账号、解锁账号
passwd [OPTIONS] UserName: 修改指定用户的密码
常用选项:
-d:删除指定用户密码

 #passwd -d nginx  密码删掉之后,用户就可以不能密码登录系统
 #getent shadow nginx
 nginx::17740:0:99999:7:::

-l:锁定指定用户

[root@Centos7 data]#passwd -l nginx
[root@Centos7 data]#getent shadow nginx
nginx:!!:17740:0:99999:7:::  #出现!!代表账号被锁定

-u:解锁指定用户,配合-f(force)使用

[root@Centos7 data]#passwd -u -f nginx
Unlocking password for user nginx.
passwd: Success
[root@Centos7 data]#getent shadow nginx
nginx::17740:0:99999:7:::

–stdin:从标准输入接收用户密码

 #echo "centos" | passwd --stdin chen >/dev/null 设置chen账号密码为centos

1.7、newusers命令


应用:批量创建用户,也可以复制一台服务器上用户/etc.passwd,在另一台服务器上批量创建。
1.把要创建的用户,以/etc/passwd格式保存在文件中,

[root@Centos7 data]#cat user.txt 
test1:x:1003:1003::/home/test1:/bin/bash
test2:x:1002:100::/home/test2:/bin/bash
test3:x:1004:1006::/home/test3:/bin/bash
test4:x:1005:1007::/home/test4:/bin/bash

2.使用newusers 命令创建

[root@Centos7 data]#newusers user.txt

3.查看是否参加成功

[root@Centos7 data]#getent passwd |tail -4
test1:x:1003:1003::/home/test1:/bin/bash
test2:x:1002:100::/home/test2:/bin/bash
test3:x:1004:1006::/home/test3:/bin/bash
test4:x:1005:1007::/home/test4:/bin/bash

批量创建密码
1.准备密码文件,格式是 “用户:密码”

[root@Centos7 data]#cat passwd.txt 
test1:123456
test2:123456
test3:123456
test4:123456

2.使用批量命令:chpasswd

[root@Centos7 data]#cat passwd.txt |chpasswd

3.查看是否改了
#getent shadow |tail -4
这里写图片描述

批量删除用户

[root@Centos7 data]#for i in `cut -d: -f1 user.txt`;do userdel -r $i;done
userdel: test1 mail spool (/var/spool/mail/test1) not found
userdel: /var/spool/mail/test2 not owned by test2, not removing
userdel: /var/spool/mail/test3 not owned by test3, not removing
userdel: test4 mail spool (/var/spool/mail/test4) not found

2.组的管理命令


1.groupadd命令
-g:指定组的id
-r:系统组
创建nginx组,给系统用户用的,id号为808
#groupadd -r -g 808 nginx

2.groupmod命令
应用:组属性修改
格式:groupmod [OPTION]… group

-n:newname oldname
#groupmod -n nginx1 nginx

-g GID: 新的GID

3.groupdel命令
应用:删除组
groupdel GROUP
注意:删组的时候,不能删除某个用户的主组

4.group对用户增删查
1.test组添加用户
方法1:#usermod -G test chen 把test组设置为用户chen的附加组,原来的附加组会被覆盖
若要保存之前的组,用-aG选项

方法2:#gpasswd -a chen(用户) test(组)

方法3:普通用户登录之后,$newgrp test,不过需要组的口令
组的口令:表示普通用户添加这个组需要一个密码

2.test组删除用户
#groupmems -g test -d chen 把用户从test组删掉

3.查看test组里有哪些用户
#groupmems -g test -l

4.设置test组的口令
#gpasswd test

5.切换chen用户登陆,执行下面命令,加入test组,然后输入密码
#newgrp test 这样入组,临时会把test修改为主组

3.Linux用户和组的主要配置文件


/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
/etc/default/useradd:创建用户的默认值设置文件
/etc/login.defs:设置用户的ID范围,加密算法等

4.getent命令


 #getent passwd (指定用户)--查看用户信息
 #getent shadow (指定用户)--查看用户密码信息
 #getent group  (指定用户)  --查看组信息
 #getent gshadow (指定用户)--查看组密码信息

1.查看/etc/passwd下chen账号,显示账号和组的ID、账号、组名、家目录、shell类型

[root@Centos7 data]#getent passwd chen
chen:x:1000:1000:chen:/home/chen:/bin/bash

2.若是不指定用户名,列出/etc/passwd的所有内容

 #getent passwd 

3.查看用户的密码文件,/etc/shadow。centos7使用:sha512加密算法

[root@Centos7 data]#getent shadow test3

这里写图片描述

17739:表示密码修改时间,单位是1970年1月1日,到修改密码那天,17739×86400=1532649600
#date -d @1532649600 +”%F% %T” 
2018-07-27 08:00:00
99999:表示密码最大有效期

4.修改账号密码一些时间
#chage test3
这里写图片描述

5.创建用户的时候一些默认值设置/etc/default/useradd

[root@Centos7 data]#cat /etc/default/useradd
 # useradd defaults file
GROUP=100
HOME=/home  #默认家目录的路径
INACTIVE=-1   #-1表示账号口令过期了指定时间,不锁定
EXPIRE=
SHELL=/bin/bash  #默认shell类型
SKEL=/etc/skel   
 #新帐号的家目录模块,一些配置文件,比如一些隐藏文件.bashrc  、.bash_history
 #若是想在新创建一个用户的家目录里都默认有一个文件夹newfile,可在/etc/skel下,创建newfile。
如果我们不小心删除了/home/test3,可以根据下面步骤还原配置
 #mkdir /home/test3
 #chown test3:test3 /home/test3
 #cp -r /etc/skel/. /home/test3

CREATE_MAIL_SPOOL=yes #默认把用户的邮件也创建,邮件地址:/var/spool/mail/

6.创建一个随机密码
设置12位的随机口令
#openssl rand -base64 12

7.查看账号密码的加密算法

 #cat /etc/login.defs
.....省略
 # Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512   #表示使用SHA512加密算法
可以用命令改变加密算法,下例子是改成sha256加密算法
 #authconfig --passalgo=sha256 --update  

8.我们在创建新的账号的时候,默认创建一个和用户名字一样的组

猜你喜欢

转载自blog.csdn.net/chen2499152/article/details/81273405