版权声明:本文为博主原创文章,未经博主允许不得转载!!

欢迎访问:https://blog.csdn.net/qq_21439395/article/details/82052915

交流QQ: 824203453

 

用户管理简介

linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。

对安全要求高的服务器,都需要建立合理的用户权限等级制度和服务器操作规范。

在linux中主要是通过用户配置文件来查看和修改用户信息。

 

配置文件:

用户信息文件:/etc/passwd
密码文件:/etc/shadow
用户组文件:/etc/group
用户组密码文件:/etc/gshadow

 

/etc/passwd

文件格式解析(7个字段)

root:x:0:0:root:/root:/bin/bash

用户名:密码位:UID(用户标识号):GID(缺省组标识号):描述信息:宿主目录:命令解释器(使用的 shell,默认为bash)

帮助命令:man 5 passwd

字段解释:

用户名:用户登陆系统的用户名

密码:密码位

UID:用户标识号

GID:默认组ID

描述信息:存放用户的描述信息

宿主目录: 用户登陆系统的默认目录,普通用户默认是在/home/下

命令解析器: 用户使用的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、可以没有宿主目录

 

用户组:

 1,每个用户都至少属于一个用户组

 2,每个用户组可以包括多个用户

 3,同一用户组的用户享有该组共有的权限

初始组和附加组

初始组:就是指用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。

初始组有且仅有一个,可以修改,但不建议修改

附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。

 

/etc/shadow

文件下格式解析(以root为例,9个字段)

root:$1$FAKb8T5g$3ni9CM7RlbrwWpDGfWP0:15439:0:99999:7:::

用户名:加密密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:密码过期后宽限天数:失效时间:标志(保留字段)

查看命令:man 5 shadow

 

解释:

用户名: 登陆系统的用户名

加密密码:centos6.3里加密算法升级为SHA512散列加密算法,如果密码位是!!或者*代表没有密码,不能登录

最后一次修改时间:户最后一次修改密码的天数,是从1970年1月1日开始计算的天数

最小时间间隔:两次修改密码之间的最小天数

最大时间间隔:密码保持有效的最多天数

(忘记密码,可在shadow下删除加密密码,不需密码就能登录,然后修改密码)

警告时间:从系统开始警告到密码失效的天数

密码过期后宽限天数:0表示密码过期后立即失效,-1表示密码永远不会失效

失效时间:密码失效的绝对天数(不用管有效期) 要用时间戳表示

标志:保留字段

时间戳换算:

把时间戳换算成日期

 date -d "1970-01-01 17382 days"

把日期换算成时间戳:

echo $(($(date --date="2017/08/05" +%s)/86400+1))

 

/etc/group 文件格式

共4个字段,数据格式为:

root:x:0:root

sys:x:3:root,bin,adm

组名:组密码位:GID:组成员(组内所有用户列表)

组名:用户所在的组

组密码:密码位,一般不使用

GID主标示号

组内用户列表: 属于该组的用户列表

 

/etc/gshadow 文件格式

共4个字段,数据格式为:

root:::

bin:::bin,daemon

组名:组密码:组管理员用户名:组中附加用户

 

 

用户管理命令

添加用户命令useradd: 

useradd [选项]  用户名     -D 查看缺省参数

选项:

    -u:UID,手工指定用户的UID号

    -g:手工指定用户的初始组GID

    -G:指定追加用户的附加组,以逗号分隔

   -d:手工指定用户的宿主目录

    -s:手工指定用户的登录Shell,默认是/bin/bash

    -c:描述信息,手工指定用户的说明

    -e:指定用户失效时间

 

eg:#useradd -u 666 -G root,bin -c "test user" -d /liming -s /bin/bash li

 

手工添加用户方法:

 1,分别在/etc/passwd、/etc/shadow ,/etc/group和/etc/gshadow/文件中添加一笔记录

 2,创建用户宿主目录

 3,在用户宿主目录中设置默认的配置文件

 5,创建邮件目录 /var/spool/mail/用户名

 4,设置用户初始密码

用户配置文件:

/etc/default/usradd

GROUP=100        用户默认组,默认创建用户,组ID指向100这个用户组(共有模式),私有模式中,用户组是用户的同名组

