linux 用户管理

Posted 康华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 用户管理相关的知识,希望对你有一定的参考价值。

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

  1. 当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

  1. 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/

以上是关于linux 用户管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux用户权限管理命令

Linux系列教程(十五)——Linux用户和用户组管理之用户管理命令

Linux系列教程(十五)——Linux用户和用户组管理之用户管理命令

Linux学习之用户管理命令与用户组管理命令(十五)

linux用户及权限详解-用户组-用户管理-权限管理

Linux用户权限管理