14 linux用户管理
14.1用户管理配置文件
配置文件
用户信息文件: /etc/passwd
文件格式:每一行即一个用户信息,有多少行,就有多少用户。
行格式:
root :
x
:
0
: 0 : root : /root : /bin/bash
含义:
用户名:密码位:用户标识符UID:组标识符GID:解释性描述:宿主目录:命令解释器
linux用户分为3类:超级用户(root,用户标识符UID=0),只要将一个用户的UID设置为0,这个用户就有和root相同的权限。
普通用户 (UID 500-60000)
伪用户 (UID 1-499)
伪用户
1.伪用户与系统和程序服务相关
bin,daemon,shutdown,halt等,任何
linux系统默认都有这些伪用户
mail,news,game,apsche,ftp,mysql及sshd等,与linux系统的进程相关
2.伪用户通常不需要或无法登录系统
3.可以没有宿主目录
用户组特点: 每个用户都至少属于一个用户组
每个用户组可以包含多个用户
同一用户组的用户享有该用户组共有的权限
密码位 是由md5生成
密码文件: /etc/shadow
文件格式:每一行即一个用户信息,有多少行,就有多少用户。
行格式:
root : $1$SFzhoxd$aatxtpowlkPrI515lh9lu1
: 15793
: 0 : 99999 : 7 : : :
含义:
用户名:
加密的秘密
:最后一次修改时间(天数):最小时间间隔(天数):最大时间间隔(天数): 警报时间 :帐号休闲时间:失效时间:标志
说明:1.加入 /etc/shadow中的
加密的秘密删除了,则该用户不需要密码即可登录。
2.最后一次修改时间,是按
天进行计算,起始天是按Unix的诞生日1970-1-1开始计算.
3.
最大时间间隔之内,必须更改密码,否则无法登陆。怕遗忘可以通过
警报时间来提前提醒
4.密码其实是先写入
/etc/passwd
,然后再用
pwconv
将命令转移到 /etc/shadow,我可以用
pwunconv
将密码转移回中/etc/passwd。
用户组文件: /etc/group
文件格式:每一行即一个用户信息,有多少行,就有多少用户。
添加一个组: groupadd newgroup
groupadd -g 888 newgroup (-g 表示设置
GID)
删除一个组:groupdel 组名
修改用户组信息; groupmod
用户组密码文件:/etc/gshadow
用户配置文件:/etc/login.defs, /etc/default/useradd
新用户信息文件:/etc/skel
登录文件: /etc/issue (登录前显示的信息,一般为系统版本介绍,最好删除系统版本信息。可以只显示欢迎界面)
/etc/motd (登录后显示的信息,可以用于
显示一些公告通知)
14.2用户管理命令
用户密码管理的 /etc/shadow和/etc/gshadow一般只有root有权更改,
为什么普通用户可以更改自己的密码?
答案:关键在于/usr/bin/passwd的文件权限如下:
-rw
sr-xr-x 1 root root 22984 Jan 6 2007 /usr/bin/passwd
SetUID:当一个可执行程序具有SetUID权限,用户执行该程序时,将以这个程序所有者的身份执行。
将一个可执行程序设置为SetUID,有两种方式:chmod u+s
chmod
4755 %(mod的
4代表
SetUID)
当一个不可执行的程序(如txt文档),当设置
SetUID,该位置会变成
S,用于表示警告
想雷同的命令有
SetGID
将一个可执行程序设置为
SetGID,有两种方式:chmod g+s
chmod
2755 %(mod的
2代表
SetGID)
chmod 6755 %(mod的
2+4=6代表
SetUID+
SetGID)
查找系统的SetUID文件: find / -perm -4000 -o -perm -2000
而其他人是有
粘着位设置
t。
drwxrwxrw
t 18 root root 4096 Apr 11 15:03 /tmp
粘着位:如果一个权限为777目录具有
粘着位,每个用户都可以在这个目录下创建文件,但只有权限删除自己是所有者的文件。
将一个可执行程序设置为
粘着位,有两种方式:chmod o+t
chmod
1755 %(mod的
1代表
粘着位)
添加用户: useradd
-u :UID
-g :缺省所属用户组GID
-G :指定用户所属多个组
-d:指定宿主目录
-s:命令解释器Shell
-c:描述信息
-e:指定用户失效时间
修改用户信息:usermod
修改一个用户的名称:usermod -l newname oldname
把用户添加到一个组里:usermod -g group user1
pwck 检测/etc/passwd文件(锁定用户 passwd -l user1 将用户user1锁定,是用户无法登录,解锁用 -u )
vipw 编辑/etc/passwd文件
id 查看用户id和组信息
finger 查看用户详细信息
su 切换用户(su - user1 环境变量切换)
passwd -S 查看用户密码状态
who, w 查看当前登录用户信息
删除用户: userdel -r username 删除用户,同时用 -r 删除用户目录
14.3用户组管理命令
设置组密码及管理组内成员:
gpasswd
-a 添加用户到用户组
-d 把用户从用户组删除
-A 设置用户组管理员
-r 删除用户组密码
-R禁止用户切换为该组
groups 查看用户隶属于哪个用户组
newsgrp 切换用户组
grpck 用户组配置文件检测
chgrp 修改文件所属组
vigr 编辑/etc/group文件(锁定文件)
实例:授权jack和mary 对目录/software有写权限
# groupass softadm
# usermod -G softadm jack
#gpasswd -a mary softadm
#chgrp softadm /softawre
#chmod g+w /software
14.4批量添加用户
1 使用的命令顺序
newusers 导入用户信息文件 (newusers < 用户信息文件)
pwunconv 取消shadow passwd 功能
chpasswd 导入密码文件 (文件格式: 用户:密码)
pwconv 将密码写入shadow文件
14.5用户授权
1. 限制用户 su 为 root
# ls -l /bin/su
-rwsr-xr-x
1 root root 23960 Feb 28 2010 /bin/su
# groupadd sugroup
# chmod 4550
/bin/su
# chgrp sugroup /bin/su
# ls -l /bin/su
-r-xr-x---
1 root sugroup 23960 Feb 28 2010 /bin/su
设定后,只有
sugroup组中的用户可以使用su切换到root
添加用户helen 到
sugroup
# useradd helen
# passwd helen
# usermod -G sugroup helen
用sudo代替su
在执行sudo时,临时成为root
不会泄漏root口令
仅向用户提供有限的命令使用权限
配置文件:/etc/sudoers,
编辑配置文件命令 :visudo
普通用户使用命令sudo
格式: 用户名(组名) 主机地址(主机名)=命令 (绝对路径)
查看普通用户被授权多少root命令: # sudo -l
注意:1.sudo不是吧管理员使用的命令转移给普通用户,而是普通用户以管理员身份去执行该命令
2.权限授予尽量精细化。