一,用户配置文件和密码配置文件
认识/etc/passwd和/etc/shadow
这两个文件可以说是Linux系统中最重要的文件之一。如果没有这两个文件或者这两个文件出了问题,则无法正常登录系统。
1., 解说用户配置文件/etc/passwd
注:每创建一个用户都会在这个文件里面增加一行记录。
[root[@localhost](https://my.oschina.net/u/570656) ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
.......//上面代码是前一行,下面代码是最后两行(我自己创建的用户),中间这省略的部分是当我们安装完系统之后自动存在的用户。
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1001:1002::/home/user2:/bin/bash
代码说明: 每行记录代表一个用户。每个用户分为7个字段(用:分割为7段)。
第一段为用户名(如第一行中的root就是用户名),它代表用户账号的字符串。用户名中的字符可以是大小写字母,数字,减号(不能出现在首位),点或下划线,其他字符不合法。虽然用户名中可以出现点,但不建议使用,尤其是首位。另外,减号不建议使用,容易混淆。
第二段存放的是该账号的口令。这里为什么是x呢?早期的Unix系统口令确实存放在这里,但基于安全因素,后来存放在/etc/shadow中(下面会详细介绍/etc/shadow文件),这里用x代替。
第三段为一个数字,这个数字代表用户标识列,也称为uid(它属于一个组,组id是第四段)。系统就是通过这个数字识别用户身份的。这里的0就是root,也就是说我们可以修改user1用户的uid为0,那么系统会认为root和test为同一个账户。uid的取值范围是0-65535(但实际上已经可以支持到4294967294),0代表超级用户(root)的标识列,Centos7的普通用户标识号从1000开始。
第四段也是数字,表示组标识号,也称为gid。这个字段对应着/etc/group中的一条记录,其实/etc/group和/etc/passwd基本类似。
第五段为注释说明没有实际的意义。通常记录该用户的一些属性,例如姓名,电话,地址等。我们可以使用chfn命令来更改这些信息。
第六段是用户的家目录,当用户登陆时,就处在这个目录下。root的家目录是/root,普通用户的家目录是/home/username。用户家目录是可以自定义的。比如,建议一个普通用户test1,要想让test1的家目录在/data目录下,只要将/etc/passwd文件中对应该用户那行中的本字段修改为/data即可。
第七段为用户的shell。用登录后,要启动一个进程,用来将用户下达的指令传给内核,这就是shell。Linux的shell有sh,sch,ksh,tcsh,bash等多种,而RedHat/CentOS的shell就是bash。查看/etc/passwd文件,该字段中除了/bin/bash,还有很多/sbin/nologin,默认是/bin/bash。
2.,解说密码配置文件/etc/shadow
注:这个文件是专门用来控制用户的密码的。
[root[@localhost](https://my.oschina.net/u/570656) ~]# cat /etc/shadow |head -n 3 //head -n3 表示前3行数据,|表示管道符,它的作用是把前面的命令的输出在输入给后面的命令。
root:$6$o5XXMECZgVxLG.lh$fQueq1w3ZSgWXQU0kDpjcHYNz6kNOc9ZgZAc3lyouDA1wUM32q9OGkgktV.GmHqQZwxqC27Radb6Ab042In2k.::0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
代码说明:每行记录代表一个用户。每个用户分为9个字段(用:分割为9段)。
第一段为用户名,与/etc/passwd对应。
第二段为用户密码,是该账号的真正密码。这个密码已经加密,为了防止黑客解密。所以,将该文件属性设置为000,但root账户是可以访问或更改的。使用命令ls -l查看该文件的权限,示例命令如下: [root@localhost ~]# ls -l /etc/shadow ----------. 1 root root 693 10月 25 23:23 /etc/shadow
第三段为上次更改密码的日期,这个数字以1970年1月1日和上次更改密码的日期为基准计算而来的。例如,上次更改密码的日期为2012年1月1日,则这个值就是 365*(2012-1970)+(2012-1970)/4+1=15341。如果是闰年,则有366天。
第四段为要过多少天才可以更改密码,默认是0,即不受限制。
第五段为密码多少天后到期,即在多少天内必须更改密码,例如,这里设置为30,则30天内必须更改一次密码;否则,将不能登录系统。默认是99999,可以理解为永久不更改密码。
第六段为密码到期前的警告期限。若这个值设置成7,则表示当7天后密码过期时,系统就发出警告,提醒用户他的密码将在7天后到期。
第七段为账号失效期限。如果这个值设置成3,则表示密码以及过期,然而用户并没有在到期前修改密码,那么再过3天,这个账号便失效,即锁。
第八段为账号的生命周期,跟第三段一样,这个周期是按距离1970年1月1日算起。它表示,账号在这个日期前可以使用,到期后账号将作废。
第九段作为保留用的,没有什么意义。
二,用户组管理
1. 用户组文件/etc/group
[root[@localhost](https://my.oschina.net/u/570656) ~]# tail -n3 /etc/group //查看/etc/group下最后三行的数据
testgroup:x:1001:
user2:x:1002:
grp1:x:1003:
说明: 输出的结果与/etc/passwd的前三行相同。请参照前一张的博文/etc/passwd的前三行。
2. 用户备份说明
输入完命令,别回车,用Tab补全,会显示以下效果
[root[@localhost](https://my.oschina.net/u/570656) ~]# ls /etc/shadow //密码配置文件
shadow shadow-
[root@localhost ~]# ls /etc/passwd //用户配置文件
passwd passwd-
[root@localhost ~]# ls /etc/group //用户组文件
group group-
[root@localhost ~]# ls /etc/gshadow //用户组密码配置文件
gshadow gshadow-
说明:这里的group-,passwd-,代表该文件的备份文件,如果删除了用户或该文件,用其恢复。
3. 新增和删除用户组
命令语法
groupadd [-g GID] groupname
命令描述
新增用户组
命令选项
-g 自定义gid。如果不加-g选项,则按照系统默认的gid创建组。跟uid一样,gid也是从1000开始的。
命令示例
- 创建用户组
[root@localhost ~]# groupadd grpp1 //创建用户组
[root@localhost ~]# tail -n1 /etc/group //查看用户组文件(group)的最后一行。(默认情况下每创建用户组,会在group文件的最后一行添加一行数据)。
grpp1:x:1004: //参照/etc/passwd的前三行解释
- 在创建用户组的同时,自定义gid(gid必须在1000以上,1000以内的是系统用户组)
[root@localhost ~]# groupadd -g 6666 grpp2
[root@localhost ~]# tail -n1 /etc/group
grpp2:x:6666:
- 删除用户组(groupdel)
[root@localhost ~]# groupdel grpp2
[root@localhost ~]# tail -n3 /etc/group
user2:x:1002:
grp1:x:1003:
grpp1:x:1004:
从代码中可以看出,grpp2已经被删除了。
注意:当我们删除用户组的时候,前提是用户组里没有用户。
三.用户管理
1. 增加用户
命令语法
useradd [-u UID] [-g GID] [-d HOME] [-M] [-s]
命令描述
添加用户
命令选项
-u 表示自定义UID。
-g 表示使新增用户属于已经存在的某个组,后面可以跟组id,也可以跟组名。
-d 表示自定义用户的家目录
-M 表示不建议家目录。
-s 表示自定义shell。
命令示例
- 创建用户
[root@localhost ~]# tail -n2 /etc/passwd
user2:x:1001:1002::/home/user2:/bin/bash
dd1:x:1002:1004::/home/dd1:/bin/bash
- 创建用户的同时自定义uid,自定义用户组(grp1)
[root@localhost ~]# tail -n 3 /etc/group
user2:x:1002:
grp1:x:1003:
dd1:x:1004:
[root@localhost ~]# useradd -u 1005 -g grp1 user4 //-u 1005 指定uid为1005,-g grp1 指定us er4用户属于grp1用户组,user4 用户
[root@localhost ~]# tail -n3 /etc/passwd
user2:x:1001:1002::/home/user2:/bin/bash
dd1:x:1002:1004::/home/dd1:/bin/bash
user4:x:1005:1003::/home/user4:/bin/bash //用户user4和grp1用户组的gid相同。
- 添加用户的同时,指定uid(-u),指定用户组(-g),指定家目录(-d),指定shell(-s)。
[root@localhost ~]# ls /home
dd1 user1 user2 user4
[root@localhost ~]# useradd -u 1010 -g grp1 -d /home/dd1 -s /sbin/nologin user5 //创建user5 的uid为1010,用户组为grp1,家目录为/home/dd1,shell为sbin/nlogin
[root@localhost ~]# tail -n3 /etc/passwd
dd1:x:1002:1004::/home/dd1:/bin/bash
user4:x:1005:1003::/home/user4:/bin/bash
user5:x:1010:1003::/home/dd1:/sbin/nologin // /sbin/nologin 这个shell意思是不让这用户登录。
- 创建用户的同时,不建立用户的家目录
[root@localhost ~]# useradd -M user11
[root@localhost ~]# tail -n3 /etc/passwd
user4:x:1005:1003::/home/user4:/bin/bash
user5:x:1010:1003::/home/dd1:/sbin/nologin
user11:x:1011:1011::/home/user11:/bin/bash //可以看出家目录为/home/user11,这个家目录只是没有创建
[root@localhost ~]# ls /home/
dd1 user1 user2 user4 //可以看出没有user11
- 当我们创建一个用户组并指定gid为1010的时候,那么当我们创建用户的时候用户的用户的uid会自增。
[root@localhost ~]# groupadd -g 1010 grp10
[root@localhost ~]# useradd -g grp10 user12
[root@localhost ~]# useradd user13
[root@localhost ~]# tail -n5 /etc/passwd
user4:x:1005:1003::/home/user4:/bin/bash
user5:x:1010:1003::/home/dd1:/sbin/nologin
user11:x:1011:1011::/home/user11:/bin/bash
user12:x:1012:1010::/home/user12:/bin/bash
user13:x:1013:1013::/home/user13:/bin/bash
2.删除用户
- 删除用户。当我们删除用户的时候,默认不会删除用户的家目录
[root@localhost ~]# userdel user13
[root@localhost ~]# tail -n5 /etc/passwd
dd1:x:1002:1004::/home/dd1:/bin/bash
user4:x:1005:1003::/home/user4:/bin/bash
user5:x:1010:1003::/home/dd1:/sbin/nologin
user11:x:1011:1011::/home/user11:/bin/bash
user12:x:1012:1010::/home/user12:/bin/bash
[root@localhost ~]# ls /home
dd1 user1 user12 user13 user14 user2 user4
代码说明:可以看出当我们删除user13的时候,/etc/passwd的user13的数据被删除了,但是它的家目录user13默认没有删除,需要自己删除user13的家目录。
- 删除用户的同时删除用户的家目录
[root@localhost ~]# userdel -r user12 //使用-r选项
[root@localhost ~]# tail -n5 /etc/passwd
user2:x:1001:1002::/home/user2:/bin/bash
dd1:x:1002:1004::/home/dd1:/bin/bash
user4:x:1005:1003::/home/user4:/bin/bash
user5:x:1010:1003::/home/dd1:/sbin/nologin
user11:x:1011:1011::/home/user11:/bin/bash
[root@localhost ~]# ls /home
dd1 user1 user14 user2 user4
四,Linux和windows互传文件
lrzsz是一款在linux里可代替ftp上传和下载的程序。
进程名称
lrzsz
进程描述
在linux里可代替ftp上传和下载。
使用方法
centos服务器,可直接yum -y install lrzsz 程序会自动安装好,然后如你要下载者sz [找到你要下载的文件] 如果你要上传,者rz 浏览找到你本机要上传的文件。需要注意的事这个命令无法在putty界面使用哦!、
- 把Linux的文件传到Windows下:
- #sz 文件名 (然后回车)
- 会弹出一个对话框,选择文件地址,然后确定。
- 把Windows的文件传到Linux下:
- #rz 文件名 (然后回车)
- 会弹出一个对话框,选择文件地址,然后确定。 注意: 从Windows传到Linux上的文件,默认地址放到当前目录下。