Linux用户管理

配置文件

用户信息文件:/etc/password

密码文件:/etc/shadow

用户组文件:/etc/group

用户组密码文件:/etc/gshadow

用户配置文件:/etc/login.defs

/etc/default/useradd

新用户信息文件:/etc/skel

登录信息:/etc/motd etc/issue

/etc/passwd文件格式

Linux 用户管理_第1张图片

例如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文件格式

Linux 用户管理_第2张图片

/etc/shadow保持了真正的密码,把密码删除,则登录时无需输入密码

Pwunconv 把/etc/shadow 的密码转换到/etc/passwd里面去

Pwconv 把/etc/passwd的密码转换到/etc/shadow里面去

/etc/group文件格式

Linux 用户管理_第3张图片

如: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/