您的位置:首页 > 运维架构 > Linux

Linux中的用户管理

2016-08-01 09:52 120 查看
用户安全是所有操作系统都必须解决的问题,Linux是一个多用户多任务的操作系统,用户的安全和资源分配尤为重要。
Linux用户管理是基于用户名和密码的方式进行资源分配,每一个用户有一个独有的uid。Linux用户分为两类:管理员root(uid=0)和普通用户(1-65535)。普通用户又分为两种:系统用户(6:1-499;7:1-999)通常被禁止登录系统,要做运行守护程序;登录用户(6:500+;7:1000+)。
Linux组:对于每一位用户而言可以有多个不同的组,但其必须有一个主组和若干个附加组,也可以没有附加组。
Linux用户的管理涉及4个配置文件:
[root@localhost ~]# ll /etc/passwd /etc/shadow /etc/group /etc/gshadow
-rw-r--r--. 1 root root  992 Jul 29 14:37 /etc/group
----------. 1 root root  800 Jul 29 14:37 /etc/gshadow
-rw-r--r--. 1 root root 2367 Jul 29 16:09 /etc/passwd
-r--------. 1 root root 1523 Jul 29 16:09 /etc/shadow
Linux有一套安全的访问控制机制(安全上下文)
对于同一个命令程序,当以不同的身份去运行时,其访问资源的权限取决于用户的权限
[root@localhost ~]# /usr/bin/cat /etc/shadow
root:$6$OF90srJpFS//u4dp$i0mJsuUIO1mPV02jpCZ8GLP37EmFHEqsmOB77p.wkrfO5f/E4KuCh5gV1WiJWBqJz1O8Z9tT4qtBe3YklxY.V1:17011:0:99999:7:::
bin:*:17011:0:99999:7:::
daemon:*:17011:0:99999:7:::
[nieda@localhost ~]$ /usr/bin/cat /etc/shadow
/usr/bin/cat: /etc/shadow: Permission denied
/etc/passwd:该文件记录了用户及其属性信息,具体信息可man 5 passwd 查看
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
其中每个字段的意思是,用户名:密码占位符:UID:GID:用户的详细说明:用户家目录:用户默认shell
/etc/group:组及其属性信息
[root@localhost ~]# cat /etc/group
root:x:0:
组名:组密码占位符:GID:以当前组为附加组的用户列表(逗号隔开)
/etc/shadow:用户密码及相关属性
[root@localhost ~]# cat /etc/shadow
root:$6$OF90srJpFS//u4dp$i0mJsuUIO1mPV02jpCZ8GLP37EmFHEqsmOB77p.wkrfO5f/E4KuCh5gV1WiJWBqJz1O8Z9tT4qtBe3YklxY.V1:17011:0:99999:7:::
用户名:用户密码(一般用sha512加密):从1970年1月1日到最近更改密码的天数:密码设置后几天才能再修改(0表示可随时修改):密码从修改到再一次必须要修改的天数(99999永久可用):密码过期前几天提示(默认为一周):密码过期多少天后用户被锁定:从1970年1月1日起多少天用户帐号失效



加密算法:md5,sha1,sha224,sha256,sha384,sha512
$6$OF90srJpFS//u4dp$i0mJsuUIO1mPV02jpCZ8GLP37EmFHEqsmOB77p.wkrfO5f/E4KuCh5gV1WiJWBqJz1O8Z9tT4qtBe3YklxY.V1
以上$为分隔符,其中6表示sha512加密算法,
OF90srJpFS//u4dp 表示salt,为了防止反向解密,系统将随机生成salt值再次加密
/etc/gshadow:组密码及属性
[root@localhost ~]# cat /etc/gshadow
root:::
组名:组密码:组管理员列表(可以更改组成员和组密码):以当前组为附加组的用户列表(分隔符为逗号)
注意:如果一个普通用户加入一个附加组只需更改/etc/group即可,无需该/etc/gshadow,但需要重新登录才能有附加组的权限。如果要给某个组添加一个管理员,如果这个管理员不是该组的成员,即使是组管理员也没有该组的权限,同样需要重新登录,但该用户可以改组密码。

如果组没有设密码,用户将无法加入组中
newgrp:登录到一个新的组中,临时切换主族,并且必须知道所切换组的密码,若无则无法切换

用户和组相关的管理命令
getent:通过关键字来获取被GUN的C库支持的条目信息
[root@localhost ~]# getent passwd root
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# getent shadow root
root:$6$OF90srJpFS//u4dp$i0mJsuUIO1mPV02jpCZ8GLP37EmFHEqsmOB77p.wkrfO5f/E4KuCh5gV1WiJWBqJz1O8Z9tT4qtBe3YklxY.V1:17011:0:99999:7:::
[root@localhost ~]# getent group root
root:x:0:
[root@localhost ~]# getent gshadow root
root:::
chfn:改变用户的信息
[root@localhost ~]# chfn root
Changing finger information for root.
Name [root]: hello
Office []: adwwd
Office Phone []: adwaaf
Home Phone []: awdada
Finger information changed.
[root@localhost ~]# getent passwd root
root:x:0:0:hello,adwwd,adwaaf,awdada:/root:/bin/bash
[root@localhost ~]# finger root
Login: root                       Name: hello
Directory: /root                        Shell: /bin/bash
Office: adwwd, adwaaf            Home Phone: awdada
On since Sun Jul 31 17:32 (CST) on pts/0 from 10.1.250.91
10 minutes 58 seconds idle
On since Sun Jul 31 17:33 (CST) on pts/1 from 10.1.250.91
2 seconds idle
Mail last read Sun Jul 31 11:22 2016 (CST)
No Plan.
chsh:改变你的登录shell
[root@localhost ~]# chsh -s /bin/csh root
Changing shell for root.
Shell changed.
[root@localhost ~]# getent passwd root
root:x:0:0:hello,adwwd,adwaaf,awdada:/root:/bin/csh
vipw和vigw:编辑passwd和group,退出时自动检查语法格式
pwck和grpck:手动检查语法
useradd:创建用户
-u UID:指定UID,默认依次使用最近的,定义在/etc/login.defs,注意:新建用户的大部分默认设定都在次文件中
-o:配合-u不检查uid的唯一性

-g GID:基本组,主族,默认使用与用户名相同的名字
-c :用户信息
-d :指定用户家目录,通过复制/etc/skel并重命名来实现,如果实现已存在家目录,则不会复制环境文件
-s :指定用户登录shell
-G :指定附加组,逗号分隔
-N:不创建主族,使用users组做主族

-D :修改用户默认选项,修改/etc/default/useradd的内容
-r:创建系统用户(uid小于500或1000)

usermod:修改用户帐号
-L:锁定用户帐号,禁止登录,实质是在/etc/passwd的密码占位符改为!
-U:解锁
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息