HOME=/home     用户宿主目录
INACTIVE=-1     密码过期宽限天数(shadow文件第7个字段)
EXPIRE=     密码失效时间(shadow文件第8个字段)
SHELL=/bin/bash     缺省的命令解释器,默认的
SKEL=/etc/skel     模板目录

CREATE_MAIL_SPOOL=yes    是否建立邮箱


 

/etc/login.defs

MAIL_DIR /var/spool/mail    默认邮箱目录

PASS_MAX_DAYS 99999    密码有效期(shadow 第5个字段)

PASS_MIN_DAYS 0    密码修改间隔(第4个字段)

PASS_MIN_LEN 5    密码最小5位(升级后的PAM生效,最小8位,该配置已失效)

PASS_WARN_AGE 7    密码到期警告(第6个字段)

UID_MIN 500    最小UID

UID_MAX 60000    最大UID

GID_MIN 500      最小组ID

GID_MAX 60000

CREATE_HOME yes    是否自动创建宿主目录

UMASK 077    

USERGROUPS_ENAB yes

ENCRYPT_METHOD SHA512     加密模式

 

/etc/ske1    新用户信息文件(用户模板目录)

    作用:如果该目录下有文件,那么新建用户时,这些文件都会在用户宿主目录下自动创建

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

 

修改密码命令 passwd

 passwd  [选项] 用户名

选项:

    -S    查询用户密码的密码状态。仅root用户可用 (即查看某一个用户的shadow记录)

    -l    暂时锁定用户。仅root用户可用

    -u    解锁用户。仅root可用

    --stdin    可以通过管道符输出的数据作为用户的密码。

 

eg:echo "123" | passwd --stdin lamp     设置lamp用户的密码为 123

eg:echo "123" | md5sum    设置密码 用md5加密方式输出

eg:echo "123" | md5sum | passwd --stdin yangmi  

修改用户信息usermod

(针对已存在用户)      usermod  [选项]    用户名

选项:

    -l 修改用户名 loginusermod -l a bb改为a

    -u:UID,修改用户的UID号

    -G:修改用户的附加组,以逗号分隔

    -L:临时锁定用户(Lock)

    -U:解锁用户锁定(Unlock)

    -c:修改用户的说明信息

eg:usermod -G softgroup samlee

 

          将用户samlee添加到softgroup用户组中

eg:usermod -l samlee -d /home/samlee -G lampbrother lim

 将用户lim的登录名改为samlee,加入到lampbrother组中,用户目录改 为/home/samlee

删除用户userdel

userdel -r  用户名         -r:删除用户家目录

手工删除:

使用find命令查找属于某个用户或用户组的文件

find选项-user、-uid、-group、-gid

    1、对需要保留的文件进行移动和备份

    2、对不需要的文件进行删除

    3、清除用户文件中的相关表项

    4、清除用户宿主目录

 

vi /etc/passwd    vi    /etc/shadow    vi /etc/group    vi  /etc/gshadow    

rm -rf     /var/spool/mail/用户名/

rm -rf    /home/用户名/

禁用和恢复用户:

禁用    # usermod -L username    # passwd -l username

     

恢复    # usermod -U username    # passwd -u username

修改用户密码状态chage

chage [选项] 用户名

    -l        列出用户的详细密码状态

    -d      日期,修改密码最后最后一次更改日期(shadow文件第3个字段)

    -m     两次密码修改间隔(第4个字段)

    -M     密码有效期(第5个字段)

    -I     密码过期后,锁定账户的宽限天数(第7个字段)

    -E     设置密码的过期日期,如果为0,代表密码

             立即过期;如果为-1,代表密码永不过期(第8个字段)

    -W     设置密码过期前,开始警告的天数(第6个字段)

 

chage -d 0  lamp    把lamp用户的密码修改日期归0

这个命令其实是把密码修改日期归0(shawdow第3个字段),这样用户一登录就要修改密码,这个场景适合root创建一批用户,用户登录后就需要改密码

 

其他用户管理命令:

pwck     检测/etc/passwd文件(锁定文件)

vipw     编辑/etc/passwd文件

id         查看用户id和组信息        

    eg:#id root    

    uid=0(root) gid=0(root) 组=0(root)

finger   查看用户详细信息

su        切换用户

    选项:su - 用户环境变量一起切换     -c  仅执行一次命令,而不切换用户身份

passwd -S       查看用户密码状态

