天天看点

文件互传,用户配置文件和密码配置文件,用户以及用户组管理

与windows互传文件

如果我们要互传文件,先要安装一个工具,lrzsz。rz是从windiws中下载文件到linux,sz是从linux中上传文件到windows的。

linux只一个多用户的操作系统,因此我们要对每个用户账号的作用要了解,因为这涉及到安全问题。           

首先我们先来了解和认识两个文件,/etc/passwd和/etc/shadow。

/etc/passwd。通常在Linux系统中,用户的关键信息被存放在系统的/etc/passwd文件中。如果要查看这个文件,我们要输入cat /etc、passwd。

[root@localhost ~]# cat /etc/passwd | head -3(| head -3这是一个管道命令)

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

从这里我们可以看出一个账户的信息,它被:分割成7段,每段都有不同的意义。

第一段:用户名

第二段:用户密码,在以前的unix系统中,这里确实是存放在这里,但基于安全因素,后来就将其存放到 ‘/etc/shadow’ 中了,在这里只用一个 ‘x’ 代替。

第三段:这是用户的标识,也叫uid。root的标识是0,前1~499号的标识被系统保留,普通用户的标识是从500开始的,如果我们自定义一个普通用户,那么你会看到他的标识号是大于或者等于500的。

第四段:这是用户组的标识,也叫gid,这个字段对应着etc/group中的一条记录,与/etc/passwd基本相似。

第五段: 注释说明,该字段没有实际意义,通常记录该用户的一些属性,例如姓名、电话、地址等等。不过,当你使用finger的功能时就会显示这些信息的.

第六段:用户的家目录。

第七段:shell, 用户登录后要启动一个进程,用来将用户下达的指令传给内核,这就是shell, 查看/etc/passwd文件,该字段中除了/bin/bash外还有/sbin/nologin比较多,它表示不允许该账号登录。如果你想建立一个账号不让他登录,那么就可以把该字段改成/sbin/nologin,默认是/bin/bash。

/etc/shadow。这是一个储存用户密码的文件,如果要查看,我们要输入cat /etc/shadow | head -3            

[root@localhost ~]# cat /etc/shadow | head -3

root:$6$/qUNx3Dm$oVq/XUaOftBgd4XxzCAAaahh3Za4.O.xJBjol1G0pX0.A0UQjEJFDkkh43F29WZUOMvJ75z/jGfE6bebpgQ1k/:17534:0:99999:7:::

bin::17110:0:99999:7:::

daemon::17110:0:99999:7:::

我们可以看出,它也是被:分割,一共有9个字段。

第二段:这才是真正的密码,经过特殊加密,所以很长。

第三段: 上次更改密码的日期,这个数字是这样计算得来的,距离1970年1月1日到上次更改密码的日期,例如上次更改密码的日期为2012年1月1日,则这个值就是 ‘365 x (2012-1970) + (2012-1970)/4 + 1 = 15341’. 因为如果是闰年,则有366天

第四段:要经过多少天改密码,如果是0,则不用更改。

第五段: 密码多少天后到期。即在多少天内必须更改密码,例如这里设置成x,则x天内必须更改一次密码,否则将不能登录系统,默认是99999,可以理解为永远不需要改。

第六段: 密码到期前的警告期限,若这个值设置成x,则表示当x天后密码过期时,系统就发出警告告诉用户,提醒用户他的密码将在x天后到期。

第七段: 账号失效期限。你可以这样理解,如果设置这个值为x,则表示:密码已经到期,然而用户并没有在到期前修改密码,那么再过x天,则这个账号就失效了,即锁定了

第八段: 账号的生命周期,跟第三段一样,是按距离1970年1月1日多少天算的。它表示的含义是,账号在这个日期前可以使用,到期后账号作废

第九段: 作为保留用的,没有什么意义。

passwd是更改用户密码的文件,如果在root下,我们可以直接输入这个命令更改密码           

[root@localhost ~]# passwd

更改用户 root 的密码 。

新的 密码:

如果想更改其他用户的密码,则要则要passwd后面加上用户名

[root@localhost ~]# passwd user1

更改用户 user1 的密码 。

更改完密码我们可以发现在/etc/shadow下,user1这行中出现了一个很长的字符串,这就是我们新更改的密码

[root@localhost ~]# tail -n5 /etc/shadow

chrony:!!:17514::::::

