linux系统用户权限分配与管理

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.注意事项:
        粘滞位只影响文件的删除和重命名操作,不影响文件的读取和执行权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值