===============Linux用户管理===============
用户的分类:(网络环境)
网络操作系统必不可少的一个安全概念,标识网络操作系统的安全主体
根据用户信息的存储位置的不同,可以分为:
1、本地用户:存储在本地(本机)的数据库中
2、网络用户(Windows 2000 AD,linux):存储在网络中一个服务器(目录服务器)
linux用户的分类(本地用户): UID:用户标识符
UID=0 超级用户(root):拥有对系统的完全控制权
UID=1——499 伪用户:用于管理系统中后台服务的启动和关闭(不可本地登录)
UID=500—— 普通用户:分配给系统的使用者,对计算机资源具有特定的访问权的用户
本地用户的信息存储在——“数据库”中,一系列的配置文件
linux配置文件
/etc/passwd :存储用户的基本信息
/etc/shadow :存储用户的安全信息
/etc/group :存储组的基本信息
/etc/gshadow :存储组的安全信息(一般不用)
/etc/passwd文件结构(表格)(共7列):
一行代表一个用户的信息,一行由7列构成,每一列具有不同的含义
root:x:0:0:root:/root:/bin/bash
1、用户名 (用户登陆系统时使用的名字,即登录名)
2、x说明用户有密码,且密码存储在/etc/shadow文件中,并加密。
3、UID用户编号为0
4、所属的组的编号(GID标识一个组)(用户是哪一个组的成员)为0
5、用户的comment信息(用户的全名或者一些解释信息)
6、用户的主目录的绝对路径
7、用户默认登录的SHELL类型(shell外壳程序,用于命令解释执行)
/etc/shadow文件结构(影子密码文件,存储用户的加密密码和其他安全信息的文件)
root:sdfkjshfkjshdfkjhsfkdsfdsfds:13657:0:99999:7:::
1、用户名
2、用户的加密密码(MD5算法得出的,密码不可逆)
3、其他安全选项(如有效期、锁定时间等)(Uinx时间)
/etc/group
root:x:0:root,admin,normal
1、组名
2、组密码(废弃,一般不使用)
3、GID:组的惟一标识号码
4、组成员,可以有多个成员
*****创建用户,对以上4个文件的影响如何??????****
创建用户本质:在以上文件中建立相应的行
命令:useradd = adduser(功能相同)
默认语法(\命令行,换行)
格式: useradd user_name(最简单、最常用的,直接创建用户的命令格式)
帮助: man useradd
复杂用法:useradd [-option values ...] user_name
范例:
1、创建用户abc,其他的选项默认
useradd abc
通过运行以上命令,系统会做如下修改:
1、在/etc/passwd等文件中添加了相应的行
2、在/home目录下自动创建了以用户名命名的主目录
3、自动将用户锁定,不允许登录,因为没有设置密码
2、为用户设置密码,使其可以登录
passwd user_name ——> passwd abc
3、创建用户hygj,用户的主目录设置为/home/hyadmin,默认的shell为
/bin/sh ,用户全名为hygj administrator。
useradd -d /home/hyadmin -s /bin/sh -c "hygj administrator" hygj
选项 选项 选项 用户名
用户信息维护:
修改用户名:
usermod -l new_name username
usermod -l newabc abc:把abc用户的名字改为newabc
锁定用户:使用户帐户暂时失效,不能够登录系统
1、usermod -L -U (L=LOCK U=UNLOCK)
帐户加锁本质,在/etc/shadow/文件的相应行的加密密码前加“!”
2、passwd -l -u (l=lock u=unlock)
密码加锁的本质,在/etc/shadow/文件的加密密码前加“!!”
反过来,如果锁定用户可以在密码前加“!”或“!!”,就可以实现锁定用户
用户身份切换
一般情况下,不推荐直接使用超级用户登录系统,推荐使用普通用户登录系统
当需要执行管理任务时,使用临时身份切换执行管理任务。
:用于临时的特定用户的管理任务
1、su 需要把管理员的密码告诉用户(一般管理员自己使用)
2、sudo 不需要管理员密码,即可执行管理员的任务(普通用户使用)
(默认情况下,只有管理员才可以创建用户)
1、su命令
格式: su user_name
user_name指用户需要使用的管理员帐户,如root
su [root] (没有将管理员的环境进行转换)
实验:让普通用户,创建用户test
1、创建用户test useradd test
2、给用户test设置密码 passwd test
3、用户test用户登录 login。。。
4、su 回车,输入管理员密码
5、通过使用绝对路径执行管理任务
su - root(完全和管理员相同)
4、su - root 回车,输入管理员密码
5、此时和管理员的环境一样
以上的用法,存在一个缺点,就是管理员必须告诉用户超级密码,这样是不安全的。
sudo可以在不给用户管理员密码的情况下,执行管理任务
给普通用户授权步骤:
1、visudo
2、添加用户
normal ALL=(ALL) NOPASSWD:ALL
3、保存退出
4、用普通用户,通过sudo /path/command执行管理任务
用户的删除:
命令:userdel [-r] user_name
-r:在删除用户时,一并把用户的主目录一起删除,默认没有-r选项是不删除的
图形界面的用户管理:redhat-config-users
==================SHELL======================
SHELL的概念:
接口,用于用户和系统交互,它在内核的外面,用于向内核发出指令。
linux内核(汇编语言、C语言)
界面友好性非常差。使用接口用过编程实现,系统调用(API)
操作界面:
图形SHELL:gnome桌面环境、KDE桌面环境
字符SHELL:bash sh csh tcsh ash
SHELL特性:拥有哪些优点以简化用户的操作
1、命令和文件的自动补齐功能
TAB(制表符):按一次是补齐,连续按两次就会把所有可能都显示出来
2、命令的别名
alias 显示系统中定义的别名
alias alias_name='command' 定义别名
unalias alias_name 删除别名
3、命令历史的功能
history 显示命令历史
调用历史
!number (编号):调用指定编号的命令
!String 执行最近历史中被执行过的以String开头的命令
!! 执行上一次执行的命令
向上箭头 从最近执行的命令向上翻行,然后执行
4、支持通用的管道和重定向功能(适用于DOS等系统)
重定向:修改命令的输入或输出
计算机的
标准输入 键盘和鼠标
标准输出 显示器
如果不希望使用以上的标准输入输出,就可以使用重定向符号
1、输出重定向符号
> 覆盖模式
>> 追加模式
ls 列出当前目录的文件列表,到显示器
ls > list 将当前目录的文件列表信息存储在文件list中
2、输入重定向符号
< 覆盖模式
<< 追加模式
mail to root 回车就会进入写邮件的界面
mail to root < list 将list文件的内容作为邮件的内容发给root用户
管道:一个命令的输出用于另一个命令的输入
“|” 管道符号
命令 :grep
grep string file_name :在file_name中找出包含string的行
管道范例:
1、ls -l > list
2、grep inittab list
合并
3、ls -l | grep inittab 【文件名】
把ls -l的输出结果,作为grep命令的文件名参数
在ls -l的输出结果中找到包含”inittab“的行
分析:
rpm -qa | grep samba
在rpm -qa命令的输出结果中找”samba“字符串
5、具有强大的编程功能(批处理文件的语法)
程序功能:检查文件abc是否存在,且是目录
#!/bin/sh
if [ -d abc ]
then
echo "abc is exists,it is a dircetory"
else
echo "abc is not exists"
fi