目录
1. Linux 用户、组、权限操作
1.1. 用户命令
# 创建用户
useradd haha
# #为该用户设置密码
passwd haha
# 正确删除用户
userdel -r haha
# 查看当前用户
id
# 查看是否有该用户
id john
1.1.1. 删除用户
使用 userdel haha
命令删除该用户时, 并不能删除该用户的所有信息, 只是删除了 /etc/passwd
、/etc/shadow
、/etc/group/
、/etc/gshadow
四个文件里的该账户和组的信息。默认情况下创建一个用户账号, 会创建一个家目录和一个用户邮箱 (在 /var/spool/mail
目录以用户名命名)。下次再创建用户时, 就会出现用户已存在。
正确删除用户:
userdel -r haha
再使用 find 命令查看, 用户相关文件已经删除。
find / -name "*haha*"
1.2. 组
# 查看当前组
groups
# 查看是否有该组
groups zhu
# 删除组
groupdel zhu
id -g
# To get all the groups I belong
id -G
# And to get the actual names, instead of the ids, just pass the flag -n.
id -Gn
# This last command will yield the same result as executing
groups
1.2.1. 查看 /etc/group
法
/etc/group
是用户组配置文件, 可以查看此文件通过 grep
查询某个用户所在的用户组
cat /etc/group | grep wuliang
1.2.2. id 命令法
id
命令也可以查看某个用户所属的用户组
只执行 id
命令, 可以查看系统当前登录用户的用户组
id wuliang
, 查询特定用户的用户组, 在 id 后面跟用户名即可
1.2.3. linux 将用户加入到 root 组
打开终端并以 root 用户身份登录。
输入以下命令将用户添加到 root 组:
usermod -aG root username
其中, username
是要添加到 root 组的用户名。
确认用户已经被添加到 root 组, 可以使用以下命令:
groups username
其中, username
是要确认的用户名。如果用户已经被添加到 root 组, 那么输出结果中应该包含 root 组。
1.3. 用户权限
在 Linux 中定义文件或者文件夹的权限为 “777”, 就是所有的权限, 4 是读的权限, 2 是写的权限, 1 是执行的权限, 7 就是所有权限。
1.3.1. 三种权限
Linux 下的每个文件都有以下三种权限:
r
: 表示读取, 对应的数字为 4;w
: 表示写入, 对应的数字为 2;x
: 表示执行, 对应的数字为 1;
通过 4、2、1 的组合, 我们可以得到以下几种权限:
- 0: 没有权限, 用
-
表示 - 4: 读取权限, 用
w
表示 - 5: 读取和执行权限, 用
rx
表示 - 6: 读取和写入权限, 用
rw
表示 - 7: 读取、写入和执行权限, 用
rwx
表示
1.3.2. 三个对象
在上面已经说明 7
表示读取、写入和执行权限。但是为啥是三位数字呢? 比如 777
。
其实, 三位是指三个不同的对象,
- User: 文件所属者
- Group: 文件所属组
- Other: 其他人
1.4. sudo 下某些 command not found
原因是 root 用户的环境变量与其它用户是不一样的, 所以找不到命令。有以下两种解决方法。
1.4.1. 使用 etc/sudoers
文件里面的 secure_path
属性
可以使用替换 secure_path
值而不是附加它, 则可以使用更简单的解决方案。通常 sudo
有一个像 /etc/sudoers.d
这样的配置目录, 您可以在其中删除其他配置文件。只需使用完整的 secure_path
值创建一个文件:
$ sudo visudo
Defaults secure_path="<default value>:/usr/local/bin"
这会覆盖主配置中的值。如果所有计算机的路径值相同, 则可以使用脚本或程序包轻松部署。
这还有一个额外的好处, 即在将来更新 sudo
包时, 您不必检查并可能合并配置文件。
1.4.2. 使用软链接
将其它路径下的执行文件软链接到 /usr/bin
(其它 root 用户 “必须的命令目录” 也行), 这样就可以找到了。
ln -s aaa /usr/bin/aaa
如何查看 root 用户的 “必须的命令目录”: 切换到 root 用户下, 用 echo $PATH
查看有哪些路径就好了。
1.5. How To Find Out My Linux Distribution Name and Version
/etc/*-release
file – Print Linux distribution name and version.lsb_release
command – Show Linux distribution-specific information./proc/version
file – Use this file to see Linux kernel version that is currently running.hostnamectl
command – Display host name and Linux distro info on systemd based distros.