经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Linux/Shell » 查看文章
小白养成记——Linux中的用户和权限管理
来源:cnblogs  作者:Sept4_桃李宿江南  时间:2021/3/1 9:07:29  对本文有异议

1、用户组管理

每个用户都属于一个用户组,系统可以对一个用户组中的所有用户进行集中管理。

在创建用户时,如果未指定组,则系统会创建一个与用户名同名的组。

以下是关于用户组管理的一些基本命令:

  • 新建用户组

    1. $ groupadd <组名>
  • 删除用户组

    1. $ groupdel <组名>
  • 修改组名

    1. $ groupmod -n <新的组名> <现在的组名>
  • 查看用户组的创建信息

    用户组的数据保存在 /etc/group 文件中(不包含已删除的组),因此可以在该文件中查看所有的用户组信息````:

    1. # 创建一个名为"family"的组
    2. $ sudo groupadd family
    3. # 查看 /etc/group 文件,已有了 family 组的信息
    4. $ tail -n 1 /etc/group
    5. family:x:1002:
    6. # 将 family 组重命名为 "family1"
    7. $ sudo groupmod -n family1 family
    8. # 再次查看 /etc/group 文件,组名已更改
    9. $ tail -n 1 /etc/group
    10. family1:x:1002:

2、用户管理

  • 创建用户

    1. $ useradd [-g <已存在的组名>] <用户名>

    创建用户时可以指定该用户所在的组,如果省略,则系统会默认创建一个与用户名同名的组。

    创建了一个用户后,在 /home/ 目录中就会生成一个与用户名同名的目录作为用户主目录。如:

    1. # 创建一个用户名为"zhangsan"的用户
    2. $ sudo useradd zhangsan
    3. # 在 /home/ 目录下自动生成了名为"zhangsan"目录
    4. $ ls /home/
    5. zhangsan
    6. # 同时系统也自动创建了一个名为"zhangsan"的用户组
    7. $ tail -n 1 /etc/group
    8. zhangsan:x:1001:
  • 设置用户密码

    1. $ passwd [<用户名>]

    所有用户均可使用 passwd 命令修改自己的密码,修改时需要先输入当前的密码,再输入新的密码,且密码中不能包含当前用户名。如当前用户为 alice:

    1. $ passwd
    2. 更改用户 alice 的密码
    3. alice 更改 STRESS 密码。
    4. (当前)UNIX 密码:xxxxxxxx
    5. 新的 密码:xxxxxxxx
    6. 重新输入新的 密码:xxxxxxxx
    7. passwd:所有的身份验证令牌已经成功更新。

    也可以为指定用户设置密码,默认只有 root 用户才有该权限:

    1. $ sudo passwd zhangsan
    2. 更改用户 zhangsan 的密码
    3. 新的 密码:xxxxxxxx
    4. 重新输入新的 密码:xxxxxxxx
    5. passwd:所有的身份验证令牌已经成功更新。

    这时是不需要输入旧密码的。

  • 删除用户

    1. $ userdel [-r] <用户名>

    前面已经提到,在创建新用户时,会在 /home/ 目录中生成一个与用户名同名的目录作为用户主目录,在删除用户时,可以选择是否保留该用户主目录:

    1. # 这样的操作会删除用户 zhangsan,但会保留 /home/zhangsan 目录
    2. $ sudo userdel zhangsan
    3. # 这样的操作会删除用户 zhangsan,同时也会删除 /home/zhangsan 目录
    4. $ sudo userdel -r zhangsan

    特别地,如果系统自动生成了与用户名同名的用户组,则在删除用户时,该同名的用户组也会被删除。

  • 查看创建用户的历史信息

    在 /etc/passwd 文件中保存了用户的创建信息(不包含已删除的用户):

    1. $ cat /etc/passwd
    2. root:x:0:0:root:/root:/bin/bash
    3. bin:x:1:1:bin:/bin:/sbin/nologin
    4. ... ...
    5. zhangsan:x:1001:1001::/home/zhangsan:/bin/bash
  • 切换用户(switch user)

    1. $ su [-] <用户名>

    默认切换用户后只能获得用户的执行权限,不能获取其环境变量。如果需要同时获取其环境变量,则可以加上参数"-":

    1. # 输出当前用户的环境变量
    2. $ echo $PATH
    3. /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/alice/.local/bin:/home/alice/bin
    4. # 切换到 root 用户
    5. $ su root
    6. 密码:xxxxxxxx
    7. # 输出当前用户的环境变量,可以发现与之前的相同
    8. $ echo $PATH
    9. /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/alice/.local/bin:/home/alice/bin
    10. $ exit
    11. exit
    12. # 退出后重新切换到 root 用户,此时加上"-" ,显示了上一次的登录时间
    13. $ su - root
    14. 密码:xxxxxxxx
    15. 上一次登录:五 2 19 20:06:27 CST 2021pts/0
    16. # 输出当前用户的环境变量,可以发现这时是 root 用户的环境变量
    17. $ echo $PATH
    18. /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  • 查看用户信息

    1. $ id <用户名>

    可以查看指定用户的 id 以及所在组的 id 和名称等信息。如:

    1. $ id alice
    2. uid=1000(alice) gid=1000(alice) 组=1000(alice),10(wheel)

    可以看到 alice 用户所属的组为 alice(组id为1000) 和 wheel(组id为10)。

  • 查看当前用户名

    1. $ whoami
    2. root
    3. $ su alice
    4. $ whoami
    5. alice
    6. $ who am i
    7. root pts/0 2021-02-19 20:27 (11.205.52.123)
  • 修改用户所在的组

    1. $ usermod -g family zhangsan

    如将 zhangsan 移至 family 组:

    1. # 当前 zhangsan 位于 zhangsan 组中
    2. $ id zhangsan
    3. uid=1001(zhangsan) gid=1001(zhangsan) 组=1001(zhangsan)
    4. $ groups zhangsan
    5. zhangsan : zhangsan
    6. # 修改 zhangsan 所在组
    7. $ sudo usermod -g family zhangsan
    8. # 再次查看,可以看到 zhangsan 已被移至 family 组中
    9. $ id zhangsan
    10. uid=1001(zhangsan) gid=1002(family) 组=1002(family)
    11. $ groups zhangsan
    12. zhangsan : family
  • 给普通用户以 root 权限

    如果普通用户在执行命令时提示"权限不够",则可以在命令前添加 "sudo" 以使用 root 权限再执行,此时需要输入自身的密码验证。

    但并不是任意普通用户都可以使用 "sudo",详情可以查看 /etc/sudoers 文件。

    在 /etc/sudoers 文件中有默认如下配置:

    1. ## Allow root to run any commands anywhere
    2. root ALL=(ALL) ALL
    3. ## Allows people in group wheel to run all commands
    4. %wheel ALL=(ALL) ALL

    这表明只有 root 用户或 wheel 组中的用户可以使用"sudo"。如果需要让新用户也可以使用"sudo",则可以在 /etc/sudoers 中配置该用户或用户组。如:

    1. $ visudo
    2. ## Allow root to run any commands anywhere
    3. root ALL=(ALL) ALL
    4. zhangsan ALL=(ALL) ALL

    此时用户 zhangsan 便可以在输入自己的密码后使用“sudo”。

    如果被信任的用户不希望在使用"sudo"时还要输入密码,则可以设置:

    1. zhangsan ALL=(ALL) NOPASSWD:ALL

    这样用户 zhangsan 便可以直接使用“sudo”而无需再输入自己的密码。

