博客:http://lijinhuan.blog.51cto.com/

微博:http://weibo.com/lijinhuanexperience

微信:xiaoleetongxue

一、用户账号登陆与验证原理:

    当我们连接登陆linux主机并输入账号密码时,linux首先会去/ect/passwd文件查找

当前尝试登陆用户的ID,如果能在/ect/passwd文件中查找到,则从该文件中读出该账号的user ID group ID 。同时该账号的和根目录和shell也会读出来。接着会到/etc/shadow中根据刚才的获取到的信息进行密码信息查找,当系统从/etc/shadow中获取到密码后会和当前用户输入的密码进行核对,成功后则登陆当前用户shell

 

二、执行a386396@ubuntu:~$ cat /etc/passwd/etc/passwd文件如下(省略了部分)

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

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

sys:x:3:3:sys:/dev:/bin/sh

sync:x:4:65534:sync:/bin:/bin/sync

a386396:x:1000:1000:ubuntu,,,:/home/a386396:/bin/bash

sshd:x:115:65534::/var/run/sshd:/usr/sbin/nologin

mysql:x:1001:1001::/home/mysql:/sbin/nologin

www:x:1002:1002::/home/www:/sbin/nologin

redis:x:116:125:redis server,,,:/var/lib/redis:/bin/false

 

   1、  root:x:0:0:root:/root:/bin/bash为例

    (1)      每个:号表示一个分隔,下面从左到右说明

    (2)      root 表示账号名称;帐号名称由于对应用户ID,这个是系统默认用户root超级管理员,在同一个系统帐号名称是唯一的,长度根据不同的linux系统而定,一般是8位。

    (3)      x 表示该账号的密码;由于系统中还有一个/etc/shadow文件用于存放加密后的口令,所以在这里这一项是“x”来表示,如果用户没有设置口令,则该项为空。如果passwd字段中的第一个字符是“*”的话,那么,就表示该账号被查封了,系统不允许持有该账号的用户登录。

    (4)      0 ,表示用户属性ID0代表系统管理员,如果你想建立一个系统管理员的话,可以建立一个普通帐户,然后将该账户的用户ID改为0即可。1-500系统预留的ID500以上是普通用户使用。

    (5)      0 表示组ID;和用户ID区别不大,主要是用于规范群组,与/etc/group相关

    (6)      root ,表示说明;一些说明性的东西,类似于用户备注,可以为空。

    (7)      /root 表示用户根目录;平时我们登陆后进入的目录

    (8)      /bin/bash ,表示用户登陆默认使用的shellShell是当用户登录系统时运行的程序名称,通常是一个Shell程序的全路径名  

   

 

 

三、/etc/shadow 密码文件,执行a386396@ubuntu:~$sudo cat /etc/shadow,结果如下

root:!:16154:0:99999:7:::

daemon:*:15455:0:99999:7:::

bin:*:15455:0:99999:7:::

saned:*:15455:0:99999:7:::

sshd:*:16154:0:99999:7:::

mysql:!:16156:0:99999:7:::

www:!:16156:0:99999:7:::

redis:!:16244:0:99999:7:::

 

     1、  该文件保存了所有用户的密码信息,因此只有管理员权限才能读写,所以千万不能泄露该文件。早期的linux系统是把用户密码也存在passwd文件的,但是这样子安全性不是很高,后面才采取了这种办法。

     2、  root:!:16154:0:99999:7:::为例,从左到右说明,按:号分隔。

    (1)      root 表示账号名称;

    (2)      ! 该字段表示密码;该密码是经过特殊加密的,安全性很高,但也是可以破解的。如果密码栏的第一个字符为“*”表示这个用户不用来登录,若你不想该用户登陆,加个星即可。第一个字符为“!”号表示该用户被禁用,一般新创建的账号后还未设置密码该账号就是禁用状态,使用“!!”表示;第一个字符为“空”的话,代表该用户没有口令,登录时不需要口令。

    (3)      16154,表示上次改动密码的日期;时间戳

    (4)      0 表示几天后可以修改密码;0表示随时都可以修改

    (5)      99999 表示经过几天后,密码需要修改;99999,表示密码不需要重新输入,最好设定一段时间修改密码。确保系统安全。

    (6)      7 表示距离密码还差多少天到期要发出的警告;假如现在还有7天就要密码过期了,系统会发出:“你的密码将在7天后过期,请及时修改”的类似警告。

    (7)      ::: 分表表示 帐号失效期,账号取消日期和保留字段

  

四、/etc/group 群组文件,执行a386396@ubuntu:~$cat /etc/group,结果如下

    root:x:0:

daemon:x:1:

bin:x:2:

sys:x:3:

adm:x:4:a386396,xiaolee

disk:x:6:

 

     1、以adm:x:4:a386396, xiaolee为例,从左到右说明,以:号为分隔

    (1)      adm表示群组名称

    (2)      x 表示群组密码,一边不需要设置,因为我们很少需要群组使用密码登陆

    (3)      4 群组ID

    (4)      a386396, xiaolee 表示这个群组的所有账户,可以按逗号分隔添加,注意没有空格

五、用户管理命令

     1adduser 添加用户,下面演示该命令,以及查看相关文件

       1a386396@ubuntu:~$ adduser lijinhuan

       2a386396@ubuntu:~$ cat /etc/passed

lijinhuan:x:1003:1003:jinhuan.li,10,15113562549,5542454,sdfsd:/home/lijinhuan:/bin/bash

3a386396@ubuntu:~$sudo cat /etc/shadow

lijinhuan:$6$keV.WlW1$xIUXZgwmi9t/SWMf0ggg99os9Qwo9kNvJJYLeYUtkwvpqMo04V42scsM.DG7i4aHmpeM/5lRLTWA9FTF52dFY1:16384:0:99999:7:::

