Linux用户和权限之二

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: d表示目录 62和7为该目录下子目录的数量

文件和目录权限


权限 对文件的影响 对目录的影响
r(读取) 可读取文件内容 可列出目录内容
w(写入) 可修改文件内容 可在目录中创建删除内容
x(执行) 可作为命令执行 可访问目录内容



root@yaoyuan ~# ll -d /var/lib/drwxr-xr-x. 62 root root 4096 Jun 21 17:20 /var/lib/root@yaoyuan ~# ll -d /var/lib/mysqldrwxr-x--x. 7 mysql mysql 4096 Jul 19 14:30 /var/lib/mysqlroot@yaoyuan hr# ll /var/lib|grep ^d|wc     60     540    421root@yaoyuan hr# ll /var/lib/mysql|grep ^d|wc      5      45     285

d表示目录 62和7为该目录下子目录的数量

chmod

修改某个用户、组对文件夹的权限,用命令chmod实现,其中用户以augo代指,+、-、=代表加入、删除和等于对应权限,具体案例如下

取消用户对dir1目录的进入权限:chmod    u-x  dir1

授予同组用户对dir1目录的写权限:chmod   g+w  dir1

递归授予其他人对dir1目录的写权限:chmod  -R  o+w  dir1

对所用户赋予文件的执行权限:chmod a+x testfile  常用于shell程序

Linux 系统还为每种权限(r、w 和 x)分配了对应的数字:

权限 数字
r 4
w 2
x 1

如果我们要合并这些权限,就需要做简单的加法了:将对应的数字相加。假如我们要分配读、写权限,那么我们就要用 4+2,就等于 6。数字 6 表示具有读和写权限。以下是可能的组合形式:

权限 数字 计算
- - - 0 0 + 0 + 0
r- - 4 4 + 0 + 0
-w- 2 0 + 2 + 0
- -x 1 0 + 0 + 1
rw- 6 4 + 2 + 0
-wx 3 0 + 2 + 1
r-x 5 4 + 0 + 1
rwx 7 4 + 2 + 1

所以,对于访问权限的三组(所有者的权限、群组用户的权限、其他用户的权限),我们只要分别做加法就可以了,然后把三个和连起来。

例如,chmod 640  file1表示:

文件的所有者有读和写的权限;文件所在群组的其他用户具有读的权限;除此之外的其他用户没有任何权限。因此,我们可以给的最宽泛的权限就是 777:所有者,群组用户,其他用户都有读、写和运行的权限(chmod 777 filename)。这样,所有人就都可以对此文件“为所欲为”了。

注意:进入某个目录的前提是能进入它的上级的所有目录(这一点特别容易被忽略)



root@yaoyuan ~# chmod o-x /var/libroot@yaoyuan ~# ls -ld /var/libdrwxr-xr--. 62 root root 4096 Jun 21 17:20 /var/libroot@yaoyuan ~# service mysqld startRedirecting to /bin/systemctl start mysqld.serviceJob for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.root@yaoyuan ~# tail /var/log/mysqld.log ...2022-07-28T02:58:08.568048Z 0 [ERROR] [MY-010095] [Server] Failed to access directory for --secure-file-priv. Please make sure that directory exists and is accessible by MySQL Server. Supplied value : /var/lib/mysql-files2022-07-28T02:58:08.568288Z 0 [ERROR] [MY-010119] [Server] Abortingroot@yaoyuan ~# chmod o+x /var/libroot@yaoyuan ~# service mysqld startRedirecting to /bin/systemctl start mysqld.service

umask

通过使用 umask 默认权限来给所有新建的文件和目录赋予初始权限的。文件(或目录)的初始权限 = 文件(或目录)的最大默认权限 - umask权限 umask的默认值是0022,第 1 个数代表的是文件所具有的特殊权限,后面3位分别对应 3 种用户身份用户、组、其它。

