Linux Command For System Admin ============================================================================== .. contents:: :depth: 1 :local: User Management ``sudo`` ------------------------------------------------------------------------------ .. contents:: :depth: 1 :local: 查看所有有 sudo 权限的用户 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :: sudo cat /etc/sudoers 查看自己账户的 sudo 权限 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :: sudo -l 给予某个用户 sudo 权限 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 首先你得使用一个已经有 sudo 权限的用户, 然后你需要通过修改 ``/ect/sudoers`` 配置文件来指定哪些用户有 sudo 权限. :: sudo chmod u+w /etc/sudoers # 给予 /ect/sudoers 写权限 sudo vim /etc/sudoers # 修改 /ect/sudoers 配置文件 sudo chmod u-w /etc/sudoers # 收回 /ect/sudoers 写权限 进入配置文件后, 搜索 ``root ALL=(ALL) ALL`` 你会定位到允许 root 用户 sudo 的一行. 然后再下面加上如下内容. 其中 最后的 ``ALL`` 表示允许直接 sudo, ``NOPASSWD: ALL`` 表示允许不输入密码的情况下进行 sudo:: ${USERNAME} ALL=(ALL) ALL ${USERNAME} ALL=(ALL) NOPASSWD: ALL 切换成超级用户 root ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :: sudo su - 切换成其他用户 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :: sudo su - ${USERNAME} File Directory Permission ``chmod`` ------------------------------------------------------------------------------ .. contents:: :depth: 1 :local: ``chmod`` 详解 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``chmod`` 是 Linux 下的一个命令, 用于控制文件和目录的访问权限, 简单来说, 就是 允许/禁止, 哪些用户, 对哪些文件, 进行哪些操作. **Principal (当事人)**: 有三种不同类型的用户可对文件或目录进行访问: 文件所有者, 同组用户, 其他用户. 文件所有者一般是文件的创建者. 文件所有者可以允许同组用户有权访问文件, 还可以将文件的访问权限赋予系统中的其他用户. 在这种情况下, 系统中每一位用户都能访问该用户拥有的文件或目录. - ``u``: 目录或者文件的当前的用户 - ``g``: 目录或者文件的当前的群组 - ``o``: 除了目录或者文件的当前用户或群组之外的用户或者群组 - ``a``: 所有的用户及群组 如果不指定, 默认是 ``u``. **Permission (文件的权限)**: 文件或目录的访问权限分为 只读, 只写 和 可执行 三种. 以文件为例, 只读权限表示只允许读其内容, 而禁止对其做任何的更改操作. 可执行权限表示允许将该文件作为一个程序执行. 文件被创建时, 文件所有者自动拥有对该文件的读, 写和可执行权限, 以便于对文件的阅读和修改. 用户也可根据需要把访问权限设置为需要的任何组合. - ``r``: 读权限, 用数字 4 表示 - ``w``: 写权限, 用数字 2 表示 - ``x``: 执行权限, 用数字 1 表示 - ``-``: 删除权限, 用数字 0 表示 - ``s``: 特殊权限 chmod 命令语法有两种形式: **文字设定法**:: chmod [principal] [+|-|=] [permission] filename **数字设定法**:: chmod [permission] filename 例如将连接远程服务器的 ssh key 设置为允许创建者用户只读, 其他用户什么都不允许: ``chmod 400 ~/ec2.pem``. 可以看出数字设定法的格式是 3 个 0~7 的八进制数, 数值是通过 2 进制编码决定了 r/w/x 的权限, 0 表示什么都不能做. 顺序分别是 u/g/o. 第一位 4 表示允许创建者用户只读, 后两位分别表示 当前群组以及其他用户什么都不能做. **查看文件的权限** ``ls -l`` 命令可以列出文件和目录的访问权限. 其中第一列表示了当前文件的访问权限. 第一列共有10个字符, 第一个字符指定了文件类型. 在通常意义上, 一个目录也是一个文件. 如果第一个字符是横线, 表示是一个非目录的文件. 如果是d, 表示是一个目录. 从第二个字符开始到第十个共9个字符, 3个字符一组, 分别表示了3组用户(顺序为 u/g/o) 对文件或者目录的权限. 权限字符用横线代表空许可, r代表只读, w代表写, x代表可执行.