4a386396@ubuntu:~$cat /etc/group

lijinhuan:x:1003:

       (5)      其实adduser这条命令是通过/etc/login.defs/etc/default/useradd这两个默认帐号设定文件来实现创建用户时用户的基本设置的

       (6)      useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。

       (7)      格式:useradd [d home] [s shell] [c comment] [m [k template]] [f inactive] [e expire ] [p passwd] [r] name

       8)主要参数

c:加上备注文字,备注文字保存在passwd的备注栏中。 

d:指定用户登入时的启始目录。

D:变更预设值。

e:指定账号的有效期限,缺省表示永久有效。

f:指定在密码过期后多少天即关闭该账号。

g:指定用户所属的群组。

G:指定用户所属的附加群组。

m:自动建立用户的登入目录。

M:不要自动建立用户的登入目录。

n:取消建立以用户名称为名的群组。

r:建立系统账号。

s:指定用户登入后所使用的shell

u:指定用户ID号。

 

9useradd可用来建立用户账号,它和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,实际上是保存在/etc/passwd文本文件中。

10)建立一个新用户账户,并设置ID:#useradd caojh u 544,需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0499之间的值留给binmail这样的系统账号。

    2、  Passwd ,修改用户密码

    用法:passwd 用户名

     

    3、  su 用户,切换用户

     

    4、  userdel -r userid 删除用户,加上-r可以把宿主目录一起删除掉

     

    如果发现提示用户正在登陆,可以强制其退出,kill掉进程,然后重新删除

     

    5、  usermod 修改用户

    (1)      使用:usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]

    (2)      参数

    -c<备注>  修改用户帐号的备注文字。

    -d登入目录>  修改用户登入时的目录。

    -e<有效期限>  修改帐号的有效期限。

    -f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。

    -g<群组>  修改用户所属的群组。

    -G<群组>  修改用户所属的附加群组。

    -l<帐号名称>  修改用户帐号名称。

    -L  锁定用户密码,使密码无效。

    -s<shell> 修改用户登入后所使用的shell

    -u<uid> 修改用户ID

    -U  解除密码锁定。

               3)应用:

                      1)、将 newuser2 添加到组 staff

    # usermod -G staff newuser2

    2)、修改 newuser 的用户名为newuser1

    # usermod -l newuser1 newuser

    3)、锁定账号 newuser1

    # usermod -L newuser1

    4)、解除对 newuser1 的锁定

    # usermod -U newuser1

     

      

六、用户组管理

     1、单groupadd [-g gid[-o]] [-r] [-f] group独创建用户组

        如:groupadd lijinhuan        创建组名为lijinhuan的组

        groupadd -g 1000 lijinhuan 创建组名为lijinhuan且组id1000的组

        grep lijinhuan /etc/group 查看是否创建成功

     2uersadd -g group_name user_name 创建某用户并属于某组

     3、使用groupsusername 查看用户属于哪个组

     4  uermod –g group_name user_name 更改某个用户到某组

     5usermod –Ggroup_name user_name 或者gpasswd –a user_name group_name;用户可以同属多个组

     6groupmod -n  new_group_name old_ group_name 修改组名

     7groupdel group_name 删除组

 

 

七、文件目录属性与权限

    1、文件目录属性查看

    a386396@ubuntu:~$ ls -alh

    total 139M

    -rw-r--r--  1 a386396 a3863963.5K Mar 25  2014 .bashrc

    drwx------ 16 a386396 a386396 4.0K Mar 25  2014 .cache

    drwx------ 11 a386396 a386396 4.0K Mar 25  2014 .config

    drwx------  3 a386396 a3863964.0K Mar 25  2014 .dbus

    drwxr-xr-x  2 a386396 a3863964.0K Mar 25  2014 Desktop

    -rw-rw-r--  1 a386396a386396   44 Nov 11 10:59 test.log

    drwxrwxr-x  2 a386396 a3863964.0K Sep 29 11:01 testphp

    

     drwxrwxr-x  2 a386396 a3863964.0K Sep 29 11:01 testphp为例子分析

    (1)      drwxrwxr-x 表示文件类型和文件权限;第一个字符为文件类型标识,后面9个为权限标识。第一个字符d,表示目录。(如果是-则表示普通文件,b表示块设备,c表示块设备l表示符号链接,通过ln命令可以创建软链接和硬链接,软链接和硬链接详细)。

    (2)      drwxrwxr-x中的rwxrwxr-x表示文件权限属性;linux文件的权限标志位共九个,分为3组,分别代表文件拥有者的权限(rwx),文件所属用户组的权限(rwx)和其它用户的权限(r-x)。

    权限表示:w(可写,对应数字2),r(可读,对应数字4),x(可执行,对应数字1),-(无权限,对应数字0

    (3)      chmod 修改权限。

    如:chmod 755 testphp 改为创建者拥有读写可执行,组和其他用户有读可执行权限

    -R参数表示同时修改目录和子目录中所有文件的权限

    (4)      助记语法中将属主(user)使用u表示、属组(group)使用g表示、其它用户(other)使用o来表示,而所有人(all)使用a来表示。使用“+”来表示添加权限、“-”表示减少权限、“=”表示授予的权限。当然使用rwx来表示权限。在使用的时候,可以组合使用。例如:chmod u+x testphp

    (5)      2 表示硬链接数,硬链接数 一般文件创建硬链接的时候这个数值会发生变化

    (6)      a386396,表示文件的所属用户

    (7)      a386396,表示文件的所属组

    (8)      4.0K ,表示文件的大小

    (9)      Sep 29 11:01 表示文件创建或者修改时间

    (10)  Testphp 表示文件或者目录名称