Linux学习之路(六)用户身份和文件权限命令

一、用户身份权限

0、id

小命令,查看用户及其所属的组。

root@kali:~# id ss
uid=1001(ss) gid=1001(ss)=1001(ss)
1、useradd

useradd命令用于创建新的用户,格式为“useradd [选项] 用户名”。

使用该命令创建用户账户时,默认的用户家目录会被存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。不过这些都可以在创建用户的时候使用参数进行修改。

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

linux中有UID和GID,也就是用户ID(用户名)和组ID(群组名),分别代表文件所属的用户和组。

root@kali:~# useradd ss
root@kali:~# id ss
uid=1001(ss) gid=1001(ss)=1001(ss)
2、groupadd

groupadd命令用于创建用户组,格式为“groupadd [选项] 群组名”。
用户组的作用和windows上的是一样的,都是为了方便权限的管理和分配。

一般直接添加群组,不经常用到参数选项:

groupadd sea
3、usermod

usermod命令用于修改用户的属性,格式为“usermod [选项] 用户名”。

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

//修改用户ss的UID号码为1234
usermod -u 1234 ss

用户的信息保存在/etc/passwd文件中,也可以直接对文件进行修改,和usermod命令等效。

4、passwd

passwd命令用于修改用户密码、过期时间、认证信息等,格式为“passwd [选项] [用户名]”

参数作用
-l锁定用户,禁止其登录
-u解除锁定,允许用户登录
–stdin允许通过标准输入修改用户密码,如echo “NewPassWord”
-d使该用户可用空密码登录系统
-e强制用户在下次登录时修改密码
-S显示用户的密码是否被锁定,以及密码所采用的加密算法名称
//直接使用passwd命令可以修改当前用户的密码
reno@reno:~$ passwd
Changing password for reno.
(current) UNIX password: 
Enter new UNIX password: 
Retype new UNIX password: 
5、userdel

userdel命令用于删除用户及用户信息,格式为“userdel [选项] 用户名”。
执行删除操作时,被删除用户的家目录时默认保留的,但可以使用-r参数吧家目录也删除


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

二、文件权限

1、Linux中的文件类型
  • -:普通文件
  • d:目录文件
  • l:链接文件
  • b:块设备文件
  • c:字符设备文件
  • p:管道文件

这些就是Linux中常见的文件类型了

2、Linux中文件的一般权限

一般文件的权限有可读(r)、可写(w)、可执行(x),这些权限Windows上也是有的,但普通用户平时用Windows的时候一般不会涉及权限问题,但在一文件组成的Linux系统上,文件的权限是一个大问题。

Linux中在表示权限的时候经常用数字,r、w、x分别对应的权限数字为4、2、1,而文件的权限表示经常使用这些符号的组合:

reno@reno:~/Downloads$ ls -lh
total 53M
-rw-rw-r-- 1 reno reno 53M Sep 17 08:45 code_1.38.1-1568209190_amd64.deb
//开头的-表示文件类型为普通文件,然后rw-表示所有者的权限,中间的rw-表示所属组的权限,最后的r--表示其他用户的权限

这就是Linux中文件的一般权限

3、Linux中文件的特殊权限

很多时候在一些复杂环境下,我们需要更多更全面的权限来进行更进一步的管理,Linux面对一些文件设定了特殊的权限

1)SUID权限
  • 专门针对二进制程序(对目录无用)
  • 让二进制程序的执行者临时拥有属主的权限(该二进制程序必须可执行)
  • 属主仍是原来的属主,不过可以暂时得到属主的权限
//权限设置命令
chmod u+s filename
chmod u-s filename
2)SGID权限
  • 让执行者临时拥有属组的权限(对象可以是二进制文件和目录)
  • 属组仍是原来的属组
  • 目录中创建的文件自动继承该目录的用户组
//权限设置命令
chmod g+s filename
chmod g-s filename
3)SBIT权限

也就是Sticky Bit(保护位)

  • 确保用户只能删除自己的文件
  • 目录被设置SBIT之后,其中的文件只能被其所有者或root用户删除
  • 只设置在目录上,设置在文件上毫无意义
//权限设置命令
chmod o+t dir_name
chmod o-t dir_name
4)chmod和chown

chmod用法:
chmod [-cfvR] [ugoa…][[±=][rwxX]…] file

只看用法有点繁杂了

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • - + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
  • -c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
    一般使用是这样:
