新增linux用户,linux 手动新增用户

news/2024/12/2 16:56:27/

手动新增用户

需要了解下面这些文件及目录:

用户账号与密码参数方面的文件:/etc/passwd,/etc/shadow

用户组相关方面文件:/etc/group,/etc/gshadow

用户的组文件夹:/home/账号名称

/etc/default/useradd

/etc/skel/*

/etc/login.defs

/var/spool/mail/*

如果使用useradd可以帮助我们自动设置好UID/GID主文件夹及主文件夹相关的权限设置,(主文件夹下的配置文件,用户的邮箱等),手动增加的时候,要了解整个系统,手动增加的好处是,我们的账号问题可以完全依照自己的意思去修改,而不必迁就于系统默认值。

一些检查工具

pwck

这个命令检查/etc/passwd这个账号配置文件内的信息,与实际的主文件夹是否存在。比较/etc/passwd,/etc/shadow的信息是否一致,另外,如果/etc/passwd内的数据字段错误时,会提示用户修改。

grpck

用户组检查,与pwck意思相同

pwconv

这个命令主要目的是将/etc/passwd内的账号与密码移动到/etc/shadow当中(例如你只手工修改了/etc/passwd文件增加了用户,而shadow中没有对应的用户时)。

一般说,如果你正常使用useradd增加用户时,使用pwconv并不会有任何操作,因为/etc/passwd与/etc/shadow并不会有问题。不过如果手动设置账号,这个pwconv就很重要了。

pwnuconv

相对于pwconv,pwunconv则是将/etc/shadow内的密码列数据写回/etc/passwd,并且删除/etc/shadow文件,这个命令很危险,需要先备份shadow文件,最好不要用

chpasswd

他可以读入未加密前的密码,并且经过加密后,将加密后的密码写入/etc/shadow文件中,这个命令很常被使用在批量新建账号的情况中。他可以有Standard input读入数据,每条数据的格式是“username:password”。举例来说,我的系统当中有个用户账号为awake,我想要更新他的密码(update),假如需要将密码更新为Passw0rd的话,那么可以这样:

[root@RHEL6 mail]# echo "awake:Passw0rd" | chpasswd -m

默认情况中chpasswd使用的是DES加密方法来加密,我们可以使用chpasswd -m 来使用MD5加密方法。这个命令通常是passwd --stdin的备份命令,如有些系统中没有passwd --stdin命令是使用。

[root@RHEL6 mail]# echo "password" | passwd --stdin awake

grpconv

这个命令主要目的是将/etc/group内的用户组与密码移动到/etc/gshadow当中(例如你只手工修改了/etc/group文件增加了用户组,而gshadow中没有对应的用户组时)。

使用命令新建用户及用户组过程如下

groupadd mygroup1

useradd -G mygroup1 myuser1

useradd -G mygroup1 myuser2

useradd -s /sbin/nologin myuser3

echo "password" | passwd --stdin myuser1

echo "password" | passwd --stdin myuser2

mkdir /srv/projecta

chgrp mygroup1 /srv/projecta

chmod 2770 /srv/projecta //代表用户(myuser1-3)在这个目录下面新建的文件的用户组都会与该目录的用户组相同

手工(修改配置文件)新建用户及用户组过程如下

1、先新建所需要的用户组(vi /etc/group)

2、将/etc/group与/etc/gshadow同步(grpconv,下面有grpconv的实验)

3、新建账号的各个属性(vi /etc/passwd)

4、将/etc/passwd与/etc/shadow同步(pwconv,与grpconv意思相同)

5、新建账号的密码(passwd accountname)

6、新建用户主文件夹(cp -a /etc/skel /home/accountname)

7、更改用户主文件夹的所有者和所有组属性(chown -R accountname.group /home/accountname)

8、更改用户主文件夹的权限属性

实例

新建用户为normal,假设520这个UID/GID没有被占用,新建用户组为normalgroup,并指定用户密码

1、新建组、同步组及组密码

[root@RHEL6 ~]# vi /etc/group //在最后一行加入下面这一行

......

normalgroup:x:520:

......

[root@RHEL6 ~]# grep normalgroup /etc/gshadow //查看/etc/gshadow没有这一行

[root@RHEL6 ~]# grpconv //将/etc/group内的用户组与密码移动到/etc/gshadow当中

[root@RHEL6 ~]# grep normalgroup /etc/gshadow /etc/group //查看移动情况

/etc/gshadow:normalgroup:x:: //移动完成

/etc/group:normalgroup:x:520:

[root@RHEL6 ~]#

2、新建用户,同步用户与密码

[root@RHEL6 ~]# vi /etc/passwd

加入如下一行

normaluser:x:520:520::/home/normaluser:/bin/bash

[root@RHEL6 ~]# grep normaluser /etc/shadow //查看/etc/shadow没有这一行

[root@RHEL6 ~]# pwconv //将/etc/passwd内的账号与密码移动到/etc/shadow当中

[root@RHEL6 ~]# grep normaluser /etc/shadow //再次查看,移动完成

normaluser:x:16618:0:99999:7:::

[root@RHEL6 ~]#

[root@RHEL6 ~]# passwd normaluser //设置normaluser的密码

Changing password for user normaluser.

New password:

BAD PASSWORD: it is based on a dictionary word

Retype new password:

passwd: all authentication tokens updated successfully.

4、新建用户主文件夹,并且修改权限

[root@RHEL6 ~]# ll -d /home/*

drwx------. 3 alex alex 4096 Jun 29 09:25 /home/alex //没有normaluser的家目录

......

[root@RHEL6 ~]# cp -a /etc/skel /home/normaluser //复制/etc/skel下的所有文件到/home/normaluser,看来cp -a有创建目录的能力

[root@RHEL6 ~]# ll -d /home/*

drwx------. 3 alex alex 4096 Jun 29 09:25 /home/alex

drwxr-xr-x. 3 root root 4096 Jun 4 13:58 /home/normaluser

[root@RHEL6 ~]# chown -R normaluser:normalgroup /home/normaluser //更改用户主文件夹的所有者和所有组属性

[root@RHEL6 ~]# ll -d /home/normaluser/

drwxr-xr-x. 3 normaluser normalgroup 4096 Jun 4 13:58 /home/normaluser/

[root@RHEL6 ~]# chmod 700 /home/normaluser //更改用户主文件夹的权限属性

[root@RHEL6 ~]# ll -d /home/normaluser/

drwx------. 3 normaluser normalgroup 4096 Jun 4 13:58 /home/normaluser/

[root@RHEL6 ~]#

验证

[root@RHEL6 ~]# su - awake

[awake@RHEL6 ~]$ su - normaluser

Password: //密码设置正确

[normaluser@RHEL6 ~]$ groups

normalgroup //用户初始组正确

[normaluser@RHEL6 ~]$ pwd

/home/normaluser //家目录正确

[normaluser@RHEL6 ~]$ umask

0022 //这一点有点不同,使用useradd新建的用户其umask值为0002

[normaluser@RHEL6 ~]$ mail root //给root写封邮件

Subject: hello

I am here

.

EOT

[normaluser@RHEL6 ~]$ exit

logout

[awake@RHEL6 ~]$ exit //回到超户,提示有封邮件

logout

You have mail in /var/spool/mail/root

[root@RHEL6 ~]# mail //查看邮件

Heirloom Mail version 12.4 7/29/08. Type ? for help.

"/var/spool/mail/root": 1 message 1 new

>N 1 normaluser@RHEL6.4x6 Thu Jul 2 17:36 18/559 "hello"

[root@RHEL6 ~]# ll /var/spool/mail/normaluser //查看用户normaluser有没有邮箱,发现没有,如果使用useradd创建的,那么这个邮箱也应该创建,用root给normaluser发封邮件试试。

ls: cannot access /var/spool/mail/normaluser: No such file or directory

[root@RHEL6 mail]# mail normaluser

Subject: Aare you there

Are you there?

.

EOT

[root@RHEL6 mail]#

[root@RHEL6 mail]# su - normaluser

[normaluser@RHEL6 ~]$ mail

Heirloom Mail version 12.4 7/29/08. Type ? for help.

"/var/spool/mail/normaluser": 1 message 1 new

>N 1 root Thu Jul 2 17:39 18/561 "Aare you there"

& 1

Message 1:

From root@RHEL6.4x64 Thu Jul 2 17:39:05 2015

Return-Path: 

X-Original-To: normaluser

Delivered-To: normaluser@RHEL6.4x64

Date: Thu, 02 Jul 2015 17:39:05 +0800

To: normaluser@RHEL6.4x64

Subject: Aare you there

User-Agent: Heirloom mailx 12.4 7/29/08

Content-Type: text/plain; charset=us-ascii

From: root@RHEL6.4x64 (root)

Status: R

Are you there?

& quit

Held 1 message in /var/spool/mail/normaluser

[normaluser@RHEL6 ~]$ ll /var/spool/mail/normaluser //有邮件,并且创建了这个文件

-rw-------. 1 normaluser mail 572 Jul 2 17:39 /var/spool/mail/normaluser

grpconv命令实验

[root@RHEL6 ~]# grep project /etc/group

project:444:706:alex,arod //字符444为手工修改group文件,给project组设置的密码

[root@RHEL6 ~]# grep project /etc/gshadow

project:x::alex,arod //x表示project还没有密码

[root@RHEL6 ~]# gpasswd project //使用gpasswd设置project的密码

Changing the password for group project

New Password:

Re-enter new password:

[root@RHEL6 ~]# grep project /etc/gshadow //查看密码已经设置成功,并为加密方式

project:$6$/FLzki/B$JDOrI8v4FAtTQSuy.682wwlttQyZ120GAk70Se2hT5smhfdOue9ZNj4KtcCI0wXGz1yEBb5TZz6Mp1AN2HBHN/::alex,arod

[root@RHEL6 ~]# grpconv //将/etc/group内的用户组与密码移动到/etc/gshadow当中

[root@RHEL6 ~]# grep project /etc/gshadow //密码已经移动过来,覆盖了原有密码,此时为444

project:444::alex,arod

[root@RHEL6 ~]# grep project /etc/group

project:x:706:alex,arod //x表示密码已经不见了

projecta:x:707:pro1,pro2,pro3

批量新建账号模板。

[root@RHEL6 scripts]# more account1.sh

#!/bin/bash

#这个程序用来新建账号,功能有:

#1.检查account1.txt是否存在,并将该文件内的账号取出;

#2.新建上述文件的账号;

#3.将上述账号的密码修改成为强制第一次需要修改密码的格式。

#2015/07/02 Awake

export PATH=/bin:/sbin:/usr/bin:/usr/sbin

#检查account1.txt是否存在

#下面是一个单层的条件判断式if [ 条件判断式 ];then fi

if [ ! -f account1.txt ]; then

echo "所需要的账号文件不存在,请新建account1.txt,每一行一个账号名称"

exit 1

fi

#下面是一个固定循环for...do...done

username=$(cat account1.txt) #username的变量内容是cat account1.txt的内容

for username in $username #第一次循环时,$username的内容为cat account1.txt的第一个用户名...;

do

useradd $username #添加第一个用户名

echo $username | passwd --stdin $username #设置用户的密码与用户相同

chage -d 0 $username #最近一次更改密码的日期为0表示1970/01/01,也就是强制用户登录修改密码

done

[root@RHEL6 scripts]# more account1.txt

stda

stdb

stdc

[root@RHEL6 scripts]#

[root@RHEL6 scripts]# sh -n account1.sh //检查script语法

[root@RHEL6 scripts]# sh -x account1.sh //将使用到的script显示在屏幕上,+号后面的数据是命令串。

+ export PATH=/bin:/sbin:/usr/bin:/usr/sbin

+ PATH=/bin:/sbin:/usr/bin:/usr/sbin

+ '[' '!' -f account1.txt ']'

++ cat account1.txt

+ username='stda

stdb

stdc'

+ for username in '$username'

+ useradd stda

+ passwd --stdin stda

+ echo stda

Changing password for user stda.

passwd: all authentication tokens updated successfully.

+ chage -d 0 stda

+ for username in '$username'

+ useradd stdb

+ passwd --stdin stdb

+ echo stdb

Changing password for user stdb.

passwd: all authentication tokens updated successfully.

+ chage -d 0 stdb

+ for username in '$username'

+ useradd stdc

+ passwd --stdin stdc

+ echo stdc

Changing password for user stdc.

passwd: all authentication tokens updated successfully.

+ chage -d 0 stdc

[root@RHEL6 scripts]#

[root@RHEL6 scripts]# grep "std[a-z]" /etc/passwd /etc/shadow //检查用户添加情况,及密码设置情况,密码文件shadow注意第三段的0,表示是1970年1月1日修改的密码,也就是强制用户登录修改密码

/etc/passwd:stda:x:712:714::/home/stda:/bin/bash

/etc/passwd:stdb:x:713:715::/home/stdb:/bin/bash

/etc/passwd:stdc:x:714:716::/home/stdc:/bin/bash

/etc/shadow:stda:$6$DtW1clOT$TNuVmfmg2CeMuHoM2ZgYeKLm5KoYh.yaV6XAKi4CWEHsYyL.sWca02lIzjEpt.uHSKRZA.nzKSEgYA6VmdUCK0:0:0:99999:7:::

/etc/shadow:stdb:$6$CyF3gyHD$qqRQKrCKbe9Dpi4oejJhYW4vrFuhg6WjZGeiAxbkl5LH5pSBTdQL0s0GJa5F3IPOpNocahJ5zL09IoCubosgO0:0:0:99999:7:::

/etc/shadow:stdc:$6$F/7ucLdw$i3QcwEwA8BcMsfT4D5xVBPYWlMjNmWZhbn.ZP2Vq.UOrahhJg4pUlqyPKpUEc5vrxAYqHhuPQyVDh.5TSx4mw.:0:0:99999:7:::

[root@RHEL6 scripts]#


http://www.ppmy.cn/news/811687.html

相关文章

初始化一个新的cURL辉煌并抓取一个web页面。

(PHP 4 > 4.0.2, PHP 5, PHP 7) curl_setopt — 设置一个cURL传输选项 说明 bool curl_setopt ( resource $ch , int $option , mixed $value ) 为给定的cURL会话句柄设置一个选项。 参数 ch 由 curl_init() 返回的 cURL 句柄。 option 需要设置的CURLOPT_XXX选项。 val…

密码学-DES加密解密算法的实现-C++(代码原创,算法细节参考其他博客)

实验内容1:实现DES加密算法 1.算法简介 明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按…

MD5 密码破解 碰撞 网站

MD5反向查询网站 http://www.cmd5.com/ 文件MD5值查询网站 http://www.atool.org/file_hash.php 个人对密码破解的理解 1、使用MD5对密码加密有什么用? 一个输入(密码明文)有唯一的一个输出(加密后的密文),但反过来,一个输出却对应无数个输入,所以,当你拿到一个输出时,…

Python 爬虫逆向破解案例实战 (二):STEAM密码加密 (RSA) 逆向

目录 1. 非对称加密与 RSA1.1 介绍1.2 Python 实现 RSA 加密1.3 JavaScript 实现 RSA 加密2. STEAM 网站逆向分析3. 编码实现从本篇博文开始,我们将继续去学习开发中经常用到的编码、消息摘要算法和加密算法方面的知识。作为开发者,掌握这些知识可以让我们在设计反爬虫时有更…

JErasure库相关介绍

JErasure库提供一般的RS码和CRS码两种编码方式,是基于C的纠删码的类库。 JErasure库的相关学习 一、Galois Field(一)基本概念(二) G F ( 2 w ) GF(2^w) GF(2w) 二、CRS码(一)RS码简介&#xf…

[buuctf] crypto全解——121-146(不建议直接抄flag)

121.[INSHack2017]rsa16m 查看题目 给了nec都很大 所以当m^e 严重小于n的时候。c很可能就是 m^e 所以对c开e次方就能得到m import gmpy2 from Crypto.Util.number import * #读取 data open(rsa_16m.txt, r).read().split(\n) #print(data) m gmpy2.iroot(int(data[1][4:],…

最全MD5 密码破解 碰撞 网站

MD5反向查询网站 md5在线解密破解,md5解密加密 文件MD5值查询网站 HTML5 File Hash - 在线计算文件Hash值(CRC-32,MD5,SHA1,SHA-256) - aTool在线工具 个人对密码破解的理解 1、使用MD5对密码加密有什么用&#xff…

mysql8.0下载,安装,更改密码

文章目录 资源下载将mysql解压到/usr/local/mysql更改/etc/my.cnf创建数据存放路径用户组配置配置mysql用户的执行权限数据初始化启动服务环境变量配置修改初始密码防火墙管理,开启3306端口远程访问 资源下载 链接:https://pan.baidu.com/s/1ozfedVlRDsB8dqfJtol4m…