3、文件权限

3.1 文件属性说明

使用 ls -l 命令可以查看文件(目录)的属性,如:

  1. $ mkdir /home/alice/pardir && cd /home/alice/
  2. $ touch ./pardir/a.txt ./pardir/b.txt
  3. $ ls -l ./
  4. drwxrwxr-x. 2 alice alice 32 2 26 18:57 pardir
  5. $ ls -l ./pardir/
  6. -rw-rw-r--. 1 alice alice 0 2 26 18:57 a.txt
  7. -rw-rw-r--. 1 alice alice 0 2 26 18:57 b.txt

文件属性的说明如下:

3.2 文件的权限信息说明

将文件属性中的 1-9 位放大如下:

可以看到,该文件的所属用户和所属组都可以对该文件进行读、写以及执行操作,而组外的其他用户可以对该文件进行读操作和执行操作,而不能进行写操作。

对于不同的文件类型,关于三种操作的解释略有不同,见下表:

3.3 修改文件的权限

  1. # 方式一
  2. $ chmod [选项] [{ugo}{+-=}{rwx}] <文件名>
  3. # 方式二
  4. $ chmod [选项] [{777}] <文件名>

常用的选项有 -R,即 --recursive,表示递归操作。

示例1:修改 a.txt 文件的权限,对所属用户增加执行权限,对所属组减少写权限,对其他用户增加写权限和执行权限:

  1. # 查看当前文件的权限信息
  2. $ ll a.txt
  3. -rw-rw-r--. 1 zhangsan family 0 2 26 18:57 a.txt
  4. # 修改文件权限
  5. $ chmod u+x,g-w,o+wx a.txt
  6. # 再次查看文件的权限信息
  7. $ ll a.txt
  8. -rwxr--rwx. 1 zhangsan family 0 2 26 18:57 a.txt