chmod u+w filename

chown用法:
chown [-cfhvR] user[:group] file

  • user : 新的文件拥有者的使用者 ID
  • group : 新的文件拥有者的使用者组(group)
  • -c : 显示更改的部分的信息
  • -f : 忽略错误信息
  • -h :修复符号链接
  • -v : 显示详细的处理信息
  • -R : 处理指定目录以及其子目录下的所有文件
    需要强调的是,chown命令只能由管理员使用,按需要指定文件的拥有者改为指定的用户或组。

一般用法:

//指定flag.txt的拥有者为ss,群组为root
chown ss:root flag.txt

//将目前目录下的所有文件与子目录的拥有者皆设为ss,群组都设为root
chown ss:root *
4、Linux中文件的隐藏权限

隐藏权限也很特殊,是不会被用户察觉到的权限,有时候明明有充足的权限却无法删除或修改文件,这就可能说明是隐藏权限的问题了,隐藏权限在一定程度上增加了文件的安全性。

1)隐藏权限设置命令chattr

格式为“chattr [参数] 文件”

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

Linux中的命令总是特别多,但隐藏权限命令对于一般用户来说还是不太常用的。

可以看到-a参数就可以设置文件不被删除。
使用命令chattr +a flag.txt之后再进行删除就无法删除文件。

2)隐藏权限显示命令lsattr

格式为“lsattr [参数] 文件”
这个命令倒是没有什么参数,可以类比于ls命令,直接使用就可以显示出文件的隐藏权限。

5、文件访问控制列表(ACL-Access Control List)

权限本身就是为了限制不同用户对文件的使用程度而设置的。
如果想对某个指定的用户进行单独的权限控制,就要使用ACL了。使用ACL可以指定某个用户对特定的文件或文件夹的权限。

1)ACL设置命令setfacl

setfacl使用下面的规则格式:
[d[efault]:] [u[ser]:]uid [:perms] 指定用户的权限,文件所有者的权限(如果uid没有指定)。
[d[efault]:] g[roup]:gid [:perms] 指定群组的权限,文件所有群组的权限(如果gid未指定)
[d[efault]:] m[ask][:] [:perms] 有效权限掩码
[d[efault]:] o[ther] [:perms] 其他的权限

常用参数:

  • -R:递归参数,用于目录
  • -m:针对普通文件
  • -b:删除文件的扩展ACL,基本的仍会保留
  • -d:设定默认的acl规则
    示例:
setfacl -Rm u:ss:rwx /root
2)ACL显示命令getfacl

格式为:getfacl 文件名

6、su和sudo命令

su命令用来切换用户身份,可以让当前用户在切换不退出登录的情况下切换到其他用户。
管理员切换到其他用户不需要密码,普通用户在进行用户切换的时候需要输入目的用户的密码。

//切换到ss用户,中间的-号的作用是实现完全切换,此时环境变量等系统信息也完全切换为目标用户的信息
su - ss

对于普通用户没有权限的命令,需要root用户实现,这样普通用户需要和root用户进行切换,对于普通用户工作不方便,root用户的密码也会变得不安全。sudo命令就是解决这个问题的,sudo命令会给普通用户一些更高的权限来帮助其完成工作。
先说说用法:
sudo [参数] 命令名称

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

sudo命令具有如下功能:

  • 限制用户执行指定的命令:
  • 记录用户执行的每一条命令;
  • 配置文件(/etc/sudoers)提供集中的用户管理、权限与主机等参数;
  • 验证密码的后5分钟内(默认值)无须再让用户再次验证密码。

如果担心直接修改配置文件会出现问题,则可以使用sudo命令提供的visudo命令来配置用户权限。这条命令在配置用户权限时将禁止多个用户同时修改sudoers配置文件,还可以对配置文件内的参数进行语法检查,并在发现参数错误时进行报错。

sudo进行权限操作时需要的是用户的密码,这就为普通用户提供了很大的便利。

示例:
在这里插入图片描述当时用apt命令安装应用的时候显示有lock(锁),不能进行操作,然后使用sudo进行暂时授权,输入用户自己的密码即可,然后就可以成功使用较高权限的命令。

只有root管理员才可以使用visudo命令编辑sudo服务的配置文件。
通过修改配置文件可以限定不同用户可用的命令。

用户可以通过sudo -l来查看可以执行的命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值