美文网首页
Linux就该这么学-003

Linux就该这么学-003

作者: 以七v为书 | 来源:发表于2018-07-30 13:39 被阅读0次

    用户身份与能力

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

    useradd

    创建新的用户

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

    groupadd

    创建用户组

    # groupadd linux
    

    usermod

    修改用户属性

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

    passwd

    修改用户密码、过期时间、认证信息等

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

    userdel

    删除用户

    参数 作用
    -f 强制删除用户
    -r 同时删除用户及用户家目录
    # userdel -r linux
    

    文件权限与归属

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

    文件的特殊权限

    SUID

    可以让二进制程序的执行者,临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)

    # ls -l /bin/passwd
    -rwsr-xr-x. ...etc
    

    SGID

    让执行者临时拥有属组的权限
    在某个目录中创建的文件自动继承挂目录的用户组

    设置好目录的777权限,保证普通用户可以写入文件,设置好SGID特殊权限位后,切换至一个普通用户,然后尝试在该目录中创建文件,并查看新创建的文件是否会继承所在目录的所属组名称

    # mkdir testdir
    # ls -ald testdir/
    drwxr-xr-x. 2 root root etc...
    # chmod -Rf 777 testdir/
    # chmod -Rf g+s testdir/
    # ls -ald testdir/
    drwxrwsrwx. 2 root root etc...
    # su linux
    $ cd /testdir/
    $ echo "test" > test
    $ ls -al test
    -rw-rw-r--. linux root etc...
    

    SBIT

    带有此权限的目录,只有该目录的所有者,否则无法删除这里面的文件

    $ ls -ald /temp
    drwxrwxrwt. 17 root root etc...
    $ cd /tep
    $ ls -ald
    drwxrwxrwt. 17 root root etc...
    $ echo "test" > test
    $ chmod 777 test
    $ ls -al test
    -rwxrwxrwx. 1 linux linux etc...
    $ su - otherLinux
    $ cd /tmp
    $ rm -f test
    rm: cannot remove `test`: Operation not permitted
    

    文件的隐藏属性

    chattr

    设置文件的隐藏权限

    参数 作用
    i 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能信件或删除文件
    a 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
    S 文件内容在变更后立即同步到硬盘(sync)
    s 彻底从硬盘中删除,不可恢复(用0填充源文件所在硬盘区域)
    A 不在修改这个文件或目录的最后访问时间(atime)
    b 不在修改文件或目录的存取时间
    D 检查压缩文件中的错误
    d 使用dump命令备份时葫芦哦本文件/目录
    c 默认将文件或目录进行压缩
    u 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
    t 让文件系统支持首尾合并(tail-merging)
    X 可以直接访问压缩文件中的内容
    # echo "test" > test
    # chattr +a test
    # rm test
    rm: remove regular file `test`y
    rm: cannot remove `test`: Operation not permitted
    

    lsattr

    查看文件的隐藏权限

    # lsattr test
    -----a---------- test
    # chattr -a test
    # lsattr test
    ---------------- test
    

    文件访问控制列表

    对某个指定的用户金鼎单独的权限限制(ACL)

    # su linux
    $ cd /root
    -bash: cd: /root: Permission denied
    

    setfacl

    管理文件的ACL规则

    设置过ACL的文件权限的最后一个点会变成+,使用-b可以删除某个文件的ACL

    # setfacl -Rm u:linux:rwx /root
    # su linux
    $ cd /root
    $ ls
    etc...
    $ exit
    # ls -ld /root
    dr-xrwx---+ 14 root root etc...
    

    getfacl

    显示文件上设置的ACL信息

    # getfacl /root
    getfacl: Removing leading '/' from absolute path names
    # file: root
    # owner: root
    # group: root
    user::r-x
    user:linux:rwx
    group::r-x
    mask::rwx
    other::---
    

    su

    切换用户身份

    如果在su后面添加一个减号(-),意味着完全切换用户,即把环境变量信息也变更为新用户的相应信息

    # su - linux
    $ su root
    Password:
    

    sudo

    给普通用户提供额外的权限来完成原本root管理员才能完成的任务

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

    将linux用户赋予root权限,这时如果切换用户再使用sudo命令,需要填写的是linux用户的密码

    # visudo
    98 root ALL=(ALL) ALL
    99 linux ALL=(ALL) ALL
    

    上面的做法并不安全,我们并不想要赋予linux用户所有的权限,如果想让linux用户可以使用某一个权限可以参考下面的配置,做完后可以用sudo cat 去查看之前权限查看不了的内容

    # visudo
    98 root ALL=(ALL) ALL
    99 linux ALL=(ALL) /usr/bin/cat
    

    下面的设置可以让我们在使用sudo命令时,不需要输入密码,这样会减少密码被黑客破译的几率

    # visudo
    98 root ALL=(ALL) ALL
    99 linux ALL=NOPASSWD: /usr/sbin/poweroff
    

    原文学习来自作者:LL大L
    链接:https://www.jianshu.com/p/2885fce5fc56

    相关文章

      网友评论

          本文标题:Linux就该这么学-003

          本文链接:https://www.haomeiwen.com/subject/liqfvftx.html