1.1实验内容
Linux中创建、删除用户,及用户组等操作。Linux中的文件权限设置。
1.2实验知识点
二、Linux用户管理
通过第一节课程的学习,你应当早已晓得,Linux是一个可以实现多用户登入的操作系统,例如“李雷”和“韩梅梅”都可以同时登入同一台主机,她们共享一些主机的资源,但她们也分别有自己的用户空间,用于储存各自的文件。但实际上她们的文件都是置于同一个数学c盘上的甚至同一个逻辑分区或则目录里,而且因为Linux的用户管理和权限机制,不同用户不可以轻易地查看、修改彼此的文件。
下边我们就来学习一下Linux下的帐户管理的基础知识。
2.1查看用户
$ who am i
或者
$ who mom likes
输出的第一列表示打开当前伪终端的用户的用户名(要查看当前登入用户的用户名,除去空格直接使用whoami即可),第二列的pts/0中pts表示伪终端,所谓伪是相对于/dev/tty设备而言的,还记得上一节讲终端时的那七个使用[Ctrl]+[Alt]+[F1]~[F7]进行切换的/dev/tty设备么,这是“真终端”linux 安装,伪终端就是当你在图形用户界面使用/dev/tty7时每打开一个终端都会形成一个伪终端,pts/0前面那种数字就表示打开的伪终端序号,你可以尝试再打开一个终端,之后在上面输入whoami,看第二列是不是就弄成pts/1了,第三列则表示当前伪终端的启动时间。
who命令其它常用参数
参数说明
-a
复印能复印的全部
-d
复印跑掉的进程
-m
同ami,momlikes
-q
复印当前登入用户数及用户名
-u
复印当前登入用户登入信息
-r
复印运行等级
2.2创建用户
在Linux系统里,root帐户拥有整个系统至高无上的权力,例如新建/添加用户。
root权限,系统权限的一种,与SYSTEM权限可以理解成一个概念,但低于Administrator权限,root是Linux和UNIX系统中的超级管理员用户账户,该账户拥有整个系统至高无上的权利,所有对象他都可以操作,所以好多黑客在入侵系统的时侯,都要把权限提高到root权限,用Windows的方式理解也就是将自己的非法账户添加到Administrators用户组。更例如安卓操作系统中(基于Linux内核)获得root权限以后就意味着早已获得了手机的最高权限,这时侯你可以对手机中的任何文件(包括系统文件)执行所有增、删、改、查的操作。
我们通常登入系统时都是以普通帐户的身分登入的,要创建用户须要root权限,这儿就要用到sudo这个命令了。不过使用这个命令有两个大前提,一是你要晓得当前登入用户的密码,二是当前用户必须在sudo用户组。shiyanlou用户也属于sudo用户组(稍后会介绍怎么查看和添加用户组)。
su,su-与sudo
须要注意Linux环境下输入密码是不会显示的。
su可以切换到用户user,执行时须要输入目标用户的密码,sudo可以以特权级别运行cmd命令,须要当前用户属于sudo组,且须要输入当前用户的密码。su-命令也是切换用户,同时环境变量也会跟随改变成目标用户的环境变量。
如今我们新建一个叫lilei的用户:
$ sudo adduser lilei
实验楼的环境目前设置为shiyanlou用户执行sudo不须要输入密码,一般此处须要根据提示输入shiyanlou密码(Linux下密码输入是不显示任何内容的),shiyanlou用户密码可以通过sudopasswdshiyanlou命令进行设置。之后是给lilei用户设置密码,前面的选项的一些内容你可以选择直接回车使用默认值:
这个命令不但可以添加用户到系统,同时也会默认为新用户创建home目录:
$ ls /home
如今你已然创建好一个用户,但是你可以使用你创建的用户登入了,使用如下命令切换登陆用户:
$ su -l lilei
输入刚才设置的lilei的密码,之后输入如下命令并查看输出:
$ who am i
$ whoami
$ pwd
退出当前用户跟退出终端一样可以使用exit命令或则使用快捷键Ctrl+d。
2.3用户组
在Linux上面每位用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源,就跟家的方式差不多,你的兄弟姊妹(不同的用户)属于同一个家(用户组),大家可以共同拥有这个家(共享资源),父母对待大家都一样(共享权限),你时常写写日记,其他人未经准许不能查看(私有资源和权限)。其实一个用户是可以属于多个用户组的,正如你既属于家庭,又属于中学或公司。
在Linux上面怎么晓得自己属于什么用户组呢?
方式一:使用groups命令
$ groups shiyanlou
其中逗号之前表示用户,前面表示该用户所属的用户组。这儿可以看见shiyanlou用户属于shiyanlou用户组,每次新建用户倘若不指定用户组的话,默认会手动创建一个与用户名相同的用户组(差不多就相当于父母的意思,或则说是老板)。默认情况下在sudo用户组里的可以使用sudo命令获得root权限。shiyanlou用户也可以使用sudo命令,为何这儿没有显示在sudo用户组里呢?可以查看下/etc/sudoers.d/shiyanlou文件,我们在/etc/sudoers.d目录下创建了这个文件,因而给shiyanlou用户赋于了sudo权限:
方式二:查看/etc/group文件
$ cat /etc/group | sort
这儿cat命令用于读取指定文件的内容并复印到终端输出,前面会详尽讲它的使用。|sort表示将读取的文本进行一个字典排序再输出,之后你将见到如下一堆输出,你可以在最下边见到shiyanlou的用户组信息:
没找到linux用户组管理,没关系,你可以使用命令过滤掉一些你不想见到的结果:
$ cat /etc/group | grep -E "shiyanlou"
/etc/group文件格式说明
/etc/group的内容包括用户组(Group)、用户组口令、GID及该用户组所包含的用户(User),每位用户组一条记录。格式如下:
group_name:password:GID:user_list
你看见里面的password数组为一个x并不是说密码就是它,只是表示密码不可见而已。
这儿须要注意,假若用房主用户组,即用户的GID等于用户组的GID,这么最后一个数组user_list就是空的,例如shiyanlou用户,在/etc/group中的shiyanlou用户组前面是不会显示的。lilei用户,在/etc/group中的lilei用户组前面是不会显示的。
将其它用户加入sudo用户组
默认情况下新创建的用户是不具有root权限的,也不在sudo用户组linux用户组管理,可以让其加入sudo用户组进而获取root权限:
# 注意 Linux 上输入密码是不会显示的
$ su -l lilei
$ sudo ls
会提示lilei不在sudoers文件中,意思就是lilei不在sudo用户组中,至于sudoers文件(/etc/sudoers)你如今最好不要动它,操作不慎会造成比较麻烦的后果。
使用usermod命令可以为用户添加用户组,同样使用该命令你必需有root权限,你可以直接使用root用户为其它用户添加用户组,或则用其它早已在sudo用户组的用户使用sudo命令获取权限来执行该命令。
这儿我用shiyanlou用户执行sudo命令将lilei添加到sudo用户组,让它也可以使用sudo命令获得root权限:
$ su shiyanlou # 此处需要输入 shiyanlou 用户密码,shiyanlou 的密码可以通过 `sudo passwd shiyanlou` 进行设置。
$ groups lilei
$ sudo usermod -G sudo lilei
$ groups lilei
之后你再切换回lilei用户,如今就可以使用sudo获取root权限了。
2.4删掉用户
删掉用户是很简单的事:
$ sudo deluser lilei --remove-home
三、Linux文件权限
文件权限就是文件的访问控制权限,即什么用户和组群可以访问文件以及可以执行哪些样的操作。
Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux系统不仅对用户权限作了严格的划分外,还在用户身分认证、访问控制、传输安全、文件读写权限等方面作了缜密的控制。
在Unix/Linux中的每一个文件或目录都包含有访问权限,这种访问权限决定了谁能访问和怎样访问那些文件和目录。
3.1查看文件权限
我们之前早已好多次用到ls命令了,如你所见,我们用它来列举并显示当前目录下的文件,其实这是在不带任何参数的情况下,它能做的其实不止如此多,如今我们就要用它来查看文件权限。
使用较长格式列举文件:
$ ls -l
你可能不仅晓得最后面那一项是文件名之外,其它项就不太清楚了,这么究竟是哪些意思呢:
可能你还是不太明白,例如第一项文件类型和权限那一堆东西具体指哪些,链接又是哪些,何为最后更改时间linux运维最佳实践,下边一一道来:
关于文件类型,这儿有一点你必需时刻谨记Linux上面一切皆文件,正由于这一点才有了设备文件(/dev目录下有各类设备文件,大都跟具体的硬件设备相关)这一说。socket:网路套接字,具体是哪些,感兴趣的用户可以自己去了解或期盼实验楼的后续相关课程。pipe管线,这个东西很重要,我们之后将会讨论到,这儿你先晓得有它的存在即可。软链接文件:链接文件是分为两种的,另一种其实是“硬链接”(硬链接不常用,具体内容不作为本课程讨论重点,而软链接等同于Windows上的快捷方法,你记住这一点就够了)。
读权限,表示你可以使用cat之类的命令来读取某个文件的内容;写权限,表示你可以编辑和更改某个文件;执行权限,一般指可以运行的二补码程序文件或则脚本文件,就像Windows上的exe后缀的文件,不过Linux上不是通过文件后缀名来分辨文件的类型。你须要注意的一点是,一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才准许在其中创建其它文件,这是由于目录文件实际保存着该目录上面的文件的列表等信息。
所有者权限,这一点相信你应当明白了,至于所属用户组权限,是指你所在的用户组中的所有其它用户对于该文件的权限,例如,你有一个iPad,这么这个用户组权限就决定了你的兄弟姊妹有没有权限使用它破坏它和占有它。
链接到该文件所在的inode结点的文件名数量(关于这个概念涉及到Linux文件系统的相关概念知识,不在本课程的讨论范围,感兴趣的用户可以自己去了解)。
以inode结点大小为单位来表示的文件大小,你可以给ls加上-lh参数来更直观的查看文件的大小。
明白了文件权限的一些概念,我们顺带补充一下关于ls命令的一些其它常用的用法:
$ ls -A
其实,你可以同时使用-A和-l参数:
$ ls -Al
查看某一个目录的完整属性,而不是显示目录上面的文件属性:
$ ls -dl
$ ls -AsSh
其中小s为显示文件大小,大S为按文件大小排序,若须要晓得怎样按其它方法排序,请使用“man”命令查询。
3.2变更文件所有者
若后面早已执行删掉lilei用户的命令,这儿重新创建一下。
假定目前是lilei用户登入,新建一个文件,命名为“iphone6”:
# 注意当前的用户必须是 lilei
# 如果是 shiyanlou 用户需要切换到 lilei(如果之前已经删除需要重新创建下)
$ su lilei
$ cd /home/lilei
$ touch iphone6
可见文件所有者是lilei:
如今,换回到shiyanlou用户身分,使用以下命令变更文件所有者为shiyanlou:
# 需要切换到 shiyanlou 用户执行以下操作
$ cd /home/lilei
$ ls iphone6
$ sudo chown shiyanlou iphone6
如今查看,发觉文件所有者成功更改为shiyanlou:
3.3更改文件权限
假如你有一个自己的文件不想被其他用户读、写、执行,这么就须要对文件的权限做更改,这儿有两种形式:
每位文件的三组权限(拥有者,所属用户组,其他用户,记住这个次序是一定的)对应一个"rwx",也就是一个“7”,所以假如我要将文件“iphone6”的权限改为只有我自己可以用这么就这样:
为了演示,我先在文件里加点内容:
$ echo "echo "hello shiyanlou"" > iphone6
之后更改权限:
$ chmod 600 iphone6
如今,其他用户早已不能读这个“iphone6”文件了:
完成上述相同的疗效,你可以:
$ chmod go-rw iphone6
g、o还有u分别表示group、others和user,+和-分别表示降低和去除相应的权限。