目录
无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。
在Linux操作系统中,root
账户是具有最高系统权限的特殊用户,通常被称为超级管理员。该账户可以执行系统中的任何操作,包括系统文件的修改、安装软件、管理系统服务等。
普通用户通常只有有限的权限,这有助于保护系统免受意外操作或恶意行为的损害。普通用户只能访问和修改自己家目录中的文件,以及在拥有相应权限的情况下访问其他共享资源。
普通用户的权限,一般在其HOME目录内是不受限的
一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限
在Linux系统中,通常推荐以下操作习惯:
- 尽量避免使用
root
账户进行日常操作,以减少出错的风险。 - 使用
sudo
命令来执行需要管理员权限的操作。sudo
命令可以让普通用户执行一些特权命令,而不需要切换到root
账户。 - 确保了解每个命令的含义和潜在影响,在执行前要谨慎。
su [-] [用户名]
通过su命令可以切换到root账户。
su命令的功能,即用于账户切换的系统命令,其英文单词为“Switch User”。
- “-”符号是可选的,表示是否在切换用户后加载环境变量(后续讲解),建议带上
- 参数:用户名表示要切换的用户,用户名也可以省略,省略表示切换到root。
- 切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键: ctrl + d。
- 使用普通用户切换到其它用户需要输入密码,如切换到root用户
- 使用root用户切换到其它用户,无需密码,可以直接切换
当我们知道root密码时,可以通过su命令切换到root用户来获得最大权限。
但建议不要长期使用root用户,以避免系统损坏。
sudo 其他命令
sudo命令可以为普通的命令授权,允许用户暂时以root身份执行这些命令。
在其它命令之前加上sudo,即可为这条命令临时赋予root授权。
但是,并不是所有的用户都有权利使用sudo,我们需要为普通用户配置sudo认证。
为普通用户配置sudo认证
-
切换到root用户:通常使用
su
命令来切换到root用户,可能需要输入root用户的密码。su
-
执行visudo命令:
visudo
命令是用来安全地编辑/etc/sudoers
文件的一个工具。这个命令会锁定sudoers文件,防止多个编辑会话同时进行,并在保存更改之前进行语法检查。visudo
-
编辑/etc/sudoers文件:在打开的
/etc/sudoers
文件中,您需要在文件的适当位置添加以下行:要授权的用户名 ALL=(ALL) NOPASSWD: ALL
这行的含义是:
- 要授权的用户名。
ALL
:表示该用户可以从任何终端(或主机)执行sudo命令。(ALL)
:表示要授权的用户名可以以任何用户身份执行命令。NOPASSWD: ALL
:表示要授权的用户名执行sudo命令时不需要输入密码。
-
保存更改:在编辑器中保存更改,通常是通过按下
Esc
键,然后输入:wq
并按Enter
键。:wq
-
切换回普通用户:完成编辑后,可以使用
exit
命令退出root用户,回到普通用户。exit
-
使用sudo执行命令:现在,作为已经被授权的用户,可以使用sudo命令以root权限执行任何命令,而无需输入密码。
sudo command
例如,要以root权限更新系统包,可以执行:
sudo apt update
虽然NOPASSWD: ALL
可以提供便利,但它也可能降低系统的安全性,因为它允许用户无需密码即可获得root权限。在生产环境中,建议谨慎使用此选项。
在Linux系统中,权限管理是非常重要的一个方面,它确保了系统的安全性和数据的完整性。
以下是关于用户、用户组和权限控制的详细说明。
用户和用户组配置
-
配置多个用户:
在Linux系统中,可以创建多个用户账号,每个用户可以有自己的家目录、配置文件和独立的权限设置。 -
配置多个用户组:
用户组是权限分配的单位,可以创建多个用户组,并将用户分配到这些组中。 -
用户可以加入多个用户组:
一个用户可以成为多个用户组的成员。这允许用户继承多个用户组的权限和属性。
getent passwd
使用getent命令,可以查看当前系统中有哪些用户
共有7份信息:用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
getent group
使用getent命令,同样可以查看当前系统中有哪些用户组
包含3份信息:组名称:组认证(显示为x):组ID
用户管理
需root用户执行以下命令
创建用户
useradd [-g -d] 用户名
- 选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
- 选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
删除用户
userdel [-r] 用户名
- 选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
查看用户所属组
id [用户名]
- 参数:用户名,被查看的用户,如果不提供则查看自身
修改用户所属组
usermod -aG 用户组 用户名
- 将指定用户加入指定用户组
用户组管理
在Linux系统中,创建和删除用户组通常需要root权限。
以下是这两个命令的详细说明:
创建用户组
使用 groupadd
命令可以创建一个新的用户组。
命令格式如下:
groupadd [选项] 用户组名
其中,用户组名
是您想要创建的用户组的名称。这个命令还有一些选项可以用来设置用户组的详细信息,比如GID(组ID)等。
删除用户组
使用 groupdel
命令可以删除一个已经存在的用户组。
命令格式如下:
groupdel 用户组名
其中,用户组名
是您想要删除的用户组的名称。
请注意以下几点:
- 在删除用户组之前,确保没有用户将该组作为其主组。如果有用户的主组是您要删除的组,您需要先更改这些用户的主组,然后再删除用户组。
- 如果用户组中有用户,
groupdel
命令可能会拒绝删除该组,除非您使用-f
选项强制删除(不推荐,因为这可能会导致系统中出现不一致的情况)。
在执行这些操作时,建议谨慎行事,以避免影响系统的稳定性和安全性。
权限管控级别
Linux系统中权限的管控分为两个级别:
-
针对用户的权限控制:
- 对于文件和目录,可以设置特定用户的读(read)、写(write)和执行(execute)权限。
- 用户权限通常通过
chmod
命令和chown
命令来设置。
-
针对用户组的权限控制:
- 类似于用户权限,用户组权限也可以针对文件和目录设置读、写和执行权限。
- 用户组权限同样可以通过
chmod
命令和chgrp
命令来设置。
权限表示方法
在Linux中,权限通常用-rwxrwxrwx
这样的形式表示,其中:
- 第一个
rwx
代表文件所有者的权限(用户权限)。 - 第二个
rwx
代表文件所属用户组的权限(用户组权限)。 - 第三个
rwx
代表其他所有用户的权限。
r表示读权限
w表示写权限
x表示执行权限
针对文件、文件夹的不同,rwx的含义有细微差别
r:针对文件可以查看文件内容;针对文件夹,可以查看文件夹内容,如ls命令
w:针对文件表示可以修改此文件;针对文件夹,可以在文件夹内:创建、删除、改名等操作
x:针对文件表示可以将文件作为程序执行;针对文件夹,表示可以更改工作目录到此文件夹,即cd进入
例如,如果一个文件的权限设置为-rw-rw-r--
:
- 文件所有者和文件所属用户组有读和写权限。
- 其他用户只有读权限。
ls -l
通过ls -l 可以以列表形式查看内容,并显示权限细节
输出内容说明:
- 第一列:文件或文件夹名称(包括.开头的隐藏文件)
- 第二列:文件或文件夹的所有者
- 第三列:文件或文件夹的所有者组
- 第四列:文件或文件夹的权限位
- 第五列:文件大小(以字节计)
权限设置
chmod命令
chmod命令的功能:使用该命令可以修改文件、文件夹的权限信息。
(只有文件、文件夹的所有者或root用户才能修改其权限)
chmod命令的语法:chmod [-R] 权限 文件或文件夹
-R选项,用于对文件夹内的全部内容应用同样的操作
示例
chmod u=rwx,g=rx,o=x hello.txt ,将文件权限修改为:rwxr-x--x
- u表示user所属用户权限
- g表示group组权限
- o表示other其它用户权限
chmod -R u=rwx,g=rx,o=x test,将文件夹test以及文件夹内全部内容权限设置为:rwxr-x--x
权限可以用3位数字来代表:
- 第一位数字表示用户权限
- 第二位表示用户组权限
- 第三位表示其它用户权限
数字的细节如下:r记为4,w记为2,x记为1,可以有:
- 0:无任何权限, 即 ---
- 1:仅有x权限, 即 --x
- 2:仅有w权限 即 -w-
- 3:有w和x权限 即 -wx
- 4:仅有r权限 即 r--
- 5:有r和x权限 即 r-x
- 6:有r和w权限 即 rw-
- 7:有全部权限 即 rwx
rwx(7) r-x(5) --x(1)
所以还有快捷写法:chmod 751 hello.txt
将hello.txt的权限修改为751
chown命令
使用chown命令,可以修改文件、文件夹的所属用户和用户组
普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行
语法:chown [-R] [用户][ : ][用户组] 文件或文件夹
- 选项,-R,同chmod,对文件夹内全部内容应用相同规则
- 选项,用户,修改所属用户
- 选项,用户组,修改所属用户组
- :用于分隔用户和用户组
示例
- chown root hello.txt,将hello.txt所属用户修改为root
- chown :root hello.txt,将hello.txt所属用户组修改为root
- chown root:ad hello.txt,将hello.txt所属用户修改为root,用户组修改为ad
- chown -R root test,将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则