“Linux 基础入门(新版)”实验报告

用户及文件权限管理

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 了,第三列则表示当前伪终端的启动时间。

2.创建用户

在 Linux 系统里, root 账户拥有整个系统至高无上的权利,比如 新建/添加 用户。root 权限,系统权限的一种,与 SYSTEM 权限可以理解成一个概念,但高于 Administrator 权限,root 是 Linux 和 UNIX 系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权力,所有对象他都可以操作。

我们一般登录系统时都是以普通账户的身份登录的,要创建用户需要 root 权限,这里就要用到 sudo 这个命令了。不过使用这个命令有两个大前提,一是你要知道当前登录用户的密码,二是当前用户必须在 sudo 用户组。

su 可以切换到用户 user,执行时需要输入目标用户的密码,sudo 可以以特权级别运行 cmd 命令,需要当前用户属于 sudo 组,且需要输入当前用户的密码。su - 命令也是切换用户,同时环境变量也会跟着改变成目标用户的环境变量。

实验楼

上图中使用sudo命令新建一个叫 lilei 的用户,实验楼的环境目前设置为 shiyanlou 用户执行 sudo 不需要输入密码,通常此处需要按照提示输入 shiyanlou 密码(Linux 下密码输入是不显示任何内容的)。然后是给 lilei 用户设置密码,后面的选项可以直接回车使用默认值。这个命令不但可以添加用户到系统,同时也会默认为新用户创建 home 目录。创建好新用户就可以切换到新用户登录了。输入刚刚设置的 lilei 的密码。退出当前用户跟退出终端一样可以使用 exit 命令或者使用快捷键 Ctrl+d。

3.用户组

在 Linux 里面每个用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源,就跟家的形式差不多。当然一个用户是可以属于多个用户组的,正如你既属于家庭,又属于学校或公司。

在 Linux 里面如何知道自己属于哪些用户组呢?

方法一:使用 groups 命令

实验楼

其中冒号之前表示用户,后面表示该用户所属的用户组。这里可以看到 shiyanlou 用户属于 shiyanlou 用户组,每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组。默认情况下在 sudo 用户组里的可以使用 sudo 命令获得 root 权限(来创建用户)。

方法二:查看 /etc/group 文件

实验楼

cat 命令用于读取指定文件的内容并打印到终端输出,| sort 表示将读取的文本进行排序再输出,你可以在最下面看到 shiyanlou 的用户组信息。内容太多可用命令筛选出来。

实验楼

etc/group 文件内容包括用户组(Group)、用户组口令、GID 及该用户组所包含的用户(User),每个用户组一条记录。格式:group_name:password:GID:user_list 上面shiyanlou用户组口令为一个 x 并不是说密码就是它,只是表示密码不可见而已。

将其它用户加入 sudo 用户组

默认情况下新创建的用户是不具有 root 权限的,也不在 sudo 用户组,可以让其加入 sudo 用户组从而获取 root 权限。使用 usermod 命令可以为用户添加用户组,同样使用该命令你必需有 root 权限,你可以直接使用 root 用户为其它用户添加用户组,或者用其它已经在 sudo 用户组的用户使用 sudo 命令获取权限来执行该命令。这里我用 shiyanlou 用户执行 sudo 命令将 lilei 添加到 sudo 用户组,让它也可以使用 sudo 命令获得 root 权限:

实验楼

上图中不存在lilei这个用户,先创建lilei这个用户,默认在lilei这个用户组,然后再将lilei添加到sudo用户组。然后你再切换回 lilei 用户,就可以使用 sudo 获取 root 权限了。

4.删除用户

实验楼

Linux 文件权限

查看文件权限

实验楼

实验楼

实验楼

文件类型:软链接文件:链接文件是分为两种的,另一种当然是“硬链接”。硬链接不常用,而软链接等同于 Windows 上的快捷方式。

文件权限:读权限,表示你可以使用 cat 之类的命令来读取某个文件的内容;写权限,表示你可以编辑和修改某个文件; 执行权限,通常指可以运行的二进制程序文件或者脚本文件,如同 Windows 上的 exe 后缀的文件,不过 Linux 上不通过后缀名来区分文件类型。需要注意的是,一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件。所有者权限,这一点相信你应该明白了,至于所属用户组权限,是指你所在的用户组中的所有其它用户对于该文件的权限,比如,你有一个艾派德,那么用户组权限就决定了你的兄弟姐妹有没有权限使用它破坏它和占有它。

链接数:链接到该文件所在的 inode 结点的文件名数目

文件大小:以 inode 结点大小为单位来表示文件大小,可以给 ls 加上 -lh 参数来更直观的查看文件的大小。

关于 ls 命令的一些其它常用的用法:

ls -A 显示除了 .(当前目录)和 ..(上一级目录)以及隐藏文件之外的所有文件(Linux 下以 . 开头的文件为隐藏文件)。

ls -Al 可以同时使用 -A 和 -l 参数

ls -dl <目录名> 查看某一个目录的完整属性,而不是显示目录里面的文件属性

ls -AsSh 显示所有文件大小其中小 s 为显示文件大小,大 S 为按文件大小排序,若需要知道如何按其它方式排序,请使用“man”命令查询。

变更文件所有者

实验楼

如上图,用户lilei用touch命令创建了名为iphone6的文件,用ll命令查询该文件权限,文件所有者为lilei,用sudo chown命令将文件所有者变更为shiyanlou。

修改文件权限

如果你有一个自己的文件不想被其他用户读、写、执行,那么就需要对文件的权限做修改,这里有两种方式:

1.二进制数字表示

实验楼

每个文件包含3个权限:所有者权限,所属用户组权限和其它用户权限。每个权限对应一个rwx,比如所有者拥有读、写、执行的权限,则为7,拥有读、写的权限则为6,拥有读的权限则为4,没有读写执行的权限则为0。所以要将文件iphone6 的权限改为只有我自己可以用那么就这样:先在文件里加点内容:echo "echo "hello shiyanlou"" > iphone6然后修改权限:chmod 700 iphone6

实验楼

上图shiyanlou用户创建了一个iphone6文件,用ll命令查询该文件权限,可以看到,其它用户有读的权限。用echo命令往iphone6文件中写入点内容,切换到其它用户lilei,用cat命令读取文件中的内容,可以正常读取。由于其它用户不允许更改文件的权限,所以切换回shiyanlou用户并用chmod命令更改文件的权限,上图中chmod命令后面的600表示文件所有者拥有读写的权限,所属用户组没有读写执行的权限,其它用户也没有读写执行的权限。再用ll命令查看iphone6文件权限,可以看到只有所有者拥有rw即读写的权限。再切换到其它用户lilei,用cat命令读取文件内容,会报“权限不够”

2.加减赋值操作

完成上述相同的效果,你可以:

实验楼

上图shiyanlou用户用chmod命令修改iphone6文件权限,该命令后面的go-rw表示用户组和其它用户去除rw即读写权限。g、o 还有 u 分别表示 group、others 和 user,+ 和 - 分别表示增加和去掉相应的权限。

更多

adduser 和 useradd 的区别是什么?

答:useradd 只创建用户,创建完了用 passwd lilei 去设置新用户的密码。adduser 会创建用户,创建目录,创建密码(提示你设置),做这一系列的操作。其实 useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作。

作业

添加一个用户 loutest,使用 sudo 创建文件 /opt/forloutest,设置成用户 loutest 可以读写。

最新评论
暂无评论~