Contents

Linux权限管理

Linux权限管理

Linux系统下对于用户和文件的权限有着严格的规定,我们首先回顾Linux下的用户管理

用户管理

  • 涉及四个文件,主要需要修改passwd文件
    文件 含义
    /etc/shadow 加密的用户账户信息
    /etc/passwd 用户账户信息
    /etc/gshadow 隐藏的组账户信息
    /etc/group 定义了用户属于哪个组
    /etc/sudoers 定义了可以运行sudo的用户和用户组

用户组管理

  • groups username查看用户所属的组,如果省略用户名,则显示当前
  • id username查看用户UID和相关组的UID
  • groupadd 选项 组名 添加一个用户组
    • -g指定用户组编号GID
    • -o表示新用户组的GID可以和老用户组相同
  • groupdel 组名删除一个用户组
  • groupmod 选项 组名
    • 除了add之外的参数,多了一个-n表示重命名
  • gpasswd -a username gname将用户添加到组
  • newgrp 组名如果一个用户同时属于多个用户组,使用此命令可切换组

用户组的存在是为了方便用户管理对他人的权限,避免对除自己之外的其他所有用户赋予相同的权限 可通过1查看默认用户组及权限

用户添加

  • who可查看已登陆的用户
  • sudo passwd -Sa查看系统上的用户
  • useradd命令,可通过man useradd查看用法
    参数 含义
    -d 目录 指定一个用户目录,若目录不存在,需要-m参数创建主目录
    -g 用户组 指定用户所属的用户组
    -G 用户组,用户组 指定用户所属的附加组
    -s shell 指定用户登录的shell
    -u 用户号 指定用户的用户号
    -m 自动建立用户的登录目录
    -M 不自动建立用户的登录目录
    -n 不自动建立以用户名为名的用户组
  • 新建一个普通用户
1
2
 useradd -d  /home/username -s /bin/bash -m username 
 passwd username
  • 新建一个管理员用户
1
2
3
4
 # 在sudoers 中将sudo组设为sudo权限(参照取消注释之后的wheel组)
 useradd -d  /home/username -s /bin/bash -g sudo -m username 
 passwd username
 # 或者直接将该用户设为sudo权限

用户删除

  • userdel命令,删除用户,加-r参数也删除用户主目录

用户修改

  • usermod命令,参数与useradd一致,含义变为修改

修改/etc/sudoers文件,为用户添加sudo权限,添加如下

1
username ALL = (ALL) ALL

用户密码管理

  • passwd 选项 用户名
    • -l 锁定账号,禁止登陆
    • -u 解锁账号
    • -d 使账号无密码,同时不能登陆
    • -f 强迫用户下次登陆时修改密码

权限管理

  • Linux系统上对文件的权限有着严格的控制,如果想对某个文件执行某种操作,必须具有对应的权限方可执行成功。
  • Linux下文件的权限类型一般包括读,写,执行。对应字母为r、w、x
  • Linux下权限的粒度有拥有者 、群组 、其它组三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。
  • 通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组 我们以下图为例来讲解Linux下的文件权限
    /Linux%E6%9D%83%E9%99%90%E7%AE%A1%E7%90%86/%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90.jpg
    文件权限示例

若是文件夹,则type为d,否则为-

文件归属修改

  • chgrp [-R] 属组名 文件/文件夹可以修改其属组,-R参数会递归修改该目录下所有文件属组
  • chown [-R] 用户名 文件/文件夹/chown [-R] 用户名:属组名 文件/文件夹修改文件的所属用户和组别

文件权限修改

  • Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。
  • 根据上图可以看出文件的权限字符为: -rwxrwxrwx , 这九个权限是三个一组的
  • 文件的权限修改主要利用chmod命令,我们可以使用下图的方式利用符号来管理文件权限
    /Linux%E6%9D%83%E9%99%90%E7%AE%A1%E7%90%86/%E7%AC%A6%E5%8F%B7%E6%9D%83%E9%99%90%E7%AE%A1%E7%90%86.png
    符号权限管理
  • 例如我们要将文件权限修改为rwxr-xr--可以使用命令chmod u=rwx g=rx o=r 文件/文件夹

  • 假如我们想对某个用户加减某种权限,也可以通过这种方式进行

  • chmod -RR参数可以递归处理目录下的文件和文件夹

  • Linux文件权限同样也可以通过数字来管理。各权限的分数对照表如下:
    • r:4
    • w:2
    • x:1
  • 每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:-rwxrwx---时,分数为:770

如果我们需要修改权限,可以使用’chmod xyz 文件/文件夹’,xyz代表三个数字