对文件来讲,其可拥有的最大默认权限是 666,即 rw-rw-rw-,减去0022是644。对目录来讲,其可拥有的最大默认权限是 777,即 rwxrwxrwx,减去0022是755。



oracle@yaoyuan tmp$ umask0022oracle@yaoyuan tmp$ mkdir poracle@yaoyuan tmp$ touch aoracle@yaoyuan tmp$ ll -ld a p-rw-r--r--. 1 oracle oinstall 0 Jul 28 15:08 adrwxr-xr-x. 2 oracle oinstall 6 Jul 28 15:08 poracle@yaoyuan tmp$ umask -S 0002u=rwx,g=rwx,o=rxoracle@yaoyuan tmp$ touch boracle@yaoyuan tmp$ ll b-rw-rw-r--. 1 oracle oinstall 0 Jul 28 15:10 b

文件和目录的三种特殊权限

三个特殊的权限是:setuid、setgid和粘滞位

setuid的作用是让执行该命令的用户以该命令拥有者的权限去执行,比如普通用户执行passwd时(修改自己的密码)会拥有root的权限,这样就可以修改/etc/passwd这个文件了。它的标志为:s,会出现在x的地方,例:-rwsr-xr-x  。而setgid的意思和它是一样的,即让执行文件的用户以该文件所属组的权限去执行。



oracle@yaoyuan ~$ ll /usr/bin/passwd-rwsr-xr-x. 1 root root 27856 Nov 22  2019 /usr/bin/passwd

另外一个例子是oracle执行程序



oracle@yaoyuan ~$ ll $ORACLE_HOME/bin/oracle -h-rwsr-s--x. 1 oracle oinstall 421M Mar 20 11:11 /u01/app/oracle/product/19.3.0/db_1/bin/oracle

因此运行oracle程序都是oracle用户和oinstall组。

这三种特殊权限的设置方法

chmod u+s xxx # 设置setuid权限
chmod g+s xxx # 设置setgid权限
chmod o+t xxx # 设置stick bit权限,针对目录
chmod 4775 xxx # 设置setuid权限
chmod 2775 xxx # 设置setgid权限
chmod 1775 xxx # 设置stick bit权限,针对目录

粘滞位最常用是应用于路径。当路径被设置粘滞位后,路径下的文件只有文件的owner,路径的owner, 或者root 才能够重命名、删除文件。如果没有粘滞位,任何用户,不管是不是owner, 只要有路径的写/执行权限就可以重命名、删除文件。典型的应用就是/tmp路径,粘滞位可以阻止一般用户删除/重命名其他用户的文件

“o+t”、 “o-t”权限模式可分别用于添加、移除粘滞位权限。

设置了粘滞位权限的目录,使用ls命令查看其属性时,其他用户权限处的“x”将变为“t”。




oracle@yaoyuan tmp$ mkdir dir1oracle@yaoyuan tmp$ touch dir1/file1oracle@yaoyuan tmp$ chmod o+w dir1
# 对目录有写的权限删除可以成功[zhangsan@yuan tmp]$ rm dir1/file1 rm: remove write-protected regular empty file ‘dir1/file1’? y
# 对dir1目录加上粘滞位oracle@yaoyuan tmp$ chmod o+t dir1oracle@yaoyuan tmp$ touch dir1/file1
# 有粘滞位后删除不能成功[zhangsan@yuan dir1]$ rm file1rm: remove write-protected regular empty file ‘file1’? yrm: cannot remove ‘file1’: Operation not permitted[zhangsan@yuan dir1]$ whoamizhangsan



02

切换用户


su

su 命令可以用来切换用户身份,除 root 外,其他用户切换身份时,需输入密码该命令的使用方式如下:

su [选项] user

su --help

没有user项默认为root。

-, -l, --login 像登录一样启动shell,配置环境变量。

sudo

sudo 命令用来以root的身份执行指令,该命令的使用方式如下:

sudo [选项] 命令

sudo用户的配置在/etc/sudoers文件中:


oracle ALL=(ALL) NOPASSWD:ALL

