首页 运维 网络学院 查看内容

linux那点事儿(四)----用户管理详解

2012-5-15 09:43 446 0

摘要: 用户管理----用户信息与密码的配置文件                       &n...
关键词: nbsp 用户 root 密码 文件 localhost 权限 lisi passwd 命令

用户管理----用户信息与密码的配置文件                                                                                                               用户管理要学的内容很多,当然了,不会简单的放两个创建用户的命令,这样的文章太多了。我们来看两个用户管理中非常重要的配置文件吧!      我们来看看用户的相关配置文件都存放在什么地方。 用户信息文件:      /etc/passwd 密码文件:            /etc/shadow 用户组文件:        /etc/group 用户组密码文件: /etc/gshadow 用户配置文件:  www.2cto.com      /etc/login.defs    /etc/default/useradd 新用户信息文件:/etc/skel 登录信息:          /etc/motd   ========================用户信息文件详解============================================ 我们先看一下用户信息文件里都放的什么   [root@localhost ~]#  vi   /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news:/sbin/nologin ........ 每一行内容存放一个用户的信息,每个用户信息有7部分组成 root:x:0:0:root:/root:/bin/bash root        用户名         用户登录系统时使用的用户名 x             密码            密码位 2             UID            用户标识号 2             GID            缺省组标识 root     注释性描述      例如存放用户全名等信息 /root         宿主目录       用户登录系统后的缺省目录 /bin/bash   命令解释器    用户使用的Shell ,默认为bash   UID ?      关于上面的UID这里细说一下,其实决定用户是什么权限,是由UID号决定的。      linux用户分为三种: 超级用户:(root   UID=0) 普通用户: (UID 500~60000) 伪用户:  (UID  1~499)     所以,我们可以修改用户的UID号来修改用户的类型,如果把root的UID号为500,那么root就变成了普通用户,如果把fnngj用户的UID改为0,那么它就拥有了root用户的超能力。  www.2cto.com   [root@localhost ~]#  vi   /etc/passwd   进入之后修改,完了保存退出就OK了。   伪用户?      说到用户种类,又牵扯到一个伪用户,那么伪用户是干什么用的? 1.伪用户与系统和程序服务相关     bin、daemon、shutdown、halt等,任何Linux系统默认都有这些伪用户。     mail、news、games、apache、ftp、mysql及sshd等,与linux系统的进程相关。 2. 伪用户通常不需要或无法登录系统 3. 可以没有宿主目录   ==========================密码文件详解========================================        用户密码文件,用户信息文件中留有密码位,为什么没密码了呢?其实,最早的linux这个位置真的是放密码的,因为不全安,所以,就将密码单独存放了,现在只是用x表示这里有存放密码的位置。     为什么要把密码放在/etc/shadow中   [root@bogon /]# ls -l /etc/shadow     -r--------  1 root root 1021  2月 27 21:31 /etc/shadow          我可以看到这个文件只有管理员root有权限查看修改   现在我们来看密码文件都放了什么? [root@bogon /]# more /etc/shadow root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:15391:0:99999:7::: bin:*:15391:0:99999:7::: daemon:*:15391:0:99999:7::: adm:*:15391:0:99999:7::: lp:*:15391:0:99999:7::: sync:*:15391:0:99999:7::: shutdown:*:15391:0:99999:7::: halt:*:15391:0:99999:7::: mail:*:15391:0:99999:7::: news:*:15391:0:99999:7::: uucp:*:15391:0:99999:7::: operator:*:15391:0:99999:7::: games:*:15391:0:99999:7::: ..........................   我们还以第一行为例进行分解。 root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:15391:0:99999:7::: root              用户名       用户登录系统时使用的用户名 $1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.    密码     加密密码   MD5 15391     最后一次修改时间    linux这里以1970年1月1日作为1,1971年1月1日就是366,依次类推到我修改密码的日期表示为15391了。 0         最小时间间隔           这个字段代表要经过多久才可以更改密码。如果是“0”表密码可以随时更改。 99999         最大时间间隔           于害怕密码被人盗取而危害到整个系统的安全,所以安排了这个字段,你必须在这个时间内重新修改密码,否则这个帐号将暂时失效。上面的99999,表示密码不需要重新输入,最好设定一段时间修改密码。确保系统安全 7         密码变更期期限快到前的警告期:当帐号的密码失效期限快到时,系统依据这个字段的设定发出警告,提醒用户“再过n天您的密码将过期,请尽快重新设定密码。默认的是七天。 帐号失效期:     如果用户过了警告期没有重新输入密码,使得密码失效,而该用户在这个字段限定的时间内又没有向管理员反映,让帐号重新启用,那么这个帐号将暂时失效。 帐号取消日期:  这个日期跟第三个字段一样,都是使用1970年以来的日期设定方法。这个字段表示:这个帐号在此字段规定的日期之后将无法再使用。这个字段通常用于收费服务系统中,可以规定一个日期让该帐号不能再使用。 保留:     最后一个字段是保留的,看以后有没有新功能加入。   疑问:既然shadow文件保存了密码,而passwd文件中没有保存密码,为什么不把passwd文件中的密码位取消掉呢?  www.2cto.com        其实,密码在存放之前,是先放在passwd文件中的,然后再转换到shadow文件中的。下面来验证下 [root@bogon /]# grep root /etc/passwd  /etc/shadow /etc/passwd:root:x:0:0:root:/root:/bin/bash /etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin /etc/shadow:root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:15391:0:99999:7:::   [root@bogon /]# pwunconv      将密码回写 [root@bogon /]# grep root /etc/passwd  /etc/shadow /etc/passwd:root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:0:0:root:/root:/bin/bash /etc/passwd:operator:*:11:0:operator:/root:/sbin/nologin grep: /etc/shadow: 没有那个文件或目录   [root@bogon /]# pwconv     转换到shdow文件中,只不过平时这个动作平时由linux自动完成。 [root@bogon /]# grep root /etc/passwd  /etc/shadow /etc/passwd:root:x:0:0:root:/root:/bin/bash /etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin /etc/shadow:root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:15456:0:99999:7:::          linux对用户登录的验证就是通passwod文件来验证用户名是否存在,然后通过shadow文件来验证用户名对应的密码是否正确,那么理解了底层东西很有必要,我们可以不需要去学习创建用户命令,真接通过vim命令在两个文件中添加用户。这就是linux的魅力噢。不像windows一样,我们不但知其然,还知其所以然。   “会灵魂附体的”命令权限                                                                          继续用户管理的学习,上一小节我们知道,只有root可以修改密码文件,那么普通用户为什么可以修改自己的密码,这是因为我们所操作有命令“灵魂附体”般的拥有了root权限。这个小节自我感觉不教难理解,而我的内容也是顺着思路写,按着顺序看,最好去试验一下。^_^   小节重点: =============================== setUID=4   所有人 setGID=2   所属组 粘着位=1    其它人 ===============================   创建用户: [root@localhost ~]# useradd lisi      添加创建了一用户lisi [root@localhost ~]# passwd lisi       设置lisi的密码 Changing password for user wangwu. New UNIX password:                    这里输入密码 BAD PASSWORD: it is based on a dictionary word Retype new UNIX password:         再次确认密码 passwd: all authentication tokens updated successfully.   上面这种是不被推荐的一种创建用户的方式,任何的用户都应该属于某个组。创建这样的“散人”实际中没有太大意义。  www.2cto.com     [root@localhost ~]# grep lisi /etc/passwd lisi:x:502:502::/home/lisi:/bin/bash    从上面信息中看到,系统默认为我们创建了一个lisi的组,组ID为504    用户切换: [root@localhost ~]# su -- lisi        root切换到lisi用户 [lisi@localhost root]$ su -- root     lisi用户切换到root Password:                                    普通用户切换root用户是要密码的哟!亲! 普通用户切换到其它普通用户也是要密码的哟!   用户修改密码: [lisi@localhost root]$ passwd Changing password for user lisi. Changing password for wangwu (current) UNIX password:        先输入原始密码 New UNIX password:               输入新有密码 Retype new UNIX password:    再次确认新密码 passwd: all authentication tokens updated successfully.   上面是铺垫,下面才是重点。。  思考:在上一节中,我们提到,存放用户密码的文件shadow只有root用户才可操作。那么普通用户为什么可以修改密码呢?   =========================setUID===============================                   这里引出一个东东----setUID        定义:当一个可执行程序具有setUID权限,用户执行这个程序时,将以这个程序所有者的身份执行。        哈哈!小狼不能和小羊谈朋友,小羊可以与小羊谈朋友,于是,小狼披上了羊的外衣,然后以羊的身份和小羊一起幸福的生活。吼吼。        其实,用户执行的这个程序就是命令,passwd命令授权了SetUID权限。所以普通用户也可以通过passwd命令改密码。   下面来做个试验!!很有意思的噢,要不要也来试试噢?   切换到lisi用户下面。 [lisi@localhost ~]$ touch file01   touch创建一个file01的文件 [lisi@localhost ~]$ ls -l file01  www.2cto.com   -rw-rw-r--  1 lisi lisi 0  5月  5 22:14 file01   我们看到,这个时候用touch命令创建的文件,所有者是lisi,所属于组是lisi组   切换到root下面 [root@localhost ~]# ls -l /bin/touch    -rwxr-xr-x  1 root root 38056 2009-07-03  /bin/touch 细心朋友会发现权限前面还多一位。没错!setUID就属于这一位。   setUID=4   现在我们给touch命令授予个setUID授予setUID权限有两种方式。 [root@localhost ~]# chmod  u+s /bin/touch   [root@localhost ~]# chmod  4755  /bin/touch 关于用户权限不理解的看我之前的相关文章。   再次切换到lisi目录下 [lisi@localhost ~]$ touch file02   创建文件file02 [lisi@localhost ~]$ ls -l file02 -rw-rw-r--  1 root lisi 0  5月  5 22:35 file02     这次我们发现,同样的一个命令touch ,这次创建出来的文件所有者变成的root   去掉setUID权限的两种方式: [root@localhost ~]# chmod  u-s /bin/touch   [root@localhost ~]# chmod  755  /bin/touch   ========================setGID=================================            setGID的用法与setUID的用法一起,它是添加组权限的。 setGID=2 添加setGID的方式如下: [root@localhost ~]# chmod  g+s /bin/touch   [root@localhost ~]# chmod  2755  /bin/touch   一般的命令我们不能随便授予setUID权限假如给vi命令授予setUID命令,无疑于给linux留了个后面,那样我们就可以通过vi命令修改用户与密码信息文件了。 那么到底有哪些命令设置有setUID呢?我们可以查找一下。   [root@localhost ~]# find / -perm -4000 -o -perm -2000 在当前目录下(/)查找具有setUID(-perm -4000)或者(-o)具有   setGID(-perm -2000)权限的命令  www.2cto.com     =======================粘着位==================================     粘着位有什么作用,我们来看一个例子,这样更容易理解。。   [root@localhost test]# mkdir abc                   创建一个目录abc [root@localhost test]# touch abc/newfile      在这个目录下创建一个文件newfile [root@localhost test]# chmod 777 abc          对这个目录设置权限为所有人都有所有权限 [root@localhost test]# ls -ld abc drwxrwxrwx  2 root root 4096  5月  5 23:44 abc  [root@localhost test]# ls -l abc/newfile          newfile文件的权限是其它人没有删改的权限。 -rw-r--r--  1 root root 0  5月  5 23:44 abc/newfile   切换到lisi用户 [lisi@localhost test]$ rm -rf abc         具然把abc目录下面的newfile干掉了,lisi用户虽然有对abc目录的所有权限,但对newfile文件没有删除权限呀。这就是linux对文件的权限规定。        假如张三和李四对一个文件夹都有所有权,这个文件夹下放的有张三的文件,也有李四的文件,如果张三看李四的文件不爽,那么他就直接干掉了,李四上去一看哭了。为什么办法让李四不哭呢?这里就用到粘着位了。   粘着位 粘着位=1 t,如果一个权限为777目录有粘着位,每个用户都可以在这个目录下创建文件,但只能删除自己是所有者的文件。  www.2cto.com     粘着位的授权方式: [root@localhost test]# chmod  o+t abc   [root@localhost test]# chmod  1755  abc   我们再来删除试试: [lisi@localhost abc]$ rm newfile rm:是否删除有写保护的一般空文件‘newfile’? y rm: 无法删除‘newfile’: 权限不够   自己创建的文件就可以删除噢! [root@localhost test]# touch newfile2 [root@localhost test]# rm newfile2  rm:是否删除一般空文件‘newfile2’? y       作者 虫师
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部