示例2:修改 a.txt 文件的权限为——所属用户具有读、写和执行权限,所属组具有读和执行权限,其他用户具有读权限:

  1. # 修改文件权限(方式一)
  2. $ chmod u=rwx,g=rx,o=r a.txt
  3. # 修改文件权限(方式二)
  4. $ chmod 754 a.txt
  5. # 再次查看文件的权限信息
  6. $ ll a.txt
  7. -rwxr-xr--. 1 zhangsan family 0 2 26 18:57 a.txt

3.4 修改文件的所属用户

  1. $ chown [选项] <新用户名或用户id> <文件名>

如将 a.txt 文件的所有者由 alice 改为 zhangsan:

  1. # 查看当前 a.txt 文件的所有者为 alice
  2. $ ll a.txt
  3. -rw-rw-r--. 1 alice alice 0 2 26 18:57 a.txt
  4. # 查看用户 zhangsan 的基本信息
  5. $ id zhangsan
  6. uid=1001(zhangsan) gid=1002(family) 组=1002(family)
  7. # 将 a.txt 文件的所有者改为1001号用户,即 zhangsan
  8. $ sudo chown 1001 a.txt
  9. # 再次查看 a.txt 文件的所有者,可见已经改为了 zhangsan
  10. $ ll a.txt
  11. -rw-rw-r--. 1 zhangsan alice 0 2 26 18:57 a.txt

3.5 修改文件的所属组

  1. $ chgrp [选项] <新组名或组id> <文件名>

如将 a.txt 文件的所属组由 alice 改为 family:

  1. # 查看当前 a.txt 文件的所属组为 alice
  2. $ ll a.txt
  3. -rw-rw-r--. 1 zhangsan alice 0 2 26 18:57 a.txt
  4. # 将 a.txt 文件的所属组改为1002号组,即 family
  5. $ sudo chgrp 1002 a.txt
  6. # 再次查看 a.txt 文件的所属组,可见已经改为了 family
  7. $ ll a.txt
  8. -rw-rw-r--. 1 zhangsan family 0 2 26 18:57 a.txt

一些其他的常用命令:CentOS7 下端口的开放控制

1、查看当前的防火墙状态

  1. $ firewall-cmd --state
  2. running

2、查看当前防火墙开放了哪些端口

  1. $ firewall-cmd --zone=public --list-ports
  2. 8080/tcp

3、开放指定端口

  1. $ firewall-cmd --zone=public --add-port=3306/tcp --permanent
  2. success
  3. $ firewall-cmd --reload
  4. success

4、关闭指定端口

  1. $ firewall-cmd --zone=public --remove-port=3306/tcp --permanent
  2. success
  3. $ firewall-cmd --reload
  4. success

5、关闭防火墙

  1. $ systemctl stop firewalld.service

原文链接:http://www.cnblogs.com/ideal2015/p/14411758.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号