与windows互传文件
如果我们要互传文件,先要安装一个工具,lrzsz。rz是从windiws中下载文件到linux,sz是从linux中上传文件到windows的。
linux只一个多用户的操作系统,因此我们要对每个用户账号的作用要了解,因为这涉及到安全问题。
首先我们先来了解和认识两个文件,/etc/passwd和/etc/shadow。
/etc/passwd。通常在Linux系统中,用户的关键信息被存放在系统的/etc/passwd文件中。如果要查看这个文件,我们要输入cat /etc、passwd。
[[email protected] ~]# 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
[[email protected] ~]# 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下,我们可以直接输入这个命令更改密码
[[email protected] ~]# passwd
更改用户 root 的密码 。
新的 密码:
如果想更改其他用户的密码,则要则要passwd后面加上用户名
[[email protected] ~]# passwd user1
更改用户 user1 的密码 。
新的 密码:
更改完密码我们可以发现在/etc/shadow下,user1这行中出现了一个很长的字符串,这就是我们新更改的密码
[[email protected] ~]# 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:::
如果没有密码,则是两个!
[[email protected] ~]# head -n5 /etc/shadow
root:$6$/qUNx3Dm$oVq/XUaOftBgd4XxzCAAaahh3Za4.O.xJBjol1G0pX0.A0UQjEJFDkkh43F29WZUOMvJ75z/jGfE6bebpgQ1k/:17534:0:99999:7:::
bin::17110:0:99999:7:::
daemon::17110:0:99999:7:::
adm::17110:0:99999:7:::
lp::17110:0:99999:7:::
我们还发现,有的用户 的密码位是*号,这表示这个用户的密码是被锁定的,不能登录,他的密码是有问题的。
passwd -l这个命令是可以锁定用户的,usermod -L也可以锁定用户,如果想解锁,命令是passwd -u,usermod -U。
我们也可以给用户设定密码,passwd --stdin
比如我们现在要给user2设定密码
[[email protected] ~]# passwd --stdin user2
更改用户 user2 的密码 。
19860127
passwd:所有的身份验证令牌已经成功更新。
这时我们发现只要输入一次就可以,不用验证,而且是直接显示,这会在以后shall脚本中使用。比如,echo “111222”| passwd --stdin user2
这里讲一个echo的参数,-e这时一个换行参数。
mkpasswd这是用来生成密码的工具,首先我们来安装这个工具包
[[email protected] ~]# yum install -y expect
然后输入命令,就可以产生一个随机的密码
[[email protected] ~]# mkpasswd
|br34BMxo
我们也可以自定义它的长度和密码内的字符结构(包括特殊符号,数字等)
mkpasswd -l设置密码长度,mkpasswd -s设置特殊符号,两者可以一起用
[[email protected] ~]# mkpasswd -l 10 -s 4
H:7a‘,?4zJ
通常我们写脚本的时候会用到这个,比如我们要创建100个用户,生成100个密码,而且密码不能相同。然后存到一个文本文档中。就会用到这个命令。
在搜索passwd和shadow时我们会发现这样一个现象
[[email protected] ~]# ls /etc/passwd
passwd passwd-
[[email protected] ~]# ls /etc/shadow
shadow shadow-
[[email protected] ~]# ls /etc/gshadow
gshadow gshadow-
它们的后面都有一个带-号的文件,这些带-号的文件是系统自动帮我们拷贝的文件,如果我们不小心删除,我们可以从这里拷贝恢复。他们也是有区别的,如果我们没来得及更新,那么我们新建的用户或者组就不会保存在这里了。
groupadd,这是增加组的命令。
[[email protected] ~]# groupadd grp1
[[email protected] ~]# tail -n1 /etc/group
grp1:x:1000:
这就是我们新增加的组,我们可以看到,这个新增的组的ID是1000,我们也可以给他自定义组ID,只要在后面加参数 -g
[[email protected] ~]# groupadd -g 1002 grp4
[[email protected] ~]# tail -n1 /etc/group
grp4:x:1002:
这样我们可以看出,新增的grp4的组ID就是1002。
既然我们能创建,那么我们就能删除。输入命令groupdel。
该命令没有特殊选项,但有一种情况不能删除组:
[[email protected] ~]# groupdel user1
groupdel: cannot remove the primary group of user ‘user1‘
这是因为user1组中包含user1账户,只有删除user1账户后才可以删除该组。
useradd,这是增加用户的命令。
[[email protected] ~]# useradd user1
[[email protected] ~] tail -n1 /etc/passwd
user1:x:1001:1001::/home/user1:/bin/bash
[[email protected] ~]# useradd user2
[[email protected] ~]# tail -n2 /etc/passwd
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
我们也可以给他自定义uid和gid,在后面加参数-u和-g。
[[email protected] ~]# useradd -u 1008 -g 1002 user8
[[email protected] ~]# tail -n3 /etc/passwd
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
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
然后我们查询一下
[[email protected] ~]# tail -n5 /etc/passwd
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user8:x:1008:1002::/home/user8:/bin/bash
user4:x:1006:1002::/home/aming111:/sbin/nologin
这样我们可以看到新建的user4这个用户的家目录和shall都是我们指定的了。
如果我们不想在创建用户的时候创建家目录,我们可以加参数-M
现在我们新建一个用户user5
[[email protected] ~]# useradd -M user5
[[email protected] ~]# tail -n3 /etc/passwd
user8:x:1008:1002::/home/user8:/bin/bash
user4:x:1006:1002::/home/aming111:/sbin/nologin
user5:x:1009:1009::/home/user5:/bin/bash
然后我们查询一下
[[email protected] ~]# ls /home
aming aming111 lin user1 user2 user8
我们在建立了user5的用户,虽然离里面出现了home的字符段,但是我们在查询的时候却没有出现user5的家目录,所以,只要我们不想建立用户的家目录,就加一个参数-M。
我们不仅可以增加用户和组,也可以删除用户和组。只要把add改成del,就是userdel删除用户和groupdel删除用户组。
比如我们现在要删除user8
[[email protected] ~]# tail -n3 /etc/passwd
user8:x:1008:1002::/home/user8:/bin/bash
user4:x:1006:1002::/home/aming111:/sbin/nologin
user5:x:1009:1009::/home/user5:/bin/bash
[[email protected] ~]# userdel user8
[[email protected] ~]# tail -n3 /etc/passwd
user2:x:1002:1002::/home/user2:/bin/bash
user4:x:1006:1002::/home/aming111:/sbin/nologin
user5:x:1009:1009::/home/user5:/bin/bash
通过查询,user5已经被成功的删除了。但是不能删除用户的家目录,因为系统怕这个用户的文件误删除,所以留给了管理员,如果管理员觉得这个家目录没用,那就可以删除,我们也可以在删除用户的时候直接删除家目录,只要加参数-r,这就是删除用户的命令。
更改用户属性usermod,比如我们要改变一个用户的uid
usermod -u 111 username
我们也可以改变一个组名
usermod -g (组名或者gid) username
我们也可以指定他的家目录
usermod -d /home/XX username
也可以指定shall
usermod -s /sbin/nologin username
我们也可以指定他的扩展组
usermod -G
原文地址:http://blog.51cto.com/13067688/2069194