1.如何启用root?
先为root用户设置密码后就可以登陆了,
sudo passwd root
切换为root用户(提示符为#):
su root
如何退出root用户(自动回到原来的用户)
①输入exit
②快捷键ctrl+d
如何切换用户并回到家目录?
su - user1
2.用户组:用户组是Linux等类Unix操作系统中的一种权限管理机制,它允许系统管理员将多个用户账户归为一个组,并为这个组分配统一的权限和资源访问控制。用户组的主要目的是简化权限管理,使得可以对一组用户统一设置权限,而不是单独为每个用户设置。
用户组可以看作是一群拥有相同权限的用户的集合。
当你在一台计算机上创建一个用户时,这个用户通常会被关联到一个或多个用户组。这些用户组定义了用户能够访问哪些资源,如文件、目录或其他系统服务。例如,一个用户可能属于“编辑者”组,这意味着他们可以编辑某些文档,但不能删除它们;而另一个用户可能属于“管理员”组,他们拥有更广泛的权限,包括删除和更改系统设置。
用户组的存在简化了权限管理。如果你有一群用户需要访问同一个共享文件夹,你可以创建一个名为“共享用户”的用户组,然后将所有这些用户添加到这个组中,而不是为每个用户单独设置文件夹权限。这样,当新用户加入或老用户离开时,只需更新用户组的成员列表即可,而不需要逐个调整每个用户的权限。
在Linux系统中,每个用户至少属于一个主用户组,通常与用户名同名,但这并不限制用户只能属于一个组。用户还可以被添加到其他多个用户组中,这称为附加组。用户和用户组之间的关系存储在系统的配置文件中,例如/etc/passwd
和/etc/group
文件。
————————————————————————————
常用命令:
1. 创建用户组(区别useradd-创建用户账号)
- 命令:
groupadd [options] groupname
groupname
: 要创建的用户组名称。options
: 可选参数,如-g GID
用于指定组ID。
常用选项:
-g GID
:指定GID(如果不指定,系统会自动分配一个唯一的GID)。-r
:创建一个系统组(GID小于500)。
示例:
sudo groupadd developers
2. 删除用户组
- 命令:
groupdel groupname
groupname
: 要删除的用户组名称。
示例:
sudo groupdel developers
3. 列出用户组
- 命令:
cat /etc/group
- 这会显示系统上的所有用户组及其成员。
示例:
cat /etc/group
4. 添加用户到用户组
- 命令:
usermod [选项] groupname username
groupname
: 要添加用户的用户组名称。username
: 要添加到组的用户名。
示例:
sudo usermod -aG developers alice
常用选项
-l, --login new_login_name
: 修改用户的登录名(用户名)。-d, --home HOME_DIR
: 更改用户的家目录。-m, --move-home
: 当与-d
一起使用时,将旧家目录的内容移动到新的家目录。-s, --shell SHELL
: 更改用户的登录Shell。-u, --uid UID
: 更改用户的UID(用户ID)。-g, --gid GROUP
: 更改用户的主用户组。-aG, --append GROUPS
: 添加用户到附加组,不删除用户当前的附加组。-G, --groups GROUPS
: 更改用户的附加组列表,会清除用户当前的附加组。-L, --lock
: 锁定用户密码,禁止用户登录。-U, --unlock
: 解锁用户密码,允许用户再次登录。
5. 移除用户从用户组
- 命令:
gpasswd -d username groupname
username
: 要从组中移除的用户名。groupname
: 用户所在的用户组名称。
示例:
sudo gpasswd -d alice developers
常用选项:
-a 用户名
:将用户添加到组。-d 用户名
:从组中删除用户。-A 用户名1,用户名2,...
:设置组管理员。
6. 更改文件或目录的所有者和用户组
- 命令:
chown [options] owner[:group] filename
owner
: 新的所有者用户名。group
: 新的用户组名称。filename
: 要更改所有权的文件或目录名称。
常用选项:
-a 用户名
:将用户添加到组。-d 用户名
:从组中删除用户。-A 用户名1,用户名2,...
:设置组管理员。
示例:
sudo chown -R alice:developers /home/projects
解析示例:
以递归的方式,将 /home/projects
目录及其所有子目录和文件的所有者改为 alice
,并且将这些文件和目录的用户组改为 developers
。
执行这个命令后,alice
用户将拥有 /home/projects
目录及其所有内容的所有权,并且 developers
用户组的成员将能够以组权限访问这些文件和目录。
7. 更改文件或目录的权限
- 命令:
chmod [options] mode filename
mode
: 权限模式,可以是数字表示法(如755
)或符号表示法(如u+rwx,g+rw,o-rwx
)。filename
: 要更改权限的文件或目录名称。
常用选项:
-R
:递归地更改所有子目录和文件的权限。
权限类型
权限分为三类:
- 读权限 (r):允许用户读取文件内容或列出目录中的条目。
- 写权限 (w):允许用户修改文件内容或向目录中添加/删除条目。
- 执行权限 (x):允许用户执行文件作为程序,或进入目录。
每种类型的权限可以被赋给三类用户:
- 所有者 (u):文件或目录的拥有者。
- 组 (g):文件或目录所属的用户组。
- 其他用户 (o):不属于所有者或组的其他系统用户。
权限表示方法
权限可以用两种主要方式表示:
-
符号表示法:使用
u
,g
,o
和+
,-
,=
来增加、减少或设置权限,以及r
,w
,x
来指定具体的权限。u+x
:为所有者增加执行权限。go-r
:从组和其他用户那里移除读权限。a=rw
:为所有人设置读写权限。
-
数字表示法:将权限转换为八进制数表示,其中每个权限类型对应一个数字。
4
:读权限2
:写权限1
:执行权限
数字表示法中,你将每种权限类型的数字相加,得到最终的权限值。例如:
4 + 2 + 1 = 7
:表示读、写和执行权限。4 + 0 + 0 = 4
:表示仅读权限。
一个完整的权限字符串由三个数字组成,分别代表所有者、组和其他用户的权限。例如,
755
表示所有者有全部权限(读、写、执行),而组和其他用户只有读和执行权限。
示例:
sudo chmod 2770 /home/projects
在这个例子中使用了四位数字的表示法,其中第一位表示特殊权限,意思是设置了 Set-GID 特殊权限。这意味着 /home/projects
目录下的任何新创建的文件或目录都会自动继承 /home/projects
的用户组,即在这个例子中通常是 developers
组,而不是创建者的默认组。,后面的正常按三位表示法表示,即第二位 7
表示所有者有读、写和执行权限(4 + 2 + 1 = 7),第三位 7
表示组有读、写和执行权限(4 + 2 + 1 = 7),第四位 0
表示其他用户没有任何权限(0)。
而第一位数字在八进制权限表示中的意义如下:
-
Set-User-ID (Set-UID):表示为数字
4
。当这个权限被设置在可执行文件上时,文件将作为文件所有者的用户ID运行,而不是调用者的用户ID。这意味着,即使是普通用户也可以用文件所有者的权限执行该文件。通常,这用于需要较高权限才能运行的系统命令或实用程序,以避免每个用户都需要root权限。 -
Set-Group-ID (Set-GID):表示为数字
2
。当这个权限被设置在目录上时,目录下创建的所有文件和子目录都将自动继承该目录的用户组,而不是文件创建者的默认用户组。这在团队合作中非常有用,因为可以确保所有文件都属于同一个组,从而更容易地管理组权限。当设置在可执行文件上时,行为类似于Set-UID,但作用于用户组而不是用户。 -
Sticky Bit:表示为数字
1
。当这个权限被设置在目录上时,它保证只有文件的所有者和具有写权限的用户才能删除或重命名自己的文件,而不能删除或重命名他人在该目录下的文件。这对于公共目录特别有用,以防止用户意外或恶意删除不属于他们的文件。
8. 查看文件或目录的详细信息
- 命令:
ls -l filename
filename
: 查看详细信息的文件或目录名称。
ls -l /home/projects
9.newgrp
- 切换当前会话的组
newgrp 组名
注意:这需要用户是该组的成员,并且在登录会话中有效。
newgrp sukigroup