user1:$6$0DixvaM8$3Q/d2IFN8jOvyma9By8UZPkRNVLaqDj.AQwOTFaRxiRZ3d.JDv7dHh7QR9fnlUpiQT8ALuQP.461OzckySSLo.:17548:0:99999:7:::

user2:!!:17547:0:99999:7:::

user8:!!:17547:0:99999:7:::

user4:!!:17548:0:99999:7:::

如果没有密码,则是两个!

[root@localhost ~]# head -n5 /etc/shadow

adm::17110:0:99999:7:::

lp::17110:0:99999:7:::

我们还发现,有的用户 的密码位是*号,这表示这个用户的密码是被锁定的,不能登录,他的密码是有问题的。

passwd -l这个命令是可以锁定用户的,usermod -L也可以锁定用户,如果想解锁,命令是passwd -u,usermod -U。

我们也可以给用户设定密码,passwd --stdin

比如我们现在要给user2设定密码

[root@localhost ~]# passwd --stdin user2

更改用户 user2 的密码 。

19860127

passwd:所有的身份验证令牌已经成功更新。

这时我们发现只要输入一次就可以,不用验证,而且是直接显示,这会在以后shall脚本中使用。比如,echo “111222”| passwd --stdin user2

这里讲一个echo的参数,-e这时一个换行参数。

mkpasswd这是用来生成密码的工具,首先我们来安装这个工具包

[root@localhost ~]# yum install -y expect

然后输入命令,就可以产生一个随机的密码

[root@localhost ~]# mkpasswd

|br34BMxo

我们也可以自定义它的长度和密码内的字符结构(包括特殊符号,数字等)

mkpasswd -l设置密码长度,mkpasswd -s设置特殊符号,两者可以一起用

[root@localhost ~]# mkpasswd -l 10 -s 4

H:7a',?4zJ

通常我们写脚本的时候会用到这个,比如我们要创建100个用户,生成100个密码,而且密码不能相同。然后存到一个文本文档中。就会用到这个命令。

在搜索passwd和shadow时我们会发现这样一个现象           

[root@localhost ~]# ls /etc/passwd

passwd passwd-

[root@localhost ~]# ls /etc/shadow

shadow shadow-

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

gshadow gshadow-

它们的后面都有一个带-号的文件,这些带-号的文件是系统自动帮我们拷贝的文件,如果我们不小心删除,我们可以从这里拷贝恢复。他们也是有区别的,如果我们没来得及更新,那么我们新建的用户或者组就不会保存在这里了。

groupadd,这是增加组的命令。

[root@localhost ~]# groupadd grp1

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

grp1:x:1000:

这就是我们新增加的组,我们可以看到,这个新增的组的ID是1000,我们也可以给他自定义组ID,只要在后面加参数 -g

[root@localhost ~]# groupadd -g 1002 grp4

grp4:x:1002:

这样我们可以看出,新增的grp4的组ID就是1002。

既然我们能创建,那么我们就能删除。输入命令groupdel。

该命令没有特殊选项,但有一种情况不能删除组:

[root@localhost ~]# groupdel user1

groupdel: cannot remove the primary group of user 'user1'

这是因为user1组中包含user1账户,只有删除user1账户后才可以删除该组。

useradd,这是增加用户的命令。

[root@localhost ~]# useradd user1

[root@localhost ~] tail -n1 /etc/passwd

user1:x:1001:1001::/home/user1:/bin/bash

[root@localhost ~]# useradd user2

[root@localhost ~]# tail -n2 /etc/passwd

user2:x:1002:1002::/home/user2:/bin/bash

我们也可以给他自定义uid和gid,在后面加参数-u和-g。

[root@localhost ~]# useradd -u 1008 -g 1002 user8

[root@localhost ~]# tail -n3 /etc/passwd

user8:x:1008:1002::/home/user8:/bin/bash

这样在gup4的组中就有user2和user8这两位用户了。

我们还可以指定自定义用户的家目录,和指定的shall,指定家目录的参数是-d,指定shall的参数是-s。

比如我们现在要新建一个用户user4,家目录设定为aming111,shall设定为/sbin/nologin

useradd -u 1006 -g 1002 -d /home/aming111 -s /sbin/nologin user4

然后我们查询一下

[root@localhost ~]# tail -n5 /etc/passwd

chrony:x:998:996::/var/lib/chrony:/sbin/nologin

user4:x:1006:1002::/home/aming111:/sbin/nologin

这样我们可以看到新建的user4这个用户的家目录和shall都是我们指定的了。

继续阅读