• Linux系统用户、用户组以及权限管理常用命令 风行天下


    1、https://www.toutiao.com/article/7153277298996068877/?app=news_article&timestamp=1665556313&use_new_style=1&req_id=202210121431520101501341591641964E&group_id=7153277298996068877&tt_from=mobile_qq&utm_source=mobile_qq&utm_medium=toutiao_android&utm_campaign=client_share&share_token=9a1010c1-0aa4-4433-98d5-332c0a4d41a4&source=m_redirect

    记录Linux系统用户、组和相关设置。

    用户和用户组

    • 在 /etc/group 存储当前系统中的用户组信息

     

    注意:

    1. 当该组内只有一个用户,并且用户名和组名相同时,在组列表中,包含用户一列可以为空

    2. 系统中root分组的组编号一定为0

    3. 组号1~499为系统预留的组编号,一般是预留给系统安装的软件或者服务的编号,越早安装的软件或者服务的组编号越早。用户手动创建的用户组编号从500开始

    4. 组密码占位符,无一例外,全部用x表示

    • 在 /etc/gshadow  存储当前系统中用户组的密码信息

     

    注意:

    1. 如果组密码处为“*” “!”或者为空时候,则该组没有密码

    2. 如果组管理者为空,则表示该组内所有成员都可以管理该组

    • 在 /ect/passwd 存储当前系统中所有的用户信息

     

    在linux中,超级管理员root的用户编号一定为0

    • 在 /ect/shadow存储当前系统中所有用户的密码信息

     

    密码是一个单向加密过的字符串

    拥有者(user),拥有组(group),其他人(other)

    • 由于Linux是一个多人多任务的系统,因此经常会出现同一台机器同时有多个人进行操作,为了考虑每个人的隐私权以及每个人喜好的工作环境,所以文件的权限归属就至关重要。
    • 为了保障系统的安全性和文件的隐私性,一个文件针对不同权限的账户有着不同的权限

     

    • 文件权限是由一个字符串所表示,其所代表的含义为

     

    • 文档类型有如下表示方法: d 目录,例如上表档名为『.gconf』的那一行- 文档,例如上表档名为『install.log』那一行l 连结档(link file)b 装置文件里面的可供储存的接口设备(可随机存取装置)c 装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
    • 权限由rwx三个字幕表示,分别表示为可读、可写、可执行,如果没有该权限,则用“ - ”表示,对于目录来说,必须有x权限,否则无法读取目录内容
    • 如果文件名前面有“ . ”,则表示这个文档或目录是隐藏的

    相关命令

    查看用户信息

    id username

     

    我当前的命令输出,可以查看用户 id 、组信息:

    $ id vvd
    用户id=1000(vvd) 组id=1000(vvd) 组=1000(vvd),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),120(lpadmin),132(lxd),133(sambashare),135(libvirt)

     

    创建用户

    useradd xxx    //创建一个名为xxx的用户

     

    该命令执行后

    1. 会在/etc/passwd文件中添加xxx用户的信息
    2. 会在/etc/group文件中添加一个名为xxx的用户组信息
    passwd xxx    //为xxx用户设置密码

     

    • useradd可以使用的参数包含:

    参数

    描述

    示例

    -d

    设置该用户的home目录

    useradd -d /home/helloworld hello //新建hello用户,并且将其home目录设置为/home/helloworld

    -u

    设置其userid

    useradd -u 668 hello //新建一个hello用户,将他的id设置为668

    -g

    设置其主组

    useradd -g root hello //新建一个hello用户,并将其加入root组

    -m

    生成home目录的文件夹

    useradd -m hello //新建一个hello用户,并且在默认位置申城一个hello文件夹(/home/hello),并且将/etc/skel下的文件复制到该目录下

    • 正常使用时建议加入 -m 参数
    useradd username -m

     

    随后需要指定shell,不然不便于终端操作

    usermod -s /bin/bash username 

     

    • 如需要额外指定 home 以外的目录作为家目录
    useradd username -m -d /path/to/home

     

    修改用户信息

    • usermod 命令
    usermod 参数 用户名

     

    参数

    描述

    示例

    -l

    修改新用户名

    usermod -l helloworld hello 将hello用户名改为helloworld,但其home目录不改变

    -u

    修改用户的userid

    usermod -u 888 hello 将hello的userid改为888

    -d

    修改用户的home目录

    usermod -d /home/new_home hello 将hello用户的家目录改为/home/new_home

    -g

    修改用户的主用户组

    usermod -g anotherg hello 将hello用户的组改为anotherg

    -G

    将现有用户添加到辅助组(可以是多个)

    usermod [-G] [[GroupName1,GroupName2]] [UserName] / usermod -a -G mygroup user1

    -L

    锁定用户,使其不能登录

    usermod -L hello 锁定hello

    -U

    解除锁定

    usermod -U hello 解除锁定hello

    -a

    添加 不修改之前的组

    usermod -aG ssh hello 将hello用户加入到ssh组内,不改变其他组

    • gpasswd 命令
    gpasswd 参数 用户名 组名

     

    gpasswd 命令用于管理 /etc/group 和 /etc/gshadow。每个组都可以有管理员、成员和密码。

    参数

    描述

    示例

    -M

    将现有用户添加到次要组或者附加组

    gpasswd -M user1 mygroup 把 user1 添加到 mygroup 中

    -M

    添加多个用户到次要组或附加组中

    gpasswd -M user2,user3 mygroup1 把 user2 和 user3 添加到 mygroup1 中

    -d

    从组中删除一个用户

    gpasswd -d user1 mygroup 从 mygroup 中删除 user1

    删除用户

    userdel 参数 用户名

     

    参数

    描述

    示例

    -r

    删除用户的同时将其home目录也删掉

    userdel -r hello 将hello用户连根删掉

    创建用户组

    groupadd 组名

     

    修改用户组

    groupmod -n 新组名 旧组名    //修改组名
    groupmod -g 新组id    旧组id    修改组ID

     

    查看组内成员

    getent group groupname

     

    $ getent group sudo
    sudo:x:27:vvd

     

    删除用户组

    groupdel 组名

     

    改变文档(目录)的所有者(所有组)

    • 改变文档所有者 - chown命令(change owner),可使用参数 -R使得其子目录也同时修改
    • 改编文档所有组 - chgrp命令 (change group),可使用参数 -R使得其子目录也同时修改
    • 也可以使用
    chown username:group 文件名 

     

    来同时修改文档或目录的拥有者和所在组

    修改文档的执行权限

    chmod 参数 文件名

     

    • 可以使用如下方法直接设置文件的权限
    • 可以使用如下方法直接设置文件的权限
    1. 直接设置代表权限的数字
    chmod 777(对应权限的数字) 文件名

     

    1. 给文件添加或减去某些权限

    命令

    描述

    chmod u+w 文件名

    给user用户加上w权限

    chmod g-r 文件名

    将group中的r权限去掉

    chmod a+x 文件名

    给user、group、other全部加上x权限

    错误记录

    用户登录报错

    • 登录时报错:
    /usr/bin/xauth: file /home/user/.Xauthority does not exist
    • 错误原因: 添加用户时没有授权对应的目录,仅仅执行了useradd user而没有授权对应的家目录
    • 直接解决办法如下(执行如下命令,以后就登录到终端上就不会出现上面的错误信息):
    chown username:username -R /home/user_dir
  • 相关阅读:
    速战速决 go go 面向对象: 结构体(为结构体定义方法,使用工厂模式初始化结构体)
    望其项背 iOS swift: swift 和 oc 互相调用
    速战速决 go go 面向对象: 接口(接口的定义,接口的实现,接口的使用)
    速战速决 go go 概述: 基本语法,nil
    速战速决 go go 容器: 数组(一维数组,多维数组,数组元素的获取和设置,数组的遍历)
    速战速决 go go 容器: 列表(列表的增删改查和遍历)
    速战速决 go go 基础: 语句(if/else, switch, for, continue, break, goto)
    速战速决 go go 基础: 通过接收器(receiver)为任意类型定义方法,即为指定类型扩展方法
    速战速决 go go 高级: 反射(通过反射获取变量的类型,通过反射获取变量的值,修改变量的值,获取结构体成员的值,修改结构体成员的值,调用结构体的方法,通过反射实例化,通过反射调用函数)
    速战速决 go go 面向对象: 包
  • 原文地址:https://www.cnblogs.com/yaok430/p/16784508.html
Copyright © 2020-2023  润新知