这一行的意思是oracle用户可以运行任何超级用户的命令,而且不需要输入密码。

以mysql用户运行这个命令。



oracle@yaoyuan ~$ sudo -u mysql lsls: cannot open directory .: Permission deniedoracle@yaoyuan ~$ sudo -u mysql ls /var/lib/mysql

sudo -i 切换到root,在Ubuntu和Debian上很有用。

02

登录信息

who查询当前谁登录。

whoami查询当前登录的信息,类似id。




oracle@yaoyuan ~$ whooracle   pts/0        2022-07-28 15:22 (yao)oracle   pts/1        2022-07-28 15:25 (yao)oracle@yaoyuan ~$ whoamioracle

last查询过去登录过的用户,信息保存在/var/log/wtmp :



oracle@yaoyuan ~$ last oracleoracle   pts/1        yao              Thu Jul 28 15:25   still logged in   oracle   pts/0        yao              Thu Jul 28 15:22   still logged in   oracle   pts/2        yao              Thu Jul 28 11:30 - 13:57  (02:26)    oracle   pts/0        yao              Wed Jul 27 11:48 - 17:48  (06:00)    oracle   pts/2        yao              Mon Jul 25 14:22 - 19:57  (05:34)    oracle   pts/0        yao              Mon Jul 25 14:07 - 19:57  (05:49)    oracle   pts/2        ubuntu-route     Sun Jul 24 09:32 - 13:31  (03:59)    oracle   pts/0        ubuntu-route     Sun Jul 24 09:29 - 13:31  (04:01)

不接用户显示所有用户的登录信息,reboot是个伪用户,显示系统启动的动作。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
Linux Shell
Linux系统文件默认权限
Linux系统文件默认权限
54 2
|
1月前
|
Linux 数据安全/隐私保护
linux特殊权限!!
本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。
45 1
linux特殊权限!!
|
2月前
|
运维 监控 安全
Linux_权限理解(详细PLUS)
【10月更文挑战第3天】本文介绍了Linux系统中的权限管理基础,包括文件系统对象与权限关联、权限的继承性、字符与数字表示法的解读,以及用户、组与权限的动态交互。详细解析了`chmod`命令的高级用法和权限修改的风险,探讨了SUID、SGID和Sticky Bit等特殊权限的作用机制,并提出了基于角色的权限分配和定期权限审计的最佳实践。
77 11
|
2月前
|
Linux 应用服务中间件 nginx
Linux下权限设置之suid、sgid、sticky
Linux下权限设置之suid、sgid、sticky
|
2月前
|
Linux 数据安全/隐私保护 Windows
Linux_权限理解(详细PLUS
Linux_权限理解(详细PLUS
|
2月前
|
网络协议 Linux 网络安全
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
|
2月前
|
Linux Go 数据安全/隐私保护
Linux入门2——初识Linux权限
Linux入门2——初识Linux权限
30 0
|
4月前
|
存储 安全 Linux
Linux权限之谜:一步步教你如何解锁sudo权限并窥视/etc/shadow的神秘面纱!
【8月更文挑战第22天】在Linux中,`sudo`命令让授权用户能以其他用户(通常是root)身份运行命令。关键的安全文件`/etc/shadow`存储用户密码哈希,仅root可读。要使用`sudo`,需确保账户被列入`sudoers`文件中。系统管理员可通过`visudo`编辑此文件来赋予用户权限,例如添加`username ALL=(ALL) NOPASSWD: ALL`行。获得`sudo`权限后,可运行`sudo cat /etc/shadow`查看文件内容,但需谨慎操作以免影响系统安全。遵循最小权限原则,确保安全使用这些强大工具。
117 2
|
4月前
|
Linux 数据安全/隐私保护
在Linux中,什么是文件权限?什么是rwx权限模型?
在Linux中,什么是文件权限?什么是rwx权限模型?
|
4月前
|
Unix Linux Shell
Linux 权限简介
Linux 权限简介
51 1
下一篇
DataWorks