zoukankan      html  css  js  c++  java
  • 用户身份与文件权限

    linux 身份号码

    User IDentification # UID

    系统管理员身份 UID:0
    系统用户UID为1~999:Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器。默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。
    普通用户UID从1000开始:是由管理员创建日常工作的用户
    

    用户组

    GID,Group IDentification
    在同一个组中,用户享有相同的权限,便于管理用户和授予相关的权限。

    useradd命令

    创建新用户:useradd[选项] 用户名
    参数

    -d 指定用户的家目录(默认为/home/username)
    -e 账户的到期时间,格式为YYYY-MM-DD
    -u 指定该用户的默认UID
    -g 指定一个初始的用户基本组(必须已存在)
    -G 指定一个或多个扩展用户组
    -N 不创建与用户同名的基本用户组
    -s 指定该用户的默认Shell解释器
    

    举例:
    创建一个普通用户并指定家目录的路径、用户的UID以及Shell解释器

    root@ji-virtual-machine:/home/ji# useradd -d /home/linux -u 8888 -s /sbin/nologin (jixxxang
    root@ji-virtual-machine:/home/ji# id jixxxang
    uid=8888(jixxxang) gid=8888((jixxxang) 组=8888(jixxxang)
    

    groupadd 命令

    用于创建群组:groupadd[选项]群组名

    usermod命令

    用于更改用户的属性,格式"usermod[选项] 用户名"
    用户的信息存储在/etc/passwd中,也可以在该文件夹中直接修改,或者使用usermod命令
    具体参数

    -c 填写用户账号的备注信息
    -d -m 参数-d与参数-m连用,可重新指定用户的家目录并自动把旧的数据转移过去。
    -e 账户的到期时间,格式为YYYY-MM-DD
    -g 变更所属用户组
    -G 变更扩展用户组
    -L 锁定用户禁止其登录系统
    -U解锁用户,允许其登录系统
    -s 变更默认终端
    -u 修改用户的UID
    

    实例
    把本地登录用户加入到root用户组

    root@ji-virtual-machine:/home/ji# usermod -G root ji
    root@ji-virtual-machine:/home/ji# id ji
    uid=1000(ji) gid=1000(ji) 组=1000(ji),0(root)
    

    可以使用-u修改ji用户的UID号码值,-g修改用户的基本组ID,-G参数修改用户扩展组ID

    root@ji-virtual-machine:/home/ji# usermod -u 8888 ji
    usermod:UID “8888”已经存在
    root@ji-virtual-machine:/home/ji# usermod -u 6666 ji
    usermod:用户 ji 目前已登录
    

    好似,登录已存在的用户就无法修改它的UID号码了

    passwd

    用于修改用户密码、过期时间、认证信息等。
    格式为:passwd[选项][用户名]
    普通用户只能使用passwd命令修改自身账户的密码,而root管理员则有权限修改其他人的密码。而且还不需要验证旧密码
    passwd的参数如下

    -l 锁定用户,禁止登录
    -u 解除锁定,允许登录
    --stdin 允许通过标准输入修改用户密码
    如:echo"NewPassword"|passwd --stdin Username
    -d 使用该用户可用空密码登录系统
    -e 强制用户在下次登录时修改密码
    -S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称
    

    实例
    先修改密码

    root@ji-virtual-machine:/home/ji# passwd
    输入新的 UNIX 密码: 
    重新输入新的 UNIX 密码: 
    passwd:已成功更新密码
    root@ji-virtual-machine:/home/ji# passwd ji
    输入新的 UNIX 密码: 
    重新输入新的 UNIX 密码: 
    passwd:已成功更新密码
    

    锁定账户,显示账户信息,解除锁定账户

    root@ji-virtual-machine:/home/ji# passwd -l ji
    passwd:密码过期信息已更改。
    root@ji-virtual-machine:/home/ji# passwd -S ji
    ji L 12/02/2021 0 99999 7 -1
    root@ji-virtual-machine:/home/ji# passwd -u ji
    passwd:密码过期信息已更改。
    root@ji-virtual-machine:/home/ji# passwd -S ji
    ji P 12/02/2021 0 99999 7 -1
    

    userdel命令

    用于删除用户,格式为"userdel[选项] 用户名"
    不加-r参数的话,删除用户该用户的家目录会默认保留下来

    -f 强制删除用户
    -r 同时删除用户及用户家目录
    

    文件权限与归属

    文件类型以不同的字符来区分

    - 普通文件
    d 目录文件
    l 链接文件
    b 块设备文件
    c 字符设备文件
    p 管道文件
    

    目录文件的权限

    可读表示能够读取目录内的文件列表;可写表示能够在目录内新增、删除、重命名文件;而可执行表示能够进入该目录
    rwx分别表示可读,可写,可执行
    用数字表示即4,2,1,当权限为7时,可读可写可执行,为6时,可读可写,为5时,可读可执行,为3时,可写可执行。当然这是对于文件来说,文件上面还有文件所属组,其他用户。这些权限可以并不是相加,而是每个不同的部分相加。如765.等分别对应的文件权限为文件所有者,文件所属组,其他用户。

    文件的特殊权限

    单纯的rwx权限无法满足我们对安全和灵活性的需求,因此便有了SUID、SGID与SBIT的特殊权限位。

    SUID

    对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时获得程序所有者的身份。
    具体为rwx变为rws,若是rw-变为rwS。

    待补
    

    SGID

    1.让执行者零食获得属组的权限(文件所属组的权限)
    2.在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)

    两个相关属性命令

    chmod命令:设置文件或目录的权限,
    格式为"chmod [参数] 权限 文件或目录名称".
    例如:
    把一个文件的权限设置成其所有者可读可写可执行,所属组可读可写,其他人没有任何权限。则相应的字符法表示为rwxrw----,对应的数字法表示为760.
    实例
    我感觉没啥问题,又肯是我的目录选取错误,这个权限没啥变化

    ji@ji-virtual-machine:~$ ls -al test
    总用量 20
    drwxrw----   3 ji ji 4096 11月 30 17:23 .
    drwxr-xr-x  28 ji ji 4096 12月  2 08:51 ..
    -rw-rw-r--   1 ji ji 2814 11月 30 16:56 a.txt
    drwxr-xr-x 131 ji ji 4096 11月 30 14:50 etc
    -rwxrwxr-x   1 ji ji   18 12月 13  2020 test.py
    ji@ji-virtual-machine:~$ chmod 766 test
    ji@ji-virtual-machine:~$ ls -al test
    总用量 20
    drwxrw-rw-   3 ji ji 4096 11月 30 17:23 .
    drwxr-xr-x  28 ji ji 4096 12月  2 08:51 ..
    -rw-rw-r--   1 ji ji 2814 11月 30 16:56 a.txt
    drwxr-xr-x 131 ji ji 4096 11月 30 14:50 etc
    -rwxrwxr-x   1 ji ji   18 12月 13  2020 test.py
    

    刚才的chmod是设置文件或目录的权限,这可以使用chown设置文件或目录的所有者和所属组
    格式:“chown[参数] 所有者:所属组 文件或目录名称

    SBIT

    确保用户只能删除自己的文件,而不能删除其他用户的文件。
    用法待补

    1并未看懂
    

    文件的隐藏属性

    chattr命令

    用于设置文件的隐藏权限
    格式"chattr [参数] 文件",如果想把某个隐藏功能加入到文件上,在其后加上"+参数”,如果想把某个隐藏功能移出文件,则需要追加"-参数"
    chattr参数用于隐藏权限的参数

    待补
    

    实例;
    好像要root用户才行,隐藏起来之后,rm命令就无法删除该文件了

    ji@ji-virtual-machine:~$ echo "hello world" > ji
    ji@ji-virtual-machine:~$ ls
    echo_menu.sh  etc1.tar.gz  examples.desktop  first.sh  jiance.sh    readm.txt  sohu.html  test.py  test.tst  user_add.sh    公共的  视频  文档  音乐
    etc           etc.tar.gz   exit.sh           ji        pratice.txt  sleep.sh   test       test.sh  test.txt  www.baidu.com  模板    图片  下载  桌面
    ji@ji-virtual-machine:~$ chattr +a ji
    chattr: 不允许的操作 while setting flags on ji
    

    lsattr命令

    用于显示文件的隐藏属性,格式为"lsattr [参数] 文件",文件的隐藏权限必须使用lsattr命令查看,平时使用的ls之类的命令则看不出。

    文件访问控制列表

    前文所讲的权限都是针对某一类用户设置的。如果希望对某个指定的用户进行单独的权限控制,就需要用来ACL(文件访问控制列表)
    基于普通文件或目录设置ACL其实就是针对指定的用户或用户组设置文件或目录的操作权限。对文件中设置ACL,则可使得文件不再继承其所在目录的ACL.对目录设置ACL,则目录中的文件会继承其ACL.
    没有设置ACL之前,对root管理员的家目录设置;
    总是报错,好似也看不出什么来;ubuntu的root状态下命令提示符是#,而红帽7是$

    ji@ji-virtual-machine:~$ sudo su
    [sudo] password for ji: 
    root@ji-virtual-machine:/home/ji# $ cd /root
    $:未找到命令
    root@ji-virtual-machine:/home/ji# cd /root
    root@ji-virtual-machine:~# ls
    root@ji-virtual-machine:~# $ exit
    $:未找到命令
    root@ji-virtual-machine:~# exit
    exit
    ji@ji-v
    

    setfacl命令

    用于管理文件的ACL规则
    格式:“setfacl [参数] 文件名称”
    针对目录文件需要使用-R递归参数,针对普通文件则使用-m参数,删除某个文件的ACL。可以使用-b参数

    看不懂实例
    

    getfacl命令

    用于显示文件上设置的ACL信息。格式为"getfacl 文件名称"
    ubuntu中并不行

    root@ji-virtual-machine:/home/ji# getfacl /root
    getfacl: 从绝对路径名尾部去除" / "字符。
    # file: root
    # owner: root
    # group: root
    user::rwx
    group::---
    other::---
    

    su命令与sudo服务

    su切换用户身份

    root@ji-virtual-machine:/home/ji# su - ji # -号可加可不加,但最好加
    ji@ji-virtual-machine:~$ sudo su
    ji 不在 sudoers 文件中。此事将被报告。
    ## su root切换root
    ji@ji-virtual-machine:~$ su root
    密码: 
    root@ji-virtual-machine:/home/ji# ^C
    

    sudo命令 把执行权限赋给指定用户

    sudo服务配置原则,在保证普通用户完成相应工作的前提下,尽可能少的赋予额外的权限。
    格式:
    "sudo [参数] 命令名称"
    可用参数及列表

    -h 列出帮助信息
    -l 列出当前用户可执行的命令
    -u 用户名或UID值 以指定的用户身份执行命令
    -k 清空密码的有效时间,下次执行suodo时需要再次进行密码验证
    -b 在后台执行指定的命令
    -p 更改询问密码的提示语
    

    sudo的功能如下:
    有些我并未理解
    1.限制用户执行的指令
    2.记录用户执行的每一条命令
    3.配置文件(/etc/sudoers)提供集中的用户管理、权限与主机等参数
    验证密码的后5分钟内(默认值)无需再让用户再次验证密码

    visudo命令

    是配合sudo命令来配置用户权限的。(只有root管理员才可以使用visudo命令编辑sudo服务的配置文件)
    就是该命令打开一个配置文件,在其中配置sudo命令的相关权限(对于用户把)

    ji@ji-virtual-machine:~$ sudo ls root
    [sudo] password for ji: 
    ji 不在 sudoers 文件中。此事将被报告。
    

    看来还需配置sudoers文件了

    努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。
  • 相关阅读:
    Android安全-代码安全1-ProGuard混淆处理
    快速提高Android开发效率的Web工具
    Android采用ListView实现数据列表显示2-使用SimpleAdapter进行数据绑定
    Java中Enum方法toString与ordinal方法
    视一:Web前端开发之HTML+CSS
    100-days: thirty-seven
    css 权重
    100-days: thirty-six
    100-days: thirty-five
    100-days: thirty-four
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/15632371.html
Copyright © 2011-2022 走看看