项目 | 内容 |
---|---|
这个作业属于哪个课程 | Linux系统与应用 |
这个作业的要求在哪里 | 作业要求 |
学号-姓名 | 17041420-刘钰文 |
作业学习目标 | 1.学习Linux系统用户管理 2.学习vim使用及配置 |
Linux用户管理
-
简答:Linux系统为什么应避免使用root用户登录?答:
任何情况下,我们都不应当长时间占有并使用超级用户的权限。
在信息安全中,有一条公认的原则——最小权限原则,即系统中所有的程序和特权用户应当仅获得完成相应工作所需的最少的权限,该原则由Jerry Saltzer于1974年提出[1]。
The principle of least privilege. Every program and every privileged user of the system should operate using the least amount of privilege necessary to complete the job. The purpose of this principle is to reduce the number of potential interactions among privileged programs to the minimum necessary to operate correctly, so that one may develop confidence that unintentional, unwanted, or improper uses of privilege do not occur. If this principle is followed, the effect of accidents is reduced. Also, if a question related to misuse of a privilege occurs, the number of programs which must be audited is minimized.
该原则减少特权程序和用户所能够进行的特权操作的数量:对于程序进行限制,可以降低干扰和破坏其他功能的可能;对于用户进行限制,可以防止误操作和权限滥用的可能。1983年美国国防部发布的《可信计算机系统评估准则》(简称TCSEC,又称橙皮书)是计算机系统信息安全建设和评估的标杆文件,对于系统的安全建设也包含了该思想。
TCSEC中对高安全级别(B3以上)的信息系统的管理员划分出了系统管理员和安全管理员不同的角色,使得系统中不存在超级用户。信息安全中的三权分立思想也是为了避免权限滥用而拆分超级用户的权限。(信息安全中还公认一点:人是不可信的,是一定会出错的,只有程序才有可能不会错,所以对人的权限进行限制是提升安全性非常行之有效的方法。)为了安全,防止误操作和权限滥用,Linux系统应避免使用root用户登录。若实在是权限不够,可以通过su命令或者sudo命令临时使用root权限。
-
操作
1)如何在与用户有关的三个文件中查看当前用户的信息?
cat /etc/passwd | grep toad #查找/etc/passwd文件中有出现dwingzone的行取出来并显示在终端
请简要描述这三个文件?
1./etc/passwd文件内容格式
用户名: 密码 : uid : gid :用户描述:主目录:登陆shell
用户名:每个用户的标识字符串
密码:这里的x表示是暗文显示。如果是其他什么数字,就代表是密码明文。
uid:每个用户必须被分配一个userid,”0”为root保留ID.1-99为系统保留,分配给系统预定义帐号。Linux用户可以分为3类:超级用户(root 用户标识号是0)、管理用户和普通用户。
gid :字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。
2. /etc/shadow 文件内容格式
Linux中 /etc/shadow文件中的记录行与/etc/passwd中的一一对应,它由 pwconv 命令根据/etc/passwd中的数据自动产生。它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用“:”隔开,文件的每行是8个冒号分割的9个域,格式如下:
username: passwd: lastchg: min: max: warn: inactive: expire: flag
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
3. 用户组的所有信息都存放在/etc/group文件中。此文件的格式是由冒号(:)隔开若干个字段,这些字段具体如下:
组名:口令:组标识号:组内用户列表
具体解释:
组名:
组名是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
口令:
口令字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是*。
组标识号:
组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组。别称GID.
组内用户列表:
是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
2)用id命令查看当前用户相关信息
请简要描述输出结果?
id 命令可以显示真实有效的用户 ID(UID) 和组 ID(GID)。UID 是对一个用户的单一身份标识。组 ID(GID)则对应多个UID。
用户 pungki 的 UID 号码= 1000, GID 号码= 1000 用户 pungki 是下面的组成员 : pungki 的 GID 号码= 1000 adm 的 GID 号码= 4 cdrom 的 GID 号码= 24 sudo 的 GID 号码= 27 dip 的 GID 号码= 30 plugdev 的 GID 号码= 46 lpadmin 的 GID 号码= 1116 sambashare 的 GID 号码= 126
3)创建两个账号,一个账号为test,另外一个账号以大写E开头加上你自己学号尾数4位,两个账号分别设置密码及管理员权限,账号设置完成后,切换账号简单查看信息后,删除test账号,保留另一账号,以备后续操作。
a)创建账号b) 设置密码
c)设置权限
请简要描述用户组的概念?
用户组:操作系统中具有相同系统权限的一组用户
d)切换账号
e)删除账号test
VIM简单配置
a)切换到保留的新创建账号
b)在用户主目录创建一个VIM配置文件.vimrc
c)打开并向文件中添加以下内容
set number "显示行号 syntax on "语法高亮 set cursorline set ruler " 显示标尺 set showcmd " 输入的命令显示出来,看的清楚些 set scrolloff=3 " 光标移动到buffer的顶部和底部时保持3行距离 set novisualbell " 不要闪烁(不明白) set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} "状态行显示的内容 set nocompatible "去除VIM一致性,必须" set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 set termencoding=utf-8 set encoding=utf-8 set fileencoding=utf-8 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""新文件标题 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "新建.c,.h,.sh,.java文件,自动插入文件头 autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" ""定义函数SetTitle,自动插入文件头 func SetTitle() "如果文件类型为.sh文件 if &filetype == 'sh' call setline(1,"\#########################################################################") call append(line("."), "\# File Name: ".expand("%")) call append(line(".")+1, "\# Author: dwingzone") call append(line(".")+2, "\# mail:[email protected] ") call append(line(".")+3, "\# Created Time: ".strftime("%c")) call append(line(".")+4, "\#########################################################################") call append(line(".")+5, "\#!/bin/bash") call append(line(".")+6, "") else call setline(1, "/*************************************************************************") call append(line("."), " > File Name: ".expand("%")) call append(line(".")+1, " > Author: Toad") call append(line(".")+2, " > Mail: [email protected] ") call append(line(".")+3, " > Created Time: ".strftime("%c")) call append(line(".")+4, " ************************************************************************/") call append(line(".")+5, "") endif if &filetype == 'cpp' call append(line(".")+6, "#include") call append(line(".")+7, "using namespace std;") call append(line(".")+8, "") endif if &filetype == 'c' call append(line(".")+6, "#include ") call append(line(".")+7, "") endif "新建文件后,自动定位到文件末尾 autocmd BufNewFile * normal G endfunc """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set autoindent " 自动缩进 set cindent set tabstop=4 " Tab键的宽度 set softtabstop=4 " 统一缩进为4 set shiftwidth=4 set noexpandtab " 不要用空格代替制表符 set smarttab " 在行和段开始处使用制表符 set showmatch set history=1000 " 历史记录数 set nobackup "禁止生成临时文件 set noswapfile set ignorecase "搜索忽略大小写 set hlsearch "搜索逐字符高亮 set incsearch set gdefault "行内替换 set langmenu=zh_CN.UTF-8 "语言设置 set helplang=cn set laststatus=2 " 总是显示状态行 filetype on " 侦测文件类型 filetype plugin on " 载入文件类型插件 filetype indent on " 为特定文件类型载入相关缩进文件 set iskeyword+=_,$,@,%,#,- " 带有如下符号的单词不要被换行分割 set linespace=0 " 字符间插入的像素行数目 set wildmenu " 增强模式中的命令行自动完成操作 set backspace=2 " 使回格键(backspace)正常处理indent, eol, start等 set whichwrap+=<,>,h,l " 允许backspace和光标键跨越行边界 set mouse=a " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位) set selection=exclusive set selectmode=mouse,key "自动补全 :inoremap ( () i :inoremap ) =ClosePair(')') :inoremap { { } O :inoremap } =ClosePair('}') :inoremap [ [] i :inoremap ] =ClosePair(']') :inoremap " "" i :inoremap ' ''i function! ClosePair(char) if getline('.')[col('.') - 1] == a:char return "\" else return a:char endif endfunction set completeopt=longest,menu "打开文件类型检测, 加了这句才可以用智能补全
d)创建并打开一个以.c结尾的文件,如vim helloworld.c
新建的文件显示如下