1.创建新用户
命令:
sudo useradd -m -s /bin/bash newusername(默认主目录为/home/newusername)
sudo useradd -m -d /path/to/custom/homedir -s /bin/bash newusername(自定义主目录为/path/to/custom/homedir)
命令描述:
useradd -m 命令会自动创建一个新的主目录(通常是 /home/newusername),所以不需要手动创建文件夹。-d 可以自定义指定主目录,这个目录的所有权和组会被设置为新用户和新用户的主组
参数解释:
-d /path/to/custom/homedir 指定了新用户的主目录为 /path/to/custom/homedir。
-m:创建用户的主目录。
-s /bin/bash:设置用户的默认 shell 为 bash
注意:
指定自定义主目录时,需要确保系统上的其他配置(如 /etc/login.defs 文件中的 HOME_DIR 和 CREATE_HOME 变量)与你的设置兼容,以避免潜在的问题。
1.1 指定用户主目录创建用户
useradd -d 主目录路径 用户名
1.2 指定用户 ID(UID)创建用户
useradd -u UID 用户名
1.3 创建系统用户(-r选项)
useradd -r 用户名
解释:系统用户通常用于系统相关的用途,其 UID 一般会在一个特定的范围内(通常小于1000),与普通用户相区别。系统用户的创建可以更好地管理系统资源和权限
1.4 删除用户
userdel testuser:简单删除用户(保留用户主目录)
userdel -r testuser:彻底删除用户(不保留用户主目录)
2. 设置用户密码
命令:
sudo passwd newusername
命令描述:
系统会提示你输入新密码,并要求确认,密码格式通常为至少包含大写字母、小写字母、数字和特殊字符(如!@#$%^&*()等)。使用 su - newusername 切换到其他用户,需要知道新用户的密码才能成功切换
3. 创建新组
sudo groupadd newgroupname
3.1 指定组 ID(GID)创建组
groupadd -g GID 组名
3.2 创建系统组(-r选项)
groupadd -r 组名
解释:系统组通常用于系统相关的用途,其 GID 一般会在一个特定的范围内(通常小于1000),与普通用户组相区别。系统组的创建可以更好地管理系统资源和权限。
3.3 删除附属组
groupdel oldgroup:主组不可删除,只能删除没有用的附属组。
4. 将用户添加到组
sudo usermod -a -G newgroupname newusername
参数解释:
-a:追加组,当和-G选项一起使用时,-a选项用于追加附属组
-G:指定组,用于修改用户的主组
4.1更换主组(将主组从nowprimarygroupname更换为nowadditionalgroupname)
sudo usermod -g nowadditionalgroupname nowprimarygroupname
5. 设置文件或目录权限
sudo chmod 644 /path/to/file
sudo chmod 755 /path/to/directory
参数解释:
644:所有者有读写权限,组和其他用户只有读权限。
755:所有者有读写执行权限,组和其他用户有读执行权限。
6. 改变文件或目录的所有者和组
sudo chown newusername:newgroupname /path/to/file
7. 设置特定权限(可选)
如果你需要更精细地控制权限,可以使用 setfacl 命令设置访问控制列表(ACL),使用 setfacl
命令给予某个用户对特定文件的读写权限,即使该用户不属于文件的所有者组。
sudo setfacl -m u:newusername:rw /path/to/file
参数解释:
-m:修改 ACL 规则。
u:newusername:rw:给用户 newusername 设置读写权限。
切换用户账户命令
su - username:切换到另一个用户账户。
su -:切换到 root 用户。
sudo -u username whoami:以 username 用户的身份执行 whoami 命令,并显示该用户的用户名。
sudo -i -u username:-i这个选项告诉 sudo 命令模拟初始登录环境,作用是切换到username用户,不需要密码。
注意:
1.使用 su 命令时,你可能需要输入目标用户的密码,除非你是以 root 用户执行该命令。
2.sudo 命令需要你在 /etc/sudoers 文件中有相应的权限设置。
3.切换用户账户后,你的工作目录会改变为目标用户的主目录。
4.切换用户账户会影响环境变量和其他用户特定的配置
chmod命令
解释:
chmod 是一个在 Unix 和类 Unix 系统(如 Linux)中用来改变文件或目录权限的命令
注意:
使用 +/- r/w/x/t(目录) 指令 会给user group other 全部设置权限
若给单独的user/group/other设置权限使用 u/g/o +/- r/w/x/t(目录)或者八进制表示法
基本用法:
1.添加执行权限:
chmod +x filename:给文件 filename 添加执行权限,使得文件可以被执行。
chmod +x directoryname:给目录 directoryname 添加执行权限,使得你可以进入该目录(在命令行中使用 cd)。
2.移除执行权限:
chmod -x filename:从文件 filename 移除执行权限。
chmod -x directoryname:从目录 directoryname 移除执行权限。
3.设置读权限:
chmod +r filename:给文件 filename 添加读权限,使得文件可以被读取。
chmod -r filename:从文件 filename 移除读权限。
4.设置写权限:
chmod +w filename:给文件 filename 添加写权限,使得文件可以被修改。
chmod -w filename:从文件 filename 移除写权限。
5.设置权限的八进制表示法:
chmod 755 filename:使用八进制数设置权限。755 表示所有者有读、写、执行权限,而组和其他用户只有读和执行权限。
chmod 644 filename:644 表示所有者有读和写权限,而组和其他用户只有读权限。
6.递归设置权限:
chmod -R +x directoryname:递归地给目录 directoryname 及其所有子目录和文件添加执行权限。
7.使用符号表示法:
chmod u+x filename:给文件的所有者添加执行权限。
chmod g+x filename:给文件的组添加执行权限。
chmod o+x filename:给文件的其他用户添加执行权限。
chmod 命令八进制表示法解释:
在 Linux 和 Unix 系统中,chmod 644 filename 命令用于设置文件的权限,其中 644 是一个三位的八进制数,它分别代表了文件所有者、所属组和其他用户的权限。
八进制权限代码解释:
第一位数字(6):代表文件所有者的权限,6 表示所有者有读(4)和写(2)权限,计算为 4+2=6。
第二位数字(4):代表文件所属组的权限,4 表示组用户只有读权限。
第三位数字(4):代表其他用户的权限,4 同样表示只有读权限。
权限对应的数值:
读(r):4
写(w):2
执行(x):1
权限的数值是这些基本权限数值的累加。
其他常见的八进制权限代码:
600:所有者可读写,组和其他用户无任何权限。
640:所有者可读写,组用户只读,其他用户无任何权限。
666:所有者、组和其他用户都有读写权限,但没有执行权限。
700:所有者可读写执行,组和其他用户无任何权限。
755:所有者可读写执行,组和其他用户只有读执行权限。
777:所有者、组和其他用户都有读写执行权限。
使用场景:
644:常用于文本文件、配置文件等,所有者可以编辑文件,而其他用户(如 web 服务器)可以读取文件。
755:常用于可执行文件和目录,所有者可以编辑,而其他用户可以执行或列出目录内容。
700:用于非常敏感的文件,只有所有者有全部权限。
chown命令
解释:
chown 是一个 Unix 和类 Unix 系统(如 Linux)中的命令,用于改变文件或目录的所有者(owner)和/或所属组(group)。这个命令通常需要超级用户权限来执行。
基本用法:
1.改变文件的所有者:
chown newowner filename
2.改变文件的所有者和所属组:
chown newowner:newgroup filename
3.递归改编目录及其内容的所有者:
chown -R newowner directoryname
4.递归改变目录及其内容的所有者和所属组:
chown -R newowner:newgroup directoryname
5.改变多个文件的所有者:
chown newowner file1 file2 file3
6.使用用户ID和组ID改变所有者:
Chown 1001:1001 filename
这将把文件 filename 的所有者改为用户ID为 1001 的用户,所属组改为组ID为 1001 的组。
7.引用当前所有者或组:
chown $USER filename
这将把文件 filename 的所有者改为当前用户。
注意:
在使用 chown 时,确保你了解每个用户和组的名称或ID,以及你正在尝试执行的操作,因为错误的使用可能会导致文件权限问题或数据丢失
查看用户账户信息的相关命令:
1.查看用户列表:
id
这将显示当前用户的用户ID(UID)、组ID(GID)和所属的附加组。
2.查看所有用户信息:
cat /etc/passwd
这将显示系统中所有用户的 UID、GID 和主目录;
每行代表一个用户,格式为 username:x:UID:GID:GECOS:/home/username:shell。
3.查看用户所属组:
getent group
这将列出所有组及其成员。
查看文件权限的相关命令:
1.查看文件和目录权限:
ls -l /
这将列出根目录下的所有文件和目录,以及它们的权限。
2.查看特定文件的权限:
ls -l /path/to/file
指定文件或目录来查看其权限
3.检查特定用户的文件权限:
sudo -u username ls -l /path/to/file
要查看特定用户对某个文件的权限
查看用户权限的相关命令:
1.查看用户的 sudo 权限:
visudo
查看用户对 sudo 命令的权限,可以查看 /etc/sudoers 文件(需要 root 权限),这个命令会使用 vi 编辑器打开 /etc/sudoers 文件,可以查看哪些用户或组有执行 sudo 命令的权限。
2.查看用户的 shell 权限:
cat /etc/passwd
用户的 shell 权限可以从 /etc/passwd 文件中查看,字段中的 shell 部分指定了用户的登录 shell。
查看系统中的用户的相关命令:
who:这个命令显示当前登录系统的用户信息。
whoami:这个命令显示当前执行命令的用户。
users:这个命令显示当前登录系统的用户列表。
id username:这个命令显示指定用户的用户ID(UID)、组ID(GID)和所属组。
cat /etc/passwd或less /etc/passwd:这个文件包含了系统上所有用户的列表及其信息。你可以使用 cat 或 less 命令查看这个文件。
查看系统中的组的相关命令:
groups:这个命令显示当前用户所属的所有组。
getent group:这个命令可以查看所有组。
cat /etc/group或者less /etc/group:这个文件包含了系统上所有组的列表及其信息。你可以使用 cat 或 less 命令查看这个文件。
-结合 /etc/passwd 和 /etc/group 文件,你可以使用 cut 命令来提取所有者和组的列表。
cut -d: -f1 /etc/passwd:这将列出所有用户。
cut -d: -f1 /etc/group:这将列出所有组。
查看用户所属的所有组的相关命令:
groups $(whoami)
这个命令会显示当前用户所属的所有组。
文件类型和权限解释:
l:表示这是一个符号链接(symbolic link),类似于 Windows 中的快捷方式。
d:表示这是一个目录(directory)。
r:表示可读权限(read)。
w:表示可写权限(write)。
x:表示可执行权限(execute)。
-:表示没有相应的权限
t:表示这个目录有粘滞位权限(sticky bit),目录名为 tmp(通常只用于目录)。
一般权限表示的三个部分分别代表 所有者(Owner)权限,所属组(Group)权限,其他人(Others)权限。
在 Linux 系统中,粘滞位(Sticky bit)是一种特殊的文件系统权限,主要用于目录。当一个目录设置了粘滞位权限时,它的行为会与普通目录有所不同,特别是在处理目录中的文件时。以下是粘滞位的一些关键点:
1.防止文件被删除或重命名:
在设置了粘滞位的目录中,只有文件的所有者、目录的所有者以及超级用户(root)可以删除或重命名文件。这意味着即使一个用户有权访问(读、写)目录,他们也不能删除或重命名不是他们自己的文件。
2.默认行为:
对于设置了粘滞位的目录,任何用户都可以在其中创建文件,但是一旦文件被创建,只有文件的所有者、目录的所有者和超级用户可以删除或移动这些文件。
3.权限表示:
在 ls -l 命令的输出中,粘滞位在权限部分的最后一个字符位置用 t 表示。例如,drwxrwxrwt 表示该目录对于所有者、所属组和其他用户都是可读、可写、可执行的,并且设置了粘滞位。
4.典型应用场景:
粘滞位通常用于公共目录,如 /tmp 或 /var/tmp,这些目录被多个用户共享。通过设置粘滞位,可以防止用户不小心或恶意删除其他用户的临时文件。
5.设置粘滞位:
你可以通过 chmod 命令来设置或清除目录的粘滞位。例如,要给目录 somedir 设置粘滞位,可以使用以下命令:
chmod +t somedir / chmod -t somedir
6.注意事项:
粘滞位只影响文件的删除和重命名操作,不影响文件的读取和执行权限。
linux系统用户权限分配与管理
于 2024-12-17 16:00:02 首次发布