Linux权限


root

root用户 权限最大 普通用户的权限一般在其home目录里面是不受限的 一旦出了home,其他地方基本只能查看和执行

su命令

switch user,账号切换 su - username -代表的意思是切换用户后添加环境变量 切换用户后也可以通过exit命令来回退回上个用户,或者ctrl + d root切换到其他用户不需要密码

sudo

暂时让当前用户以root权限执行 sudo command

用户与用户组

创建与删除用户组

sudo groupadd groupname
sudo groupdel groupname

用户相关命令

useradd -g <组名或GID> -d <目录路径> <用户名>//用于创建用户并指定用户组(`-g`)和主目录(`-d`)的命令
userdel [-r] username //加上r删除时删除用户的Home目录
id [username]
usermod -aG usergroup username

使用getnet可以查看系统有哪些用户 getent 命令用来查看系统的数据库中的相关记录。即使这些数据库不是在本地,比如 ldap 或者 nis 中的数据库,也可以使用 getent passwd查看。

Nick:x:1001:1001::/home/Nick:/bin/sh

用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)

chmod

chmod [选项] <权限模式> <文件或目录>
选项​
  • -R:递归修改目录及其子内容的权限。
  • -v:显示详细操作信息。
  • --reference=file:参照某个文件的权限设置目标文件。 例如
chmod -R u=rwx,g=rx,o=x Test

执行后

drwxr-xrwx 2 loot loot 4096 May 26 22:17 Test

给文件夹Test修改用户权限 修改用户权限的格式有很多种

符号模式(字符模式)​

通过 u/g/o/a + +/-/= + r/w/x 组合修改权限。

  • ​示例​​:
chmod u+x file.txt       # 为用户添加执行权限
chmod g-w,o+r file.txt   # 移除组的写权限,为其他用户添加读权限
chmod a=rwx file.txt     # 所有用户拥有全部权限(等效于777)
chmod go= file.txt       # 移除组和其他用户的所有权限```
​数字模式(八进制模式)​

用3位八进制数表示权限,每位对应 r(4) + w(2) + x(1) 的和。

  • ​常用权限组合​​:
数字 权限 说明
755 rwxr-xr-x 用户完全控制,其他用户读和执行
644 rw-r–r– 用户可读写,其他用户只读
600 rw——- 仅用户可读写
777 rwxrwxrwx 所有用户完全控制(慎用)
  • ​示例​​:
chmod 755 script.sh     # 用户可读/写/执行,组和其他用户可读/执行
chmod 644 config.conf  # 用户可读写,其他用户只读`

​4. 特殊权限位​

  • ​SetUID(4)​​:以文件所有者身份执行(如 chmod 4755 file)。
  • ​SetGID(2)​​:以文件所属组身份执行或继承目录组权限(如 chmod 2770 dir)。
  • ​粘滞位(1)​​:目录中文件仅所有者可删除(如 chmod 1777 /tmp)。

​示例​​:

chmod 4755 /usr/bin/sudo   # 启用SetUID
chmod 1777 /shared         # 启用粘滞位

chown

chown(Change Owner)是 Linux/Unix 中用于修改文件或目录的所有者(Owner)和所属组(Group)的命令。通过该命令,可以精确控制文件资源的归属,是权限管理的重要工具。 简单来说就是改变文件或者文件夹的所属组 只有root可以执行

​1. 命令语法​

chown [选项] <用户>:<用户组> <文件或目录> # 或 chown [选项] <新所有者>.<新所属组> <文件或目录>
  • ​主要功能​​:
    • 修改文件/目录的所有者(Owner)。
    • 修改文件/目录的所属组(Group)。
    • 可同时修改所有者和组,或仅修改其中一个。

 常用选项​

选项 说明
-R 递归修改目录及其子内容的所有权(慎用,避免误操作)。
-v 显示详细操作信息(Verbose)。
-c 仅在发生实际修改时显示信息。
--from=<原所有者>:<原所属组> 仅当文件当前所有者和组匹配指定值时才修改(避免误改)。
-h 修改符号链接本身的所有权(默认修改符号链接指向的文件)。

​3. 使用示例​

​基本操作​
  1. ​修改文件所有者​​: chown user1 file.txt # 将 file.txt 的所有者改为 user1

  2. ​修改文件所属组​​: chown :developers file.txt # 将 file.txt 的所属组改为 developers

  3. ​同时修改所有者和组​​: chown user1:developers file.txt # 或 chown user1.developers file.txt

​递归修改目录​

chown -R user1:developers /data/project # 递归修改目录及子内容

​仅当匹配原所有者时修改​

chown --from=old_user:old_group new_user:new_group file.txt

​修改符号链接所有权​

chown -h user1 symlink # 修改符号链接本身的所有权


​4. 权限要求​

  • ​root 用户​​:可修改任意文件的所有者和组。
  • ​普通用户​​:仅能修改自己拥有的文件的所有者(需目标用户存在),且只能将组修改为自己所属的组。



Enjoy Reading This Article?

Here are some more articles you might like to read next: