用户

[root@localhost ~]# cat /etc/login.defs

[root@localhost ~]# grep -i '^[a-z]' /etc/login.defs

# 指定创建⽤用户后的邮件文件存放位置

MAIL_DIR /var/spool/mail

# 密码,最长天数

PASS_MAX_DAYS 99999

# 密码最小天数

PASS_MIN_DAYS 0

# 密码最小长度

PASS_MIN_LEN 5

# 密码过期前7天 ,提示,密码要过期了了,给老子改

PASS_WARN_AGE 7

# 普通⽤用户的uid 最⼩小值1000

UID_MIN 1000

# 普通⽤用户的最⼤大uid 60000

UID_MAX 60000

# -r创建的系统⽤用户,201 - 999

SYS_UID_MIN 201

SYS_UID_MAX 999

# 普通⽤用户组的最⼩小gid

GID_MIN 1000

# 普通⽤用户组的最⼤大gid

GID_MAX 60000

# -r创建的系统⽤用户组,201 - 999

SYS_GID_MIN 201

SYS_GID_MAX 999

# 默认创建家⽬目录

CREATE_HOME yes

# 家⽬目录umask

UMASK 077

0777 0777

- 0022 0077

------- ------

0755 0700

# 在删除⽤用户的时候,是否捆绑,把⽤用户组也删除

USERGROUPS_ENAB yes

# ⽤用户密码加密算法

ENCRYPT_METHOD SHA512

[root@localhost ~]# ll /etc/default/useradd

-rw-r--r-- 1 root root 119 11⽉月 5 2016 /etc/default/useradd

[root@localhost ~]# cat /etc/default/useradd

# 依赖于/etc/login.defs的USERGRUUPS_ENAB参数,如果为no,则在此处控制

GROUP=100

# 默认普通⽤用户的家⽬目录

HOME=/home

# 是否启⽤用账号过期停权,-1表示不不启⽤用

INACTIVE=-1

# 账号终⽌止⽇日期(没有设置)

EXPIRE=

# 创建⽤用户的默认shell

SHELL=/bin/bash

# 当⽤用户,误删除了了⾃自⼰己家⽬目录下的环境变量量。

SKEL=/etc/skel

-bash-4.2$ cp /etc/skel/.bash* ~/

# 创建⽤用户的同时,是否创建邮件⽂文件

CREATE_MAIL_SPOOL=yes


用户的密码管理

passwd

# 创建密码的规范

1.密码的⻓长度最好⼤大于10位字符

2.密码中包含⼤大⼩小写字⺟母数字以及特殊字符 ! @ # $

3.不不规则性(不不要出现⾃自⼰己名字、公司名字、⾃自⼰己电话、等等简单的密码)

[root@localhost ~]# passwd --help

⽤用法: passwd [选项...] <帐号名称>

# 直接输⼊入passwd,更更改当前登录⽤用户的密码

[root@localhost ~]# passwd

# passwd + ⽤用户名,给指定⽤用户设置密码

[root@localhost ~]# passwd zls000

# 使⽤用⾮非交互的⽅方式设置密码给指定⽤用户

[root@localhost ~]# echo '123' | passwd --stdin zls000

# md5sum,加密。并且做校验

# 密码管理理命令

yum install -y expect

//2.mkpasswd密码⽣生成⼯工具, -l设定密码⻓长度,-d数⼦子,-c⼩小写字⺟母,-C⼤大写字⺟母,-s特殊字符

[root@zls ~]# yum install -y expect //需要安装扩展包

[root@zls ~]# mkpasswd -l 10 -d 2 -c 2 -C 2 -s 4

|K&13bR)i/

# 使⽤用 三种⽅方式,创建出来100个 ⽤用户,并且设置100个随机密码,并且记录密码,都可以登录

username:password

cat /tmp/1.txt

zls001:123456

zls002:kzsuhiuh1


创建用户

useradd xxx001

useradd xxx002

useradd xxx003

useradd xxx004

...

seq -w 100

给用户设置密码

echo $RANDOM|md5sum|cut -c 1-10 |passwd --stdin xxx001

echo $RANDOM|md5sum|cut -c 1-10 |passwd --stdin xxx002

echo $RANDOM|md5sum|cut -c 1-10 |passwd --stdin xxx003

echo $RANDOM|md5sum|cut -c 1-10 |passwd --stdin xxx004

...

将用户名和密码保存起来 username:password

echo xxx001:password1 >> /tmp/a.pass

echo xxx002:password2 >> /tmp/a.pass

echo xxx003:password3 >> /tmp/a.pass

echo xxx004:password4 >> /tmp/a.pass

...

useradd xxx001 && pass=`echo $RANDOM|md5sum|cut -c 1-10` && echo $pass

|passwd --stdin xxx001 && echo xxx001:$pass >> /tmp/a.pass


组的基本管理

[root@localhost ~]# ll /etc/group

-rw-r--r-- 1 root root 12120 4⽉月 1 10:11 /etc/group

⽤用户身份切换

如何在普通⽤用户的情况下,完成⽇日常⼯工作? 1) su 切换⽤用户,使⽤用普通⽤用户登录,然后使⽤用su命令切

换到root。 优点:简单,⽅方便便 缺点:需要知道root密码,不不安全,切换到root没有⽇日志审计功能

[root@localhost ~]# tail -2 /etc/group

hfls49:x:1779:

hfls50:x:1780:

第⼀一列列:组名

第⼆二列列:密码占位符(组密码存在gshadow)

第三列列:gid

第四列列:组的附加成员,基本成员不不显示。

[root@localhost ~]# ll /etc/gshadow

---------- 1 root root 8902 4⽉月 1 10:11 /etc/gshadow

[root@localhost ~]# tail -2 /etc/gshadow

hfls49:!::

hfls50:!::

第⼀一列列:组名

第⼆二列列:组密码(!! 表示没有密码)

第三列列:组管理理员

第四列列:组的附加成员,基本成员不不显示

## 创建组命令:groupadd

[root@localhost ~]# groupadd z1s

[root@localhost ~]# groupadd z1s -g 6666

# 创建gid范围是201-999之间的系统组

[root@localhost ~]# groupadd -r z1s

## 修改组命令:groupmod

[root@localhost ~]# groupmod z1s -g 6666

# 修改组名

[root@localhost ~]# groupmod z1s -n z1s01

## 删除组命令:groupdel

[root@localhost ~]# groupdel z1s01


用户身份切换

如何在普通⽤用户的情况下,完成⽇日常⼯工作? 1) su 切换⽤用户,使⽤用普通⽤用户登录,然后使⽤用su命令切

换到root。 优点:简单,⽅方便便 缺点:需要知道root密码,不不安全,切换到root没有⽇日志审计功能

[root@localhost ~]# tail -2 /etc/group

hfls49:x:1779:

hfls50:x:1780:

第⼀一列列:组名

第⼆二列列:密码占位符(组密码存在gshadow)

第三列列:gid

第四列列:组的附加成员,基本成员不不显示。

[root@localhost ~]# ll /etc/gshadow

---------- 1 root root 8902 4⽉月 1 10:11 /etc/gshadow

[root@localhost ~]# tail -2 /etc/gshadow

hfls49:!::

hfls50:!::

第⼀一列列:组名

第⼆二列列:组密码(!! 表示没有密码)

第三列列:组管理理员

第四列列:组的附加成员,基本成员不不显示

## 创建组命令:groupadd

[root@localhost ~]# groupadd z1s

[root@localhost ~]# groupadd z1s -g 6666

# 创建gid范围是201-999之间的系统组

[root@localhost ~]# groupadd -r z1s

## 修改组命令:groupmod

[root@localhost ~]# groupmod z1s -g 6666

# 修改组名

[root@localhost ~]# groupmod z1s -n z1s01

## 删除组命令:groupdel

[root@localhost ~]# groupdel z1s01

2) sudo 提权,当需要使⽤用root权限时,进⾏行行提权,⽽而⽆无需切换⾄至root⽤用户。 优点:安全,⽅方便便 缺

点:复杂

shell的分类

交互式shell

等待⽤用户输⼊入执⾏行行的命令(终端操作,需要不不断提示)