who、w          查看当前登录用户信息

 

eg:非root用户使用su - 切换到root用户,不需要使用  (su - root)  

 

设置用户密码:echo "密码" |passwd --stdin 用户名

 

查看用户组命令:

eg:grep root /etc/group

 

用户组管理命令:

groupadd

1,添加用户组 groupadd [选项]  组名    -g  指定组id

     groupadd -g 888 webadmin

     创建用户组webadmin,指定其GID为888

groupdel

2,删除用户组: groupdel 组名

groupmod

3,修改用户组信息 groupmod [选项]  组名    -g    修改组id    -n   修改组名

     groupmod -n apache webadmin

     修改webadmin组名为apache

gpasswd

4,设置组密码及管理组内成员(把用户添加入组或从组中删除)    gpasswd  选项  组名   

     -a 添加用户到用户组

     -d 从用户组中删除用户

     -A 设置用户组管理员

     -r 删除用户组密码

     -R 禁止用户切换为该组

 

groups     查看用户隶属于哪些用户组  eg: groups spark  查看spark用户属于哪些组

newgrp     切换用户组

grpck     用户组配置文件检测

chgrp     修改文件所属组

vigr     编辑/etc/group文件(锁定文件)

 

用户组的信息位置 /etc/group /etc/gshadow

grepconv grepunconv

 

用户组权限示例:

授权用户jack和mary对目录/software有写权限

    # groupadd softadm

    # usermod -G softadm jack

    # gpasswd -a mary softadm

    # chgrp softadm /software

    # chmod g+w /software

    # ls -ld /software

        drwxrwxr-x 2 root softadm 512 Jul 14 06:17 /software

    # grep softadm /etc/group

        softadm::100:jack,mary

 

用户相关信息补充:

用户的宿主目录:

普通用户:/home/用户名,所有者和所属组都是该用户,权限是700

超级用户:/root/,所有者和所属组都是root用户,权限是550

用户的邮箱:

/var/spool/mail/用户名/

用户模板目录:

/etc/skel/

 

linux下的用户密码先写入password下的密码位,然后用转换命令pwconv,将密码写入shadow下

pwunconv 转换命令 回写密码   把shadow下的密码回写到passwd中

pwconv

 

查看shell

# cat /etc/shells

 

id 用户名 

查看用户各个id信息

[root@master hadoop]# id zs

uid=888(zs) gid=100(users) groups=100(users),3(sys)

启动或停用shadow功能

   pwconv/pwunconv

   grpconv/grpunconv

system-config-users

authconfig 、/etc/sysconfig/authconfig

 

批量添加用户:

newusers命令     导入用户信息文件

pwunconv命令     取消shadow password功能

chpasswd 命令     导入密码文件

                           (格式 用户名:密码)

pwconv命令 将密码写入shadow文件

实例:一次批量添加10个用户

限制用户su为root:

    # groupadd sugroup

    # chmod 4550 /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

用sudo代替su:

    -在执行sudo命令时,临时成为root

    -不会泄漏root口令

    -仅向用户提供有限的命令使用权限

配置文件:/etc/sudoers,编辑配置文件命令visudo。

格式: 用户名 主机地址=命令(绝对路径)

如果一个普通用户能执行所有的root命令,格式为:   用户名   主机地址=(ALL)ALL

eg: hadoop 192.168.137.11=(ALL)ALL

对组进行设置 

格式为: %组名    主机地址=命令(绝对路径)

使用 sudo -l  可以查看普通用户能使用的sudo命令

使用格式为: sudo  命令绝对路径

sudo并不是只可以把管理员使用的命令授权给用户

sudo可以让普通用户以root身份执行命令。

 

 

分析:

授予普通用户管理apache 服务。

权限分析:

1,编辑apache配置文件。

2,使用apache启动脚本。

3,更新网页。

实现:

1,a 设置用户为配置文件的所有者   chown

     b 改变所属组,把用户加入组,授予组 w 权限

     visudo    

     用户   地址=/bin/vi    /etc/httpd/conf/httpd.conf

 

2,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

3,/var/www/html    改变所有者

 

版权声明:本文为博主原创文章,未经博主允许不得转载!!

欢迎访问:https://blog.csdn.net/qq_21439395/article/details/82052915

交流QQ: 824203453

 

Logo

更多推荐