linux 用户管理
课程大纲
用户管理配置文件
用户管理命令
用户组管理命令
批量添加用户
用户授权
配置文件
用户信息文件:/etc/passwd
密码文件:/etc/shadow
用户组文件:/etc/group
用户组密码文件:/etc/gshadow
用户配置文件:
/etc/login.defs
/etc/default/useradd
新用户信息文件:/etc/ske1
登录信息:/etc/motd /etc/issue
/etc/passwd文件格式
字 段 含 义
用户名 用户登录系统时使用的用户名
密码 密码位
UID 用户标识号
GID 缺省组标识号
注释性描述 例如存放用户全名等信息
宿主目录 用户登录系统后的缺省目录
命令解释器 用户使用的Shell,默认为bash
用户类型
Linux用户分为三种:
超级用户(root,UID=0)
普通用户(UID 500-60000)
伪用户(UID 1-499)
伪用户
1、伪用户与系统和程序服务相关
bin、daemon、shutdown、halt等,任何Linux系统默认都有这些伪用户
mail、news、games、apache、ftp、mysql及sshd等,与Linux 系统的进程相关
2、伪用户通常不需要或无法登录系统
3、可以没有宿主目录
用户组
每个用户都至少属于一个用户组
每个用户组可以包括多个用户
同一用户组的用户享有该组共有的权限
/etc/shadow文件格式
字 段 含 义
用户名 用户登录系统时使用的用户名
密码 加密密码
最后一次修改时间 用户最后一次修改密码的天数
最小时间间隔 两次修改密码之间的最小天数
最大时间间隔 密码保持有效的最多天数
警告时间 从系统开始警告到密码失效的天数
帐号闲置时间 帐号闲置时间
失效时间 密码失效的绝对天数
标志 一般不使用
/etc/group文件格式
字 段 含 义
组名 用户登录时所在的组
组密码 一般不使用
GID 组标识号
组内用户列表 属于该组的所有用户列表
手工添加用户
分别在/etc/passwd、/etc/group和/etc/shadow文件中添加一笔记录
创建用户宿主目录
在用户宿主目录中设置默认的配置文件
设置用户初始密码
SetUID
思考:为什么普通用户可以更改密码?
SetUID的定义:当一个可执行程序具有SetUID
权限,用户执行这个程序时,将以这个程序所有者的身份执行。
范例: 1、将touch命令授予SetUID权限
# chmod u+s /bin/touch
# ls -l /bin/touch
再用普通用户 touch file02
ls - l file02
会发现文件所有者不是创建者,而是root用户
chmod u-s /bin/touch //取消setuid 权限 u-s 改成755 4755
chmod g+s【2755】 文件名 //用户组添加 setuid权限 同时用户和组都加6755
黏着位 =1 //ls -ld /tmp 其他人权限是t
如果一个权限位777的目录,被设置了黏着位,每个用户都可以在目录下创建文件, 但是只可以删除自己所创建的文件
添加黏着位方法 chmod o+t 目录名 //或者1777
- 当vi命令被授予SetUID权限
# which vi //查询vi命令路径
# chmod u+s /bin/vi
后果普通用户对文件都可以修改 强制保存退出
3、查找SetUID程序:
find / -perm -4000 -o -perm -2000
附加 : # ls -l /usr/bin/passwd
添加用户
useradd 设置选项 用户名-D 查看缺省参数
u:UID
g:缺省所属用户组GID
G:指定用户所属多个组
d:宿主目录
s:命令解释器Shell
c:描述信息
e:指定用户失效时间
passwd sam
手工添加用户
用户组管理命令
添加用户组 groupadd
groupadd -g 888 webadmin
创建用户组webadmin,其GID为888
删除用户组: groupdel 组名
修改用户组信息 groupmod
groupmod -n apache webadmin //修改webadmin组名为apache
gpasswd 设置组密码及管理组内成员
-a 添加用户到用户组
-d 从用户组中删除用户
-A 设置用户组管理员
-r 删除用户组密码
-R 禁止用户切换为该组 //gpasswd -R 组名
范例: gpasswd -a 用户名 组名
gpasswd 组名 //设置组密码
修改用户信息
usermod
usermod -G softgroup samlee
将用户samlee添加到softgroup用户组中
usermod -l samlee -d /home/samlee -g lampbrother liming
将用户liming的登录名改为samlee,加入到lampbrother组中,用户目录改为/home/samlee
用户管理命令
pwck 检测/etc/passwd文件
vipw 编辑/etc/passwd文件 (锁定文件)
id 查看用户id和组信息
finger 查看用户详细信息
su 切换用户(su - 环境变量切换) //echo $PATH 查看环境变量
passwd -S 查看用户密码状态 //#passwd -S 用户名
passwd -l jack //锁定jack用户密码
who、w 查看当前登录用户信息
groups 查看用户隶属于哪些用户组 // id 命令也看到
newgrp 切换用户组 //newgrp 组名 会提输入组密码
grpck 用户组配置文件检测、''
chgrp 修改文件所属组 //chgrp 组名 文件名
vigr 编辑/etc/group文件(锁定文件)//和vipw 功能一样
用户组权限示例
授权用户jack和mary对目录/software有写权限
# groupadd softadm //创建组 softadm
# usermod -G softadm jack // jack 加入 softadm组
# gpasswd -a mary softadm //mary 加入softadm组
# chgrp softadm /software //改变software 文件的所属组为 softadm
# chmod g+w /software //改变文件 用户组+wire 权限
# ls -ld /software
drwxrwxr-x 2 root softadm 512 Jul 14 06:17 /software
# grep softadm /etc/group
softadm::100:jack,mary
禁用和恢复用户
禁用
# usermod -L username //锁定用户
# passwd -l username // 锁定用户密码
恢复
# usermod -U username //恢复登入用户
# passwd -u username //恢复登入密码
删除用户
userdel -r 用户名
-r:删除用户目录
手工删除:
使用find命令查找属于某个用户或用户组的文件
find选项-user、-uid、-group、-gid
1、对需要保留的文件进行移动和备份
2、对不需要的文件进行删除
3、清除用户文件中的相关表项
4、清除用户宿主目录
用户管理命令
chage 设定密码
-l 查看用户密码设置
-m 密码修改最小天数
-M 密码修改最大天数
-d 密码最后修改的日期
-I 密码过期后,锁定账户的天数
-E 设置密码的过期日期,如果为0,代表密码
立即过期;如果为-1,代表密码永不过期
-W 设置密码过期前,开始警告的天数
启动或停用shadow功能
pwconv/pwunconv
grpconv/grpunconv
system-config-users
authconfig 、/etc/sysconfig/authconfig
批量添加用户
newusers命令 导入用户信息文件 //文件模板按/etc/passwd #newusers < user.info
pwunconv命令 取消shadow password功能
chpasswd 命令 导入密码文件 // #chpasswd < pass.info
(格式 用户名:密码)
pwconv命令 将密码写入shadow文件
实例:一次批量添加10个用户
限制用户su为root:
# groupadd sugroup //添加一个sugroup组
# chmod 4550 /bin/su //修改/bin/su 权限
# chgrp sugroup /bin/su //修改所属组
# ls -l /bin/su
-r-sr-x--- 1 root sugroup 18360 Jan 15 2010 /bin/su
设定后,只有sugroup组中的用户可以使用su切换为root
# useradd helen
# passwd helen
# usermod -G sugroup helen //把helen 用户加到sugroup用户组
用sudo代替su:
-在执行sudo命令时,临时成为root
-不会泄漏root口令
-仅向用户提供有限的命令使用权限
配置文件:/etc/sudoers,
编辑配置文件命令/usr/sbin/visudo,
普通用户使用命令/sur/bin/sudo。
格式: 用户名(组名)主机地址=命令(绝对路径)
附加:visudo //编辑
csdn1 helen=/usr/sbin/useradd,/usr/sbin/userdel
csdn2 helen=/sbin/shuthown -h -now //命令可以精确化
(用户组前面加%)用户名 主机名(或者ip地址) = 授权命令绝对路径,
# su - csdn1 //切换csdn1用户
$ sudo /user/sbin/useradd lampbrother //添加lampbrother 用户
[sudo] password for csdn1: //输入csdn1 密码
$ sudo -l //查看自己可以用root身份执行哪些命令
授权一个用户Apache管理权限
1 编辑Apache 配置文件
2 使用Apache 启动脚本
3 更新网页
# ls -l /etc/httpd/conf/httpd.conf
- a 设置用户为配置文件所有者 chown
b 改变所属组,把用户加入组,授予组 w 权限
c visudo 用户 地址csdn1 helen=/bin/vi /etc/httpd/conf/httpd.conf
2 visudu 用户 地址=/etc/rc.d/init.d/httpd start,/etc/rc.d/init.d/httpd reload,
/etc/rc.d/init.d/httpd fullstatus,
/etc/rc.d/init.d/httpd configtest
3 grep Document Root /etc/httpd/conf/httpd.conf // 查找匹配的www网页存的目录
/var/www/html 改变所有者 或者改变所属组,把用户加入组,授予组 w 权限
John the ripper 应用:
# tar -xzvf john-1.7.6.tar.gz
# cd john-1.7.6/run
# cd src
# make linux-x86-64
破解用户liming密码
# grep liming /etc/passwd > /test/liming.passwd
# grep liming /etc/shadow > /test/liming.shadow
# /test/john-1.6.6/run/unshadow /test/liming.passwd /test/liming.shadow > /test/liming.john
# /test/john-1.6.6/run/john /test/liming.john
下载地址 http://www.openwall.com/john/