非交互式shell

执⾏行行shell脚本, 脚本执⾏行行结束后shell⾃自动退出,和⼀一部分命令

登录式shell

需要输⼊入⽤用户名和密码。才能进⼊入shell su - root

⾮非登录式shell

不不需要输⼊入⽤用户和密码就能进⼊入,⽐比如执⾏行行sh, bash, su username

## 个⼈人环境变量量:

~/.bash_profile

~/.bashrc

[root@localhost ~]# ll ~/.bashrc

-rw-r--r-- 1 root root 176 Mar 25 10:55 /root/.bashrc

[root@localhost ~]# ll ~/.bash_profile

-rw-r--r--. 1 root root 176 Dec 29 2013 /root/.bash_profile

## 全局环境变量量:

/etc/profile

/etc/profile.d/*.sh

/etc/bashrc

[root@localhost ~]# ll /etc/profile

-rw-r--r-- 1 root root 1819 Apr 11 2018 /etc/profile

[root@localhost ~]# ll /etc/profile.d/*.sh

[root@localhost ~]# ll /etc/bashrc

-rw-r--r-- 1 root root 2853 Apr 11 2018 /etc/bashrc

#登录式shell配置⽂文件执⾏行行顺序

/etc/profile->/etc/profile.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc

#⾮非登陆式shell配置⽂文件执⾏行行顺序

~/.bashrc->/etc/bashrc->/etc/profile.d/*.sh

# 切换⽤用户:

su - root

-c:不不切换⽤用户的情况下,直接执⾏行行命令

用户身份提权

## sudo 提权

usermod zls -G wheel

1.将⽤用户加⼊入到 sudoers ⽂文件中

2.将⽤用户加⼊入到 sudoers ⽂文件中设置的组⾥里里

[root@localhost ~]# visudo

1.⽤用户名 2.主机名 3.⻆角⾊色名 4.命令名

root ALL= (ALL) ALL


练习题

1.什么是用户?

能够正常登录系统的,可以管理系统还有可以管理系统中的进程或者程序

02.Linux与windows系统的用户有什么区别?

linux          支持多用户同时登录

windows    默认不支持多用户同时登录

03.使用什么命令可以查看用户是否存在?

[root@oldboy ~]# id oldboy

[root@oldboy ~]# who

[root@oldboy ~]# whoami

root

04.跟用户相关的配置文件都有哪些?分别存放的是什么?

用户存放的信息文件  /etc/passwd

用户存放的密码文件 /etc/shadow

用户组信息文件 /etc/group

05./etc/passwd文件以':' 为分割符, 分为7个字段,请说明一下每个字段的具体含义?

字段名称              注释说明

1.用户名称            //用户的账号名称

2.密码占位符        //存放账户的口令,暂用x表示,密码保存在/etc/shadow

3.用户的UID        //用户标识号

4.用户基本组GID      //组标识号

5.用户注释          //用户详细信息

6.用户家目录        //root家目录是/root普通用户家目录存在/home/username(可自定义)

7.用户登录Shell    //用户登录Linux使用的shell  #cat /etc/shells

06./etc/shadow文件以':' 为分割符, 分为9个字段,请说明一下每个字段的具体含义?

字段名称                      注释说明

1.用户登陆名            //用户的账号名称

2.加密后的密码            //用户密码,这是加密过的口令(未设密码时为!!)

3.最近一次密码更改时间    //从1970年到最近一次更改密码时间之间过了多少天

4.密码最少使用几天        //密码最少使用几天才可以更改密码(0表示无限制)

5.密码最长使用几天      //密码使用多少天需要修改密码(默认99999永不过期)

6.密码到期前警告期限    //密码过期前多少天提醒用户更改密码(默认过期提前7天警告)

7.密码到期后保持活动的天数 //在此期限内, 用户依然可以登陆系统并更改密码, 指定天数过后, 账户被锁定

8.账户到期时间        //从1970年起,账户在这个日期前可使用,到期后失效。

9.标志                        //保留

07.什么是用户的UID?

用户的标识符  它和用户一一对应关系

User Identification  的缩写

08.不同的用户对应UID号范围是多少?

0            超级用户

1-200      系统用户

201-999  系统用户  (不需要登录)

1000+      普通用户

09.新建用户user1、user2,用户user2不允许登陆到系统中。

[root@oldboy ~]# useradd user1

[root@oldboy ~]# useradd user2 -s /sbin/nologin

10.创建普通用户oldboy,其ID号为789

[root@oldboy ~]# useradd -u  789 oldboy

[root@oldboy ~]# id oldboy

uid=789(oldboy) gid=1003(oldboy) groups=1003(oldboy)

11.创建虚拟用户test,其ID号为666

[root@oldboy ~]# useradd -u 666 -s /sbin/nologin test

12.修改oldboy用户的ID号,修改为777

[root@oldboy ~]# usermod -u 777 oldboy

[root@oldboy ~]# id oldboy

uid=777(oldboy) gid=1003(oldboy) groups=1003(oldboy)

13.修改用户test的命令解释器,使其可以登录到系统。

[root@oldboy ~]# usermod  -s /bin/sh test

[root@oldboy ~]# su - test

Last login: Tue Mar 31 15:09:39 CST 2020 on pts/3

[test@oldboy ~]# whoami

test

14.删除用户user1.不删除其家目录。

[root@oldboy ~]# userdel user1

[root@oldboy ~]# ll /home/

total 0

drwx------ 3 oldboy oldboy 78 Mar 31 15:06 oldboy

drwx------ 3 test  test  99 Mar 31 15:16 test

drwx------ 3  1001  1001 78 Mar 31 15:04 user1

drwx------ 3 user2  user2  78 Mar 31 15:05 user2

drwx------ 3 www    www    78 Jan  1  2021 www

15.删除用户user2,不保留其家目录。

[root@oldboy ~]# userdel -r user2

16.给oldboy用户创建一个密码为123,并尝试登录(两种方法实现)

[root@oldboy ~]# passwd oldboy

[root@oldboy ~]# echo "123" |passwd --stdin oldboy

17批量创建10个用户,前缀是你的姓,后缀为数字序列,比如qian1等。

大佬的方法

#  sed  后项引用

# | xargs 

#  awk 

[root@oldboy ~]# cat aa.sh

#!/bin/bash

read -p "请输入你的用户名 " ming

read -p "请输入这个用户名创建的次数  " shu

for i in `seq $shu`

do

useradd $ming$i

done

小弟的方法

for

[root@oldboy ~]# for i in `seq 10`;do useradd qian$i;done

18.默认情况下管理员创建了一个用户,就会在()目录下创建一个用户主目录

/home

19.如何检查系统中存在oldboy用户,并且显示用户id信息

[root@oldboy ~]# id oldboy

uid=777(oldboy) gid=1003(oldboy) groups=1003(oldboy)

20.创建gid为666,名字为www的用户组

[root@oldboy ~]# groupadd -g 666 www

21.创建uid为666,gid为666,名字为www的用户

[root@oldboy ~]# useradd -u 666 -g 666 www

[root@oldboy ~]# useradd -u 666 -g 666 www

useradd: group '666' does not exist

22.创建uid为888,注释信息为"虚拟用户",不创建家目录,不能登录系统,名字为oldboyedu的用户

[root@oldboy ~]# useradd -u 888 -c "虚拟用户" -M  -s /sbin/nologin oldboyedu

23.假设公司研发部的用户yanfa和dev属于组yf,财务部的用户caiwu和money属于组cw,根据要求创建用户及组。

[root@oldboy ~]# groupadd yf

[root@oldboy ~]# groupadd cw

[root@oldboy ~]# useradd yanfa -g yf

[root@oldboy ~]# useradd dev -g yf

[root@oldboy ~]# useradd caiwu -g cw

[root@oldboy ~]# useradd money -g cw

[root@oldboy ~]# id yanfa

uid=1021(yanfa) gid=1024(yf) groups=1024(yf)

[root@oldboy ~]# id caiwu

uid=1023(caiwu) gid=1025(cw) groups=1025(cw)

24.报如下错误是什么原因,并怎么解决

(1)

[root@oldboy ~]# id qzg

id: qzg: no such user

没有这个用户

(2)

[root@oldboy ~]# useradd aaa -s /sbin/nologin

useradd: group aaa exists - if you want to add this user to that group, use -g.

aaa用户组已经存在

(3)

[root@oldboy ~]# su - qzg1

This account is currently not available.

这个用户无法登录系统

25.oldboy8用户的用户名修改成oldboy888

[root@oldboy ~]# usermod -l oldboy888 oldboy8

26.创建zls用户,指定UID5001,基本组students 附加组sa,dba 注释信息:one newB user, 登陆的shell:/bin/bash

曾导博客上的题

27.linux系统存放所有用户密码信息的文件是?

/etc/shadow

28.存放用户账户信息的配置文件是?

[root@oldboy ~]# ll /etc/default/useradd

-rw-r--r--. 1 root root 119 Nov  5  2016 /etc/default/useradd

[root@oldboy ~]# ll /etc/login.defs

-rw-r--r--. 1 root root 2028 Nov  5  2016 /etc/login.defs

/etc/passwd

29.建自己姓名全拼用户,UID5000,基本组students,附加组sa,注释信息:2020 new student,登陆shell:/bin/bash

[root@oldboy ~]# groupadd students

[root@oldboy ~]# groupadd sa

[root@oldboy ~]# useradd -u 5000 -g students -G sa -c "2020 new student" -s /bin/bash qianzhigang

[root@oldboy ~]# cat /etc/passwd|tail -1

qianzhigang:x:5000:1027:2020 new student:/home/qianzhigang:/bin/bash

[root@oldboy ~]# id qianzhigang

uid=5000(qianzhigang) gid=1027(students) groups=1027(students),1028(sa)

30.建用户useroldboy,附加组bin和root,默认shell为/bin/bash,注释信息"user1_info"

[root@oldboy ~]# useradd -G bin,root -c "user1_info" -s /bin/bash  useroldboy

[root@oldboy ~]# id useroldboy

uid=5001(useroldboy) gid=5001(useroldboy) groups=5001(useroldboy),0(root),1(bin)

31.新建一个用户jack,指定uid为330

[root@oldboy ~]# useradd -u 330 jack

(1)修改jack的uid为666,用户名改为jacky

[root@oldboy ~]# usermod -u 666 jack

[root@oldboy ~]# id jack

uid=666(jack) gid=5002(jack) groups=5002(jack)

[root@oldboy ~]# usermod  -l jacky jack

[root@oldboy ~]# id jacky

uid=666(jacky) gid=5002(jack) groups=5002(jack)

(2)把jacky的密码设置为123

passwd  jacky

[root@oldboy ~]# echo "123"| passwd --stdin jacky

(3)切换控制台,用jacky帐户登录系统

[root@oldboy ~]# su - jacky

[jacky@oldboy ~]#

(4)换回控制台,用命令将jacky锁定,验证jacky能否再次登录系统,解锁后再次尝试能否登录系统

[root@oldboy ~]# usermod -L jacky

[root@oldboy ~]# usermod -U jacky

32.迁移jacky用户的家目录到/tmp/jacky

[root@oldboy ~]# usermod -md /tmp/jacky  jacky

33.批量创建10个用户,用户名为oldboy1 oldboy2 oldboy3 .... oldboy10

[root@oldboy ~]# for i in `seq 10`;do useradd oldboy$i;done

[root@oldboy ~]# echo kkk{1..10}|xargs -n1|sed -r 's#(.*)#useradd \1#g'|bash


1.创建普通用户test01、test02、test03,要求UID为888,999,998(用一条命令)

useradd  -u 888 test01

useradd  -u 999 test02

useradd  -u 998 test03

[root@oldboy ~]# echo 01 888 02 999 03 998|xargs -n2|awk '{print "useradd -u "$2" test"$1 }'|bash

2.给test01用户使用交互式设置密码为123456

[root@oldboy ~]# passwd test01

Changing password for user test01.

New password:

BAD PASSWORD: The password is shorter than 8 characters

Retype new password:

passwd: all authentication tokens updated successfully.

3.使用test01用户进行登录。

[root@oldboy ~]# su - test01

[test01@oldboy ~]#

ssh [email protected]

4.使用非交互式给test01设置密码为oldboy123

[root@oldboy ~]# echo oldboy123 |passwd --stdin test01

Changing password for user test01.

passwd: all authentication tokens updated successfully.

5.使用修改之后的密码进行登录。

[root@oldboy ~]# su - test01

[test01@oldboy ~]#

ssh [email protected]

6.有哪些命令可以查看当前用户的登录情况?

w  who 

lastlog  #登录用户日志

7.删除用户test02,要求连家目录一起删除。

[root@oldboy ~]# userdel -r test02

8.请问,我删除了test02用户,哪个文件会发生变化?

/etc/shadow

/etc/passwd

9.切换普通用户时,出现这样的命令行"-bash-4.1$",这是什么原因造成的,该怎么解决?

用户家目录下的环境变量删了

cp -a /etc/skel/.bash*  ~

10.使用root用户给test01用户设置一个18位的随机密码,并进行登录。

[root@oldboy ~]# echo $RANDOM|md5sum|cut -c 1-18|tee 1.txt|passwd --stdin test01

mkpasswd

[root@oldboy ~]# mkpasswd -l 18|tee 1.txt |passwd --stdin test01

11.创建用户qiandao,并给其用户设置一个24位的随机密码,要求密码包含数字,大小写字母及特殊符号,最后查看是否可以登录。

[root@oldboy ~]# useradd qiandao

[root@oldboy ~]# mkpasswd -l 24|tee 1.txt |passwd --stdin qiandao

12.创建10个用户,前缀是你的性名,后缀为数字序列,比如qzg1等,并给其10个用户设置统一密码为123456,最后尝试是否可以登录。

#方法一

[root@oldboy ~]# seq 10|awk '{print "useradd qzg"$1" && echo 123456|passwd --stdin"}'|bash

#方法二

[root@oldboy ~]# cat aa.sh

#!/bin/bash

name=cccc

pass=123

for a in `seq 10`

do

    useradd  ${name}${a}

    echo ${pass}|passwd --stdin ${name}${a} 

done

13.创建用户时,不指定选项设置参数了,系统创建之后的默认参数是根据什么文件来定义的?

[root@oldboy ~]# ll /etc/login.defs

[root@oldboy ~]# ll /etc/default/useradd

14.打开多个xshell窗口连接登录同一虚拟机,使用不同的用户登录多次,分别使用w和who命令显示当前系统上的所有已经登录的用户,取出用户名这一列,注意:同一个用户登录多次,则只显示一次即可。

[root@oldboy ~]# w -h|awk '{print $1}'|sort |uniq -c|sort -nrk1

      4 root

      1 www

      1 cccc1

who

15.创建10个用户,前缀是你的姓,后缀为数字序列,比如qian1等,并设置随机密码,一条命令实现(能否使用多种方法实现)

#方法一

[root@oldboy ~]# seq 10|awk '{print "useradd qianzhiigang"$1" && mkpasswd -l 12 |tee pass"$1".txt |passwd --stdin qianzhiigang" $1}'|bash

#方法二

[root@oldboy ~]# seq 10 | sed -r 's#(.*)#useradd  oldboy\1 \&\&  mkpasswd -l 12 |tee pass\1.txt |passwd --stdin oldboy\1#g'

#方法三

[root@oldboy ~]# cat aa.sh

#!/bin/bash

name=kkk

for a in `seq 10`

do

    pass=`mkpasswd -l 12`

    useradd  ${name}${a}

    echo ${pass}|passwd --stdin ${name}${a}  &>/dev/null

    echo ${name}${a}:${pass} >>2.txt

done

[root@oldboy ~]#

16.登录到test01用户,给其用户test03设置密码,发现报错,请问是什么原因?该怎么解决?

普通用户只能给自己创建密码,不能给其它用户设置密码 ,只有root可以

17.登录到test01用户,给其本用户设置密码为123,报错,请问是什么原因?该怎么解决?

普通用户给自己设置密码,必须是8位,且无序


你可能感兴趣的:(用户)