我的实验楼报告
https://www.shiyanlou.com/courses/reports/1340069
“Linux 基础入门(新版)”实验报告
用户及文件权限管理用户及文件权限管理
1.查看用户
$ who am i或者$ who mom likes
输出的第一列表示打开当前伪终端的用户的用户名,第二列的 pts/0 中 pts 表示伪终端,pts/0 后面那个数字就表示打开的伪终端序号,你可以尝试再打开一个终端,然后在里面输入 who am i ,看第二列是不是就变成 pts/1 了,第三列则表示当前伪终端的启动时间
who 命令其它常用参数
参数 说明
-a 打印能打印的全部
-d 打印死掉的进程
-m 同am i,mom likes
-q 打印当前登录用户数及用户名
-u 打印当前登录用户登录信息
-r 打印运行等级
创建用户
在 Linux 系统里, root 账户拥有整个系统至高无上的权利,比如 新建/添加 用户。
创建用户需要 root 权限,这里就要用到 sudo 这个命令了。
使用这个命令有两个大前提:一是你要知道当前登录用户的密码,二是当前用户必须在 sudo 用户组。
su,su- 与 sudo
su <user> 可以切换到用户 user,执行时需要输入目标用户的密码,
sudo <cmd> 可以以特权级别运行 cmd 命令,需要当前用户属于 sudo 组,且需要输入当前用户的密码。
su - <user> 命令也是切换用户,同时环境变量也会跟着改变成目标用户的环境变量。
创建用户代码:
$ sudo adduser lilei
这个命令不但可以添加用户到系统,同时也会默认为新用户创建 home 目录:
代码
$ ls /home
以下命令切换登录用户
$ su -l lilei
退出当前用户跟退出终端一样可以使用 exit 命令或者使用快捷键 Ctrl+d。
用户组
用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源.
查询用户属于哪一个用户组
方法一:使用 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 的用户组信息:
来
命令过滤掉一些你不想看到的结果
$ cat /etc/group | grep -E "shiyanlou"
etc/group 文件格式说明
/etc/group 的内容包括用户组(Group)、用户组口令、GID 及该用户组所包含的用户(User),每个用户组一条记录。格式如下:
group_name:password:GID:user_list
你看到上面的 password 字段为一个 x 并不是说密码就是它,只是表示密码不可见而已。
将其它用户加入 sudo 用户组
默认情况下新创建的用户是不具有 root 权限的,也不在 sudo 用户组,可以让其加入 sudo 用户组从而获取 root 权限
$ su -l lilei
$ sudo ls
会提示 lilei 不在 sudoers 文件中,意思就是 lilei 不在 sudo 用户组中,
使用 usermod 命令可以为用户添加用户组,同样使用该命令你必需有 root 权限,你可以直接使用 root 用户为其它用户添加用户组,或者用其它已经在 sudo 用户组的用户使用 sudo 命令获取权限来执行该命令。
这里我用 shiyanlou 用户执行 sudo 命令将 lilei 添加到 sudo 用户组,让它也可以使用 sudo 命令获得 root 权限:
$ su shiyanlou
$ groups lilei
$ sudo usermod -G sudo lilei
$ groups lilei
删除用户
$ sudo deluser lilei --remove-home
Linux 文件权限
查看文件权限
ls 命令,我们用它来列出并显示当前目录下的文件
我们来看看字符所代表的意思
文件类型
关于文件类型,这里有一点你必需时刻牢记 Linux 里面一切皆文件,正因为这一点才有了设备文件( /dev 目录下有各种设备文件,大都跟具体的硬件设备相关)这一说。 socket:网络套接字,pipe 管道,软链接文件:链接文件是分为两种的,另一种当然是“硬链接”(软链接等同于 Windows 上的快捷方式)
文件权限
读权限,表示你可以使用 cat <file name> 之类的命令来读取某个文件的内容;
写权限,表示你可以编辑和修改某个文件;
执行权限,通常指可以运行的二进制程序文件或者脚本文件,如同 Windows 上的 exe 后缀的文件,不过 Linux 上不是通过文件后缀名来区分文件的类型。你需要注意的一点是,一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息。
所有者权限,这一点相信你应该明白了,至于所属用户组权限,是指你所在的用户组中的所有其它用户对于该文件的权限,比如,你有一个艾派德,那么这个用户组权限就决定了你的兄弟姐妹有没有权限使用它破坏它和占有它。
链接数
链接到该文件所在的 inode 结点的文件名数目
文件大小
以 inode 结点大小为单位来表示的文件大小,你可以给 ls 加上 -lh 参数来更直观的查看文件的大小
ls 命令的一些其它常用的用法:http://man.linuxde.net/ls
变更文件所有者
假设目前是 lilei 用户登录,新建一个文件,命名为 “ iphone6 ”
$ touch iphone6
可见文件所有者是 lilei :
现在,换回到 shiyanlou 用户身份,使用以下命令变更文件所有者为 shiyanlou :
$ cd /home/lilei
$ ls iphone6
$ sudo chown shiyanlou iphone6
$ll iphone6
现在查看,发现 文件所有者成功修改为 shiyanlou :
修改文件权限
如果你有一个自己的文件不想被其他用户读、写、执行,那么就需要对文件的权限做修改,这里有两种方式:
方式一:二进制数字表示
每个文件的三组权限(拥有者,所属用户组,其他用户,记住这个顺序是一定的)对应一个 " rwx ",也就是一个 “ 7 ” ,所以如果我要将文件“ iphone6 ”的权限改为只有我自己可以用那么就这样:
为了演示,我先在文件里加点内容:
$ echo "echo \"hello shiyanlou\"" > iphone6
然后修改权限:
$ chmod 600 iphone6
现在,其他用户已经不能读这个“ iphone6 ”文件了:
方式二:加减赋值操作
完成上述相同的效果,你可以:
输入代码
g、o 还有 u 分别表示 group、others 和 user,+ 和 - 分别表示增加和去掉相应的权限。
adduser 和 useradd 的区别是什么?
答:useradd 只创建用户,创建完了用 passwd lilei 去设置新用户的密码。adduser 会创建用户,创建目录,创建密码(提示你设置),做这一系列的操作。其实 useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作。
Linux 还有一些关于隐藏权限和特殊权限的内容,想全面了解 Linux 权限管理这部分内容的用户可以通过其它方式学习。
作业:
步骤:
- 创建用户: sudo adduser loutest 2.切换用户: su -l loutest 3.加入sudo组;sudo usermod sudo -G sudo loutest 4.使用sudo创建文件: sudo touch /opt/forloutest 5.设置成用户loutest可以读写: sudo chmod 600 /opt/forloutest 6.查看:ll /opt/forloutest