一、Linux用户管理
Linux是一个可以实现多用户登陆的操作系统,比如“李雷”和“韩梅梅”都可以同时登陆同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件。但实际上他们的文件都是放在同一个物理磁盘上的甚至同一个逻辑分区或者目录里,但是由于Linux的用户管理和权限机制,不同用户不可以轻易地查看、修改彼此的文件。
1、查看用户
输出的第一列表示打开当前伪终端的用户的用户名(要查看当前登录用户的用户名,去掉空格直接使用whoami即可),第二列的pts/0中pts表示伪终端,所谓伪是相对于/dev/tty设备而言的,七个使用[Ctrl]+[Alt]+[F1]~[F7]进行切换的/dev/tty设备是“真终端”,伪终端就是当你在图形用户界面使用/dev/tty7时每打开一个终端就会产生一个伪终端,pts/0后面那个数字就表示打开的伪终端序号,你可以尝试再打开一个终端,然后在里面输入who am i,看第二列是不是就变成pts/1了,第三列则表示当前伪终端的启动时间。
who命令其它常用参数
-a打印能打印的全部
-d打印死掉的进程
-m同am i,momlikes
-q打印当前登录用户数及用户名
-u打印当前登录用户登录信息
-r打印运行等级
2、创建用户
在Linux系统里,root账户拥有整个系统至高无上的权利,比如新建/添加用户。
root权限,系统权限的一种,与SYSTEM权限可以理解成一个概念,但高于Administrator权限,root是Linux和UNIX系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权力,所有对象他都可以操作(黑客在入侵系统的时候,都要把权限提升到root权限,用Windows的方法理解也就是将自己的非法帐户添加到Administrators用户组)。更比如安卓操作系统中(基于Linux内核)获得root权限之后就意味着已经获得了手机的最高权限,这时候你可以对手机中的任何文件(包括系统文件)执行所有增、删、改、查的操作。
要创建用户需要root权限,要用到sudo这个命令。使用这个命令有两个大前提,一是要知道当前登录用户的密码,二是当前用户必须在sudo用户组。shiyanlou用户也属于sudo用户组。
su,su-与sudo
su可以切换到用户user,执行时需要输入目标用户的密码,sudo可以以特权级别运行cmd命令,需要当前用户属于sudo组,且需要输入当前用户的密码。su -命令也是切换用户,同时环境变量也会跟着改变成目标用户的环境变量。
已经创建好一个用户,并且可以使用创建的用户登录了,使用如下命令切换登录用户:
退出当前用户跟退出终端一样可以使用exit命令或者使用快捷键Ctrl+d。
3、用户组
在Linux里面每个用户都有一个归属(用户组),用户组就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源,就跟家的形式差不多,兄弟姐妹(不同的用户)属于同一个家(用户组),共同拥有这个家(共享资源),爸妈的对待都一样(共享权限),偶尔写写日记,其他人未经允许不能查看(私有资源和权限)。当然一个用户是可以属于多个用户组的,正如既属于家庭,又属于学校或公司。
在Linux里面如何知道自己属于哪些用户组呢?
方法一:使用groups命令
冒号之前表示用户,后面表示该用户所属的用户组。每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组(相当于家长或者老总)。默认情况下在sudo用户组里的可以使用sudo命令获得root权限。shiyanlou用户也可以使用sudo命令,为什么这里没有显示在sudo用户组里呢?可以查看下/etc/sudoers.d/shiyanlou文件,在/etc/sudoers.d目录下创建了这个文件,从而给shiyanlou用户赋予了sudo权限:
方法二:查看/etc/group文件
cat命令用于读取指定文件的内容并打印到终端输出,| sort表示将读取的文本进行一个字典排序再输出。可以在最下面看到shiyanlou的用户组信息:
可以使用命令过滤掉一些不想看到的结果:
etc/group文件格式说明
/etc/group的内容包括用户组(Group)、用户组口令、GID及该用户组所包含的用户(User),每个用户组一条记录。格式如下:
group_name:password:GID:user_list
password字段为一个x并不是密码就是它,只是表示密码不可见。
将其它用户加入sudo用户组
默认情况下新创建的用户是不具有root权限的,也不在sudo用户组,可以让其加入sudo用户组从而获取root权限:
会提示lilei不在sudoers文件中,意思就是lilei不在sudo用户组中,至于sudoers文件(/etc/sudoers)不明后果时慎用。
使用usermod命令可以为用户添加用户组,同样使用该命令必须有root权限,可以直接使用root用户为其它用户添加用户组,或者用其它已经在sudo用户组的用户使用sudo命令获取权限来执行该命令。
这里用shiyanlou用户执行sudo命令将lilei添加到sudo用户组,让它也可以使用sudo命令获得root权限:
再切换回lilei用户,现在就可以使用sudo获取root权限了。
$ su shiyanlou #此处需要输入shiyanlou用户密码,可以点击右侧工具栏中的“SSH直连”查看
4、删除用户
二、Linux文件权限
1、查看文件权限
ls命令,用它来列出并显示当前目录下的文件,这是在不带任何参数的情况下,它还可以查看文件权限。
使用较长格式列出文件:
•文件类型
Linux里面一切皆文件,正因为这一点才有了设备文件(/dev目录下有各种设备文件,大都跟具体的硬件设备相关)这一说。socket:网络套接字,pipe管道,软链接文件:链接文件是分为两种,另一种是“硬链接”(硬链接不常用),软链接等同于Windows上的快捷方式。
•文件权限
读权限,表示你可以使用cat之类的命令来读取某个文件的内容;写权限,表示你可以编辑和修改某个文件;执行权限,通常指可以运行的二进制程序文件或者脚本文件,如同Windows上的exe后缀的文件,不过Linux上不是通过文件后缀名来区分文件的类型。一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息。所有者权限,自行体会,不必多说。所属用户组权限,是指所在的用户组中的所有其它用户对于该文件的权限,比如,你有一个iPad,那么这个用户组权限就决定了你的兄弟姐妹有没有权限使用它破坏它和占有它。
•链接数
链接到该文件所在的inode结点的文件名数目(这个概念涉及到Linux文件系统的相关概念知识)。
•文件大小
以inode结点大小为单位来表示的文件大小,可以给ls加上-lh参数来更直观的查看文件的大小。
ls命令的一些其它常用的用法:
显示除了.(当前目录)和..(上一级目录)之外的所有文件,包括隐藏文件(Linux下以.开头的文件为隐藏文件)。
可以同时使用-A和-l参数:
$ ls -dl <目录名>
显示所有文件大小,并以普通人类能看懂的方式呈现:
$ ls -AsSh
其中小s为显示文件大小,大S为按文件大小排序,若需要知道如何按其它方式排序,请使用“man”命令查询。
2、变更文件所有者
假设目前是lilei用户登录,新建一个文件,命名为“ iphone6 ”:
$ touch iphone6
可见文件所有者是lilei:
换回到shiyanlou用户身份,使用以下命令变更文件所有者为shiyanlou:
$ cd /home/lilei
$ ls iphone6
$ sudo chown shiyanlou iphone6
现在查看,发现文件所有者成功修改为shiyanlou:
3、修改文件权限
•方式一:二进制数字表示
每个文件的三组权限(拥有者,所属用户组,其他用户,顺序是一定的)对应一个" rwx ",也就是一个“ 7 ”,如果要将文件“ iphone6 ”的权限改为只有自己可以用那么就这样:
为了演示,先在文件里加点内容:
$ echo "echo \"hello shiyanlou\"" > iphone6
修改权限:
$ chmod 700 iphone6
现在,其他用户已经不能读这个“ iphone6 ”文件了:
•方式二:加减赋值操作
$ chmod go-rw iphone6
g、o还有u分别表示group、others和user,+和-分别表示增加和去掉相应的权限。
三、adduser和useradd的区别是什么?
useradd只创建用户,创建完了用passwd lilei去设置新用户的密码。adduser会创建用户,创建目录,创建密码(提示你设置),做这一系列的操作。其实useradd、userdel这类操作更像是一种命令,执行完了就返回。而adduser更像是一种程序,需要你输入、确定等一系列操作。
四、作业
图片版详见http://t.cn/RaWoQAT