Linux初学3-1 *用户管理

===============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 

你可能感兴趣的:(编程,linux,redhat,配置管理,bash)