博客: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 ,表示用户属性ID;0代表系统管理员,如果你想建立一个系统管理员的话,可以建立一个普通帐户,然后将该账户的用户ID改为0即可。1-500系统预留的ID,500以上是普通用户使用。
(5) 0 , 表示组ID;和用户ID区别不大,主要是用于规范群组,与/etc/group相关
(6) root ,表示说明;一些说明性的东西,类似于用户备注,可以为空。
(7) /root , 表示用户根目录;平时我们登陆后进入的目录
(8) /bin/bash ,表示用户登陆默认使用的shell;Shell是当用户登录系统时运行的程序名称,通常是一个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 , 表示这个群组的所有账户,可以按逗号分隔添加,注意没有空格
五、用户管理命令
1、adduser 添加用户,下面演示该命令,以及查看相关文件
(1)a386396@ubuntu:~$ adduser lijinhuan
(2)a386396@ubuntu:~$ cat /etc/passed
lijinhuan:x:1003:1003:jinhuan.li,10,15113562549,5542454,sdfsd:/home/lijinhuan:/bin/bash
(3)a386396@ubuntu:~$sudo cat /etc/shadow
lijinhuan:$6$keV.WlW1$xIUXZgwmi9t/SWMf0ggg99os9Qwo9kNvJJYLeYUtkwvpqMo04V42scsM.DG7i4aHmpeM/5lRLTWA9FTF52dFY1:16384:0:99999:7:::
(4)a386396@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号。
(9)useradd可用来建立用户账号,它和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,实际上是保存在/etc/passwd文本文件中。
(10)建立一个新用户账户,并设置ID:#useradd caojh -u 544,需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0到499之间的值留给bin、mail这样的系统账号。
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且组id为1000的组
grep lijinhuan /etc/group 查看是否创建成功
2、uersadd -g group_name user_name 创建某用户并属于某组
3、使用groupsusername 查看用户属于哪个组
4、 uermod �Cg group_name user_name 更改某个用户到某组
5、usermod �CGgroup_name user_name 或者gpasswd �Ca user_name group_name;用户可以同属多个组
6、groupmod -n new_group_name old_ group_name 修改组名
7、groupdel 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命令可以创建软链接和硬链接,软链接和硬链接详细http://blog.sina.com.cn/s/blog_7781bdf501012m5n.html)。
(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来表示。使用“+”来表示添加权限、“-”表示减少权限、“=”表示授予的权限。当然使用r、w、x来表示权限。在使用的时候,可以组合使用。例如:chmod u+x testphp
(5) 2 表示硬链接数,硬链接数 一般文件创建硬链接的时候这个数值会发生变化
(6) a386396,表示文件的所属用户
(7) a386396,表示文件的所属组
(8) 4.0K ,表示文件的大小
(9) Sep 29 11:01 , 表示文件创建或者修改时间
(10) Testphp , 表示文件或者目录名称