我的Linux学习记录(蓝桥)————用户及文件权限管理
我的Linux学习记录(蓝桥)三
Linux 是一个可以实现多用户登录的操作系统,比如“李雷”和“韩梅梅”都可以同时登录同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件。但实际上他们的文件都是放在同一个物理磁盘上的甚至同一个逻辑分区或者目录里,但是由于 Linux 的 用户管理 和 权限机制,不同用户不可以轻易地查看、修改彼此的文件。
让我们代开命令窗口:
who am i
或者
who mom likes
打开当前伪终端的用户的用户名(要查看当前登录用户的用户名,去掉空格直接使用 whoami
即可)
第二列的 pts/0
中 pts
表示伪终端,所谓伪是相对于 /dev/tty
设备而言的,还记得上一节讲终端时的那七个使用 [Ctrl]
+[Alt]
+[F1]
~
[F7]
进行切换的 /dev/tty
设备么,这是“真终端”,伪终端就是当你在图形用户界面使用 /dev/tty7
时每打开一个终端就会产生一个伪终端,pts/0
后面那个数字就表示打开的伪终端序号,你可以尝试再打开一
个终端,然后在里面输入 who am i
,看第二列是不是就变成 pts/1
了,第三列则表示当前伪终端的启动时间。
来让我们再打开个终端输入who am i:
如图所示,显示的是pts/1
还有一点需要注意的是,在某些环境中 who am i 和 who mom likes 命令不会输出任何内容,这是因为当前使用的 SHELL 不是登录时的 SHELL,没有用户与 who 的 stdin 相关联,因此不会输出任何内容。例如我在本地的 Ubuntu 系统上输入这个命令就不会有提示。
who
命令其它常用参数:
参数 |
说明 |
-a |
打印能打印的全部 |
-d |
打印死掉的进程 |
-m |
同am i,mom likes |
-q |
打印当前登录用户数及用户名 |
-u |
打印当前登录用户登录信息 |
-r |
打印运行等级 |
在 Linux 系统里, root 账户拥有整个系统至高无上的权限,比如新建和添加用户。
大部分 Linux 系统在安装时都会建议用户新建一个用户而不是直接使用 root 用户进行登录一般我们登录系统时都是以普通账户的身份登录的,要创建用户需要 root 权限,这里就要用到 sudo 这个命令了。不过使用这个命令有两个大前提,一是你要知道当前登录用户的密码,二是当前用户必须在 sudo 用户组。shiyanlou 用户也属于 sudo 用户组(稍后会介绍如何查看和添加用户组)。
su,su- 与 sudo
需要注意 Linux 环境下输入密码是不会显示的。
su <user> 可以切换到用户 user,执行时需要输入目标用户的密码,sudo <cmd> 可以以特权级别运行 cmd 命令,需要当前用户属于 sudo 组,且需要输入当前用户的密码。su - <user> 命令也是切换用户,但是同时用户的环境变量和工作目录也会跟着改变成目标用户所对应的。
现在,我们创建一个叫lilei的用户
使用如下代码:
sudo adduser lilei
实验楼的环境目前设置为 shiyanlou 用户执行 sudo 不需要输入密码,通常此处需要按照提示输入 shiyanlou 密码(Linux 下密码输入是不显示任何内容的,shiyanlou 用户密码可以在右侧环境信息里查看,请勿自行设置密码)。然后是给 lilei 用户设置密码,后面的选项的一些内容你可以选择直接回车使用默认值。
这个命令不但可以添加用户到系统,同时也会默认为新用户在 /home 目录下创建一个工作目录:
我们使用ls来显示:ls /home
现在你已经创建好一个用户,来让我们登录这个账号吧:
输入命令:su -l lilei
之后输入完密码我们可以看见:
接着,我们输入三个命令:
Who am I whoami pwd
我们可以看见:
你发现了区别了吗?这就是上一小节我们讲到的 who am i
和 whoami
命令的区别
退出当前用户跟退出终端一样,可以使用 exit
命令或者使用快捷键 Ctrl+D
。
用户组
在 Linux 里面每个用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源,就跟家族微信群一样,你们可以共同拥有这个家(共享资源),爸妈对待你们都一样(共享权限),你偶尔写写日记,其他人未经允许不能查看(私有资源和权限)。当然一个用户是可以属于多个用户组的,正如你既属于家庭,又属于学校或公司。
在 Linux 里面如何知道自己属于哪些用户组呢?
那自己是什么用户组呢?:
我们输入如下命令:
groups shiyanlou
其中冒号之前表示用户,后面表示该用户所属的用户组。这里可以看到 shiyanlou 用户属于 shiyanlou 用户组,每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组(差不多就相当于家长的意思)。
方法二:查看 /etc/group 文件
使用命令:cat /etc/group | sort
这一大长串的都是用户组,这里 cat
命令用于读取指定文件的内容并打印到终端输出,后面会详细讲它的使用。 | sort
表示将读取的文本进行一个字典排序再输出,然后你将看到如下一堆输出。
没找到?没关系,你可以使用 grep
命令过滤掉一些你不想看到的结果:
cat /etc/group | grep -E “shiyanlou”
/etc/group 文件格式说明
/etc/group 的内容包括用户组(Group)、用户组口令、GID(组 ID) 及该用户组所包含的用户(User),每个用户组一条记录。格式如下:
group_name:password:GID:user_list
你看到上面的 password 字段为一个 x,并不是说密码就是它,只是表示密码不可见而已。
这里需要注意,如果用户的 GID 等于用户组的 GID,那么最后一个字段 user_list 就是空的,这里的 GID 是指用户默认所在组的 GID,可以使用 id 命令查看。比如 shiyanlou 用户,在 /etc/group 中的 shiyanlou 用户组后面是不会显示的。lilei 用户,在 /etc/group 中的 lilei 用户组后面是不会显示的。
将其它用户加入 sudo 用户组
默认情况下新创建的用户是不具有 root 权限的,也不在 sudo 用户组,可以让其加入 sudo 用户组从而获取 root 权限:
# 注意 Linux 上输入密码是不会显示的
su -l lilei //登录lilei账号
sudo ls //加入sudo组
会提示 lilei 不在 sudoers 文件中,意思就是 lilei 不在 sudo 用户组中,至于 sudoers 文件(/etc/sudoers)你现在最好不要动它,操作不慎会导致比较麻烦的后果。
使用 usermod
命令可以为用户添加用户组,同样使用该命令你必需有 root 权限,你可以直接使用 root 用户为其它用户添加用户组,或者用其它已经在 sudo 用户组的用户使用 sudo 命令获取权限来执行该命令。
这里我用 shiyanlou 用户执行 sudo 命令将 lilei 添加到 sudo 用户组,让它也可以使用 sudo 命令获得 root 权限,首先我们切换回 shiyanlou 用户。
su – shiyanlou //登录shiyanlou账号
当然也可以通过 sudo passwd shiyanlou
进行设置,或者你直接关闭当前终端打开一个新的终端。
命令:sudo usermod -G sudo lilei //把lilei设置为sudo组
groups lilei //显示lilei是什么组
sudo usermod -G sudo lilei
groups lilei
然后我们可以看见:
然后你再切换回 lilei 用户,现在就可以使用 sudo 获取 root 权限了。
使用命令:sudo ls / //获取root权限
创建完那我们试试删除用户:
使用代码:
sudo deluser lilei –-remove-home
使用 --remove-home
参数在删除用户时候会一并将该用户的工作目录一并删除。如果不使用那么系统会自动在 /home 目录为该用户保留工作目录。
删除用户组可以使用 groupdel
命令,倘若该群组中仍包括某些用户,则必须先删除这些用户后,才能删除群组。
linux文件权限
文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。
Unix/Linux 系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux 系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。
在 Unix/Linux 中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
我们之前已经很多次用到 ls
命令了,如你所见,我们用它来列出并显示当前目录下的文件,当然这是在不带任何参数的情况下,它能做的当然不止这么多,现在我们就要用它来查看文件权限。
使用较长格式列出文件:
ls -l //查看文件权限
你可能除了知道最后面那一项是文件名之外,其它项就不太清楚了,那么到底是什么意思呢:
可能你还是不太明白,比如第一项文件类型和权限那一堆东西具体指什么,链接又是什么,何为最后修改时间,下面一一道来:
文件类型
关于文件类型,这里有一点你必需时刻牢记 Linux 里面一切皆文件,正因为这一点才有了设备文件( /dev 目录下有各种设备文件,大都跟具体的硬件设备相关)这一说。 socket:网络套接字,具体是什么,感兴趣的用户可以去学习实验楼的后续相关课程。pipe 管道,这个东西很重要,我们以后将会讨论到,这里你先知道有它的存在即可。软链接文件:链接文件是分为两种的,另一种当然是“硬链接”(硬链接不常用,具体内容不作为本课程讨论重点,而软链接等同于 Windows 上的快捷方式,你记住这一点就够了)。
文件权限
读权限,表示你可以使用 cat <file name> 之类的命令来读取某个文件的内容;
写权限,表示你可以编辑和修改某个文件的内容;
执行权限,通常指可以运行的二进制程序文件或者脚本文件,如同 Windows 上的 exe 后缀的文件。
不过 Linux 上不是通过文件后缀名来区分文件的类型。你需要注意的一点是,一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息。
所有者权限,这一点相信你应该明白了,至于所属用户组权限,是指你所在的用户组中的所有其它用户对于该文件的权限,比如,你有一个 iPad,那么这个用户组权限就决定了你的兄弟姐妹有没有权限使用它破坏它和占有它。
链接数
链接到该文件所在的 inode 结点的文件名数目(关于这个概念涉及到 Linux 文件系统的相关概念知识,不在本课程的讨论范围。
文件大小
以 inode 结点大小为单位来表示的文件大小,你可以给 ls 加上 -lh 参数来更直观的查看文件的大小。
明白了文件权限的一些概念,我们顺带补充一下关于 ls 命令的一些其它常用的用法:
显示除了 .(当前目录)和 ..(上一级目录)之外的所有文件,包括隐藏文件(Linux 下以 . 开头的文件为隐藏文件)。
ls -a //查看所有文件
当然,你可以同时使用 -a
和 -l
参数:
ls -al //查看所有文件加权限
查看某一个目录的完整属性,而不是显示目录里面的文件属性:
ls -dl <目录名>
显示所有文件大小,并以普通人类能看懂的方式呈现:
ls -asSh
其中小 s 为显示文件大小,大 S 为按文件大小排序,若需要知道如何按其它方式排序,可以使用 man ls
命令查询。
变更文件所有者
若前面已经执行删除 lilei 用户的命令,这里重新创建一下。
切换到 lilei 用户,然后在 /home/lilei 目录新建一个文件,命名为 iphone11。
su – lilei //登录lilei
pwd //显示当前所在目录
touch iphone11 //创建文件
ls -alh iphone11
我们可以知道,这个iPhone11文件所有者是lilei
在做这一步的时候我经历了卡壳:
我在这里尝试了很多,我又给了lilei加入了sudo,但是还是不行,后来发现这路径错了!;
这路径是shiyanlou不是lilei。
我使用命令 cd /home/lilei
之后成功解决了问题。
现在切换回到 shiyanlou 用户,使用以下命令变更文件所有者为 shiyanlou。
# 需要切换到 shiyanlou 用户执行以下操作
cd /home/lilei //打开文件lilei
ls iphone11 //展示文件iphone11
sudo chown shiyanlou iphone11 //把iphone11文件所有权转给shiyanlou
现在查看,发现文件所有者成功修改为 shiyanlou。:
修改文件权限
如果你有一个自己的文件不想被其他用户读、写、执行,那么就需要对文件的权限做修改。文件的权限有两种表示方式:
方式一:二进制数字表示
每个文件有三组固定的权限,分别对应拥有者,所属用户组,其他用户,记住这个顺序是固定的。文件的读写执行对应字母 rwx
,以二进制表示就是 111
,用十进制表示就是 7
。例如我们刚刚新建的文件 iphone11 的权限是 rw-rw-rw-
,换成对应的十进制表示就是 666,这就表示这个文件的拥有者,所属用户组和其他用户具有读写权限,不具有执行权限。
如果我要将文件 iphone11
的权限改为只有我自己可以用那么就可以用这个方法更改它的权限。
为了演示,我先在文件里加点内容:
echo "echo \"hello shiyanlou\"" > iphone11
然后修改权限:
chmod 600 iphone11 //把666后两位改为0,即所属用户组与其他用户无权rwx
ls -alh iphone11 //查看iPhone11文件,权限和大小
切换到 lilei 用户,尝试写入和读取操作,可以看到 lilei 用户已经不能读写这个 iphone11 文件了:
方式二:加减赋值操作
要完成上述实验相同的效果,你可以:
chmod go-rw iphone11
g
、o
还有 u
分别表示 group(用户组)、others(其他用户) 和 user(用户),+
和 -
分别表示增加和去掉相应的权限。
adduser 和 useradd 的区别是什么
答:useradd 只创建用户,不会创建用户密码和工作目录,创建完了需要使用 passwd <username> 去设置新用户的密码。adduser 在创建用户的同时,会创建工作目录和密码(提示你设置),做这一系列的操作。其实 useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作。
作业:添加一个用户 loutest
,使用 sudo
创建文件 /opt/forloutest
,设置成用户 loutest
可以读写。截图并把操作过程写入实验报告。
提示: 如何创建一个文件呢?可以考虑 touch
命令,执行 sudo touch /opt/forloutest
这个命令可以创建一个空文件,但前提是执行这个命令的 loutest 用户需要具备 sudo 权限。
解:代码如下:
sudo adduser loutest //创建用户
sudo usermod -G sudo loutest //把此用户加入sudo给予root权限
su loutest //登录用户账户
touch /opt/forloutest //创建文件
ls -alh /opt/forloutest //展示此文件的权限大小信息
我的Linux学习记录(蓝桥)————用户及文件权限管理相关推荐
- 《Linux基础三》用户和文件权限管理
用户和文件权限管理 1,用户 管理员用户: Root用户,也称根用户.超级用户.超级管理员 可对根目录执行读写和执行操作 具有系统中的最高.所有权限 普通用户: 权限有限的用户 Root用户拥有系统的 ...
- 蓝桥云课linux入门3:用户及文件权限管理
内容转自蓝桥云课 目录 1.内容 2.Linux用户管理 2.1查看用户 2.2创建用户 2.3用户组 将其它用户加入 sudo 用户组 2.4删除用户和用户组 3.Linux文件权限 3.1查看文件 ...
- Linux中的用户及文件权限管理总结
一.用户 1.查看用户:who am I 2.创建用户:sudo adduser <用户名> 在linux中,root权限拥有至高无上的权利,一般登录系统时都是以普通账户的身份登录的,要创 ...
- Linux命令学习笔记(一)—— 用户及文件权限管理
1.用户 1.1 查看用户 who am i 查看当前用户及时间 whoami 显示当前用户 1.2创建用户 创建用户要用到 sudo 这个命令了.不过使用这个命令有两个大前提: 你要知道当前登录用户 ...
- Linux 基础入门学习之用户和文件权限管理
Linux 用户管理 Linux 是一个可以实现多用户登录的操作系统,比如"李雷雷"和"韩梅"都可以同时登录同一台主机,他们共享一些主机的资源,但他们也分别有自 ...
- Linux学习:shell命令(文件权限、用户、用户组)
一.文件权限.用户.用户组 d rwx rwx r-x 2 itcast itcast 4096 1 月 14 17:33 bb 下面一一来讲解这几位: (1)第 1 位:文件类型(共 7 种)(注意 ...
- Linux用户及文件权限管理
一.Linux 用户管理 Linux 是一个可以实现多用户登陆的操作系统,比如"李雷"和"韩梅梅"都可以同时登陆同一台主机,他们共享一些主机的资源,但他们也分别 ...
- Linux基础(3)/用户及文件权限管理
用户管理 Linux 是一个可以实现多用户登陆的操作系统.比如"李雷"和"韩梅梅"都可以同时登陆同一台主机.他们共享一些主机的资源,但他们也分别有自己的用户空间 ...
- 【实验3】用户及文件权限管理
Linux用户管理 2.1 查看用户 通过第一节课程的学习,你应该已经知道,Linux 是一个可以实现多用户登录的操作系统,比如"李雷"和"韩梅梅"都可以同时登 ...
最新文章
- AM消息中间件OA、ERP消息提醒的必要工具
- pymongo查询列表元素_散列表:如何实现word编辑器的拼写检查?
- ubuntu 16.04 安装mysql
- 基于贪心算法求解TSP问题(JAVA)
- python 二叉树中所有距离为k的节点_Redis:从应用到底层,一文帮你搞定
- 熊海博客php版本,xhcms_v1.0 熊海CMS是由熊海开发的一款可广泛应用于个人博客 联合开发网 - pudn.com...
- 人工神经网络----Hebbian学习规则
- dos攻击工具如何使用?两款dos攻击工具介绍
- chrome开发者工具实现网页截长图
- Mybatis的xml实用的一些技巧
- mini-itx PC:推测Intel D525MW支持UEFI
- Markdown 语法手册全
- PAT乙级_1068 万绿丛中一点红 (20 分)_python
- 视频剪辑如何快速制作图文视频
- 如何判断您是否拥有32位或64位版本的Google Chrome浏览器
- 名企笔试:网易游戏2017招聘笔试题(赶去公司)
- Android客户端三步完成支付宝支付SDK接入
- fatfs文件系统详解之f_mkfs函数分析
- 7、A kernel method for multi-labelled classification
- keytool 错误: java.lang.Exception: 密钥库文件存在, 但为空: E:\xxx\xxx\.jks