Linux用户管理
配置文件
用户信息文件:/etc/password
密码文件:/etc/shadow
用户组文件:/etc/group
用户组密码文件:/etc/gshadow
用户配置文件:/etc/login.defs
/etc/default/useradd
新用户信息文件:/etc/skel
登录信息:/etc/motd etc/issue
/etc/passwd文件格式
例如root:x:0:0:root:/root:/bin/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/shadow保持了真正的密码,把密码删除,则登录时无需输入密码
Pwunconv 把/etc/shadow 的密码转换到/etc/passwd里面去
Pwconv 把/etc/passwd的密码转换到/etc/shadow里面去
/etc/group文件格式
如:sys::3:root,bin,adm
手工添加用户
分别在/etc/passwd /etc/group和/etc/shadow文件中添加一笔记录
创建用户宿主目录
在用户宿主目录中设置默认的配置文件
设置用户初始密码
Setuid
思考:为什么普通用户可以更改密码?
Setuid的定义:当一个可执行程序具有setuid权限。用户执行这个程序时,将以这个程序所有者的身份执行。
Setuid=4 所有者
Chmod u+s u-s
Chmod 4755 755
Setgid=2 所属组
Chmod g+s g-s
Chmod 2755 755
2755
粘着位=1 其他人
t ,如果一个一个权限为777目录具有粘着位,每个用户都可以在这个目录下创建文件,但是只能删除自己是所有者的文件
chmod o+t o-t
chmod 1777 777
范例:1.将touch命令授权setuid权限
Which touch ls –l /bin/touch
Su – lisi touch file01 ls –l file01 chmod u+s /bin/touch
1. 当vi命令被授予setuid权限
2. 查找setuid程序
Find / -perm -4000 –o –perm -2000
添加用户
Useradd设置选项 用户名 –D 查看缺省参数
Useradd –D和cat /etc/default/useradd作用相同
u: UID 比如 useradd –u 888 newuser
g: 缺省所属用户组GID 比如 useradd –g webadmin newuser
G:指定用户所属多个组 比如 useradd –G sys,root newuser
d : 宿主目录
s : 命令解释器shell
c : 描述信息
e : 指定用户失效时间
passwd sam
手工添加用户
用户组管理命令
添加用户组 groupadd
groupadd –g 888 webadmin
创建用户组webadmin,其GID为888
删除用户组:groupdel组名
修改用户组信息groupmod
groupmod –n apache webadmin
修改webadmin组名为apache
用户组管理命令
gpasswd设置组密码及管理组内成员
gpasswd webadmin 给webadmin组设置密码
more /etc/gshadow 查看组配置文件 /etc/group查看组基本信息
-a 添加用户到用户组gpasswd –a tomgao root
-d 从用户组中删除用户
-A 设置用户组管理员gpasswd –A tomgao webadmin 让tomgao来管理webadmin组
-r 删除用户组密码 gpasswd –r 组名
-R 禁止用户切换为该组
Newgrp webadmin 是切换到wenadmin组的意思
Groups lisi 查看lisi隶属于哪个组
Id 查看各种id信息
修改用户信息
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文件
vipw和vi的区别是vipw是专门编辑/etc/passwd的,它会锁定文件,一个用户编辑时其他用户不能编辑
Id 查看用户id和组信息
finger 查看用户详细信息
Su 切换用户(su –会环境变量切换,而su 不会)
passwd –d 清除用户密码
passwd –S 查看用户密码状态,比如检测某用户是否空密码或者密码锁定
passwd –l 锁定用户
passwd –uf 解锁用户
who,w 查看当前登录用户信息
groups 查看用户隶属于哪些用户组
newgrp 切换用户组
grpck 用户组配置文件检测
chgrp 修改文件所属组
vigr 编辑/etc/group文件(锁定文件)
用户组权限示例
授权用户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 给目录添加g+w的权限
#ls –ld /software
Drwxrwxr-x 2 roor softadm 512jul 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. 对不需要的文件进行删除 find /home –user jack –ok rm {} \;
3. 清楚用户文件中的相关表项
4. 清楚用户宿主目录
用户管理命令
Chage 设定密码 (在unix里面没有这个命令)
-l 查看用户密码设置
-m 密码修改最小天数
-M 密码修改最大天数
-d 密码最后修改的日期
-I 密码过期后,锁定账户的天数
-E 设置密码的过期日期,如果为0,代表密码立即过期,如果为-1,代表密码永不过期
-W 设置密码过期前,开始警告的天数
启动或停用shadow功能
Pwconv/pwunconv
Grpconv/grpunconv
System-config-users
Authconfig /etc/sysconfig/authconfig
想让配置永久生效,编辑/etc/sysconfig/authconfig
批量添加用户
1.newusers命令 导入用户信息文件
cd /test
vi user.info
Brother01::1001:3::/home/brother01:/bin/bash
Brother02::1002:3::/home/brother02:/bin/bash
Brother03::1003:3::/home/brother03:/bin/bash
newusers < user.info
用tail -5 /etc/passwd
Ls /home查看
这种方法是把用户信息生成并创建宿主目录
2.pwunconv命令 取消shadow password功能
pwunconv
vi pass.info
brother01:lampbrother
brother02:lampbrother
brother03:lampbrother
3.chpasswd命令 导入密码文件(格式 用户名:密码)
chpasswd < pass.info
4.pwconv命令 将密码写入shadow文件
Pwconv
Tail -5 /etc/shadow
Su – brother01查看用户是可以使用的
还有一种方法就是通过写脚本,然后执行脚本批量添加
限制用户su为root(作用是防止其他用户切换到su猜密码)
#groupadd subgroup
#chmod 4550 /bin/su
#ls –l /bin/su
-r-sr-x--- l root 18360 Jan 15 2010 /bin/su
#chgrp subgroup /bin/su
#ls –l /bin/su
-r-sr-x--- l root subgroup 18360 Jan 15 2010 /bin/su
设定后,只有sugroup组中的用户可以使用su切换为root
#useradd helen
#passwd helen
#usermod –G subgroup helen
用sudo代替su:
在执行sudo命令时,临时成为root
不会泄露root口令
仅向用户提供有限的命令使用权限
配置文件:/etc/sudoers,编辑配置文件命令visudo,普通用户使用命令sudo
格式:用户名(组名) 主机地址=命令(绝对路径)
rpm –q sudo
visudo 编辑sudo配置文件
比如我想授权普通用户也可以添加用户,删除用户
则which useradd
Visudo
在里面加入 csdn1 helen=/usr/sbin/useradd,/usr/sbin/userdel
然后切换到普通用户csdn1 su – csdn1
Sudo /usr/sbin/useradd lampbrother 添加用户
普通用户使用 sudo –l可以查看他自身能执行什么命令
例子:比如一个apache服务器,要授权一个普通用户管理web应用,该如何设置权限
1. 该普通用户有权限能编辑apache配置文件
2. 使用apache启动脚本
3. 更加网页
1. 先找apache的安装包
Rpm –ql httpd | more
然后会看到是/etc/httpd/conf/httpd.conf
再看一下此文件权限 ls –l /etc/httpd/conf/httpd.conf
-rw-r—r—1 root root 33726 Apr 5 2010 /etc/httpd/conf/httpd.conf 看到只有root才有写权限
可以设置用户为配置用户所有者或者改变所属组,把用户加入组,授予组写权限,还有一种方法visudo 用户 地址=/bin/vi /etc/httpd/conf/httpd.conf
第三种方法示例 visudo
加入一行 csdn1 helen=/bin/vi /etc/httpd/conf/httpd.conf
Su – csdn1
Sudo –l
Sudo /bin/vi /etc/httpd/conf/httpd.conf
2.所有服务的启动脚本都放在/etc/rc.d/init.d/httpd下面
允许普通用户start reload fullstatus configtest
同一使用visudo 用户 地址=/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
使用sudo /etc/rc.d/init.d/httpd start来启动
3.grep documentroot /etc/httpd/conf/httpd.conf 可以查看网页的存放目录是/var/www/html
如果是单个用户改变所有者权限即可,如果是多个普通用户,把普通用户加入组,改变所属组权限
John the ripper应用
#tar –xzvf john-1.7.6.tar.gz
#cd john-1.7.6/run
#make
破解用户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.opendwall.com/john/