1、用户和用户组
用户和用户组是通过ID来唯一标识的,root的默认ID为0
#可以使用id命令查看用户的id信息
[root@zy ~]# id zy
uid=1000(zy) gid=1000(zy) groups=1000(zy)
-
用户
超级管理员:0
系统账号ID范围:1~999 当一个程序在运行的时候,需要指定用户身份以便对资源进行分配
普通用户账号ID范围:1000+
-
组
Linux可以将一个或者多个用户加入用户组中,用户组通过GID来唯一标识
管理员组:0
系统组:1~999
普通组:100+
2、useradd的常见用法
用法:useradd [选项] 登录名
useradd -D
-d, --home-dir HOME_DIR 设置用户的家目录地址,默认为/home/username
-m, --create-home 创建用户的家目录
-M, --no-create-home 不创建用户的家目录
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表
-r, --system 创建一个系统账户
-u, --uid UID 新账户的用户 ID
-s, --shell SHELL 新账户的登录 shell
-c, --comment COMMENT 新账户的 GECOS 字段
#常见格式
[root@Rocky9 home]$ id ygnahz
id: “ygnahz”:无此用户
[root@Rocky9 home]$ useradd -u 1002 -c "ygnahz is test user" -m -d /home/y1 ygnahz
[root@Rocky9 home]$ id ygnahz
用户id=1002(ygnahz) 组id=1002(ygnahz) 组=1002(ygnahz)
#使用getent passwd 可以查看用户的配置信息
[root@Rocky9 home]$ getent passwd ygnahz
ygnahz:x:1002:1002:ygnahz is test user:/home/y1:/bin/bash
#由于Ubuntu中/etc/default/useradd 中默认的shell类型为sh类型,所以可以使用-s 修改类型为bash
[zy@ubuntu ~]$ cat /etc/default/useradd | grep -i "^shell"
SHELL=/bin/sh
root@ubuntu:~# useradd -r -u 666 -s /bin/bash ygnahz
root@ubuntu:~# id ygnahz
uid=666(ygnahz) gid=666(ygnahz) groups=666(ygnahz)
root@ubuntu:~# getent passwd ygnahz
ygnahz:x:666:666::/home/ygnahz:/bin/bash
#创建用户的时候,由于/etc/skel的存在默认会在家目录创建很多隐藏文件
[root@Rocky9 y1]$ ls -a
. .. .bash_logout .bash_profile .bashrc
[root@Rocky9 y1]$ ls -a /etc/skel/
. .. .bash_logout .bash_profile .bashrc
如果我们修改/etc/skel文件中的内容,那么新创建的用户家目录中的默认文件也会修改
3、usermod的常见用法
用法:usermod [选项] 登录名
-d, --home-dir HOME_DIR 设置用户的家目录地址,默认为/home/username
-m, --create-home 创建用户的家目录
-M, --no-create-home 不创建用户的家目录
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表 注意使用-G修改附加组的时候,可以配合-a达到追加的效果
-r, --system 创建一个系统账户
-u, --uid UID 新账户的用户 ID
-s, --shell SHELL 新账户的登录 shell
-c, --comment COMMENT 新账户的 GECOS 字段
-l, --login NEW_LOGIN 修改用户的名字
4、userdel的常见用法
用法:userdel [选项] 登录名
选项:
-r, --remove 删除主目录和信件池
#默认删除不会删除掉用户的家目录,如果下个用户与被删除的用户有相同的uid,那么原文件被继承,可以使用-r删除其家目录
[root@Rocky9 home]$ ll
总用量 0
drwx------. 2 ygnahz ygnahz 62 10月 1 16:09 y1
drwx------. 2 zy zy 83 9月 27 00:53 zy
[root@Rocky9 home]$ userdel ygnahz
[root@Rocky9 home]$ ll
总用量 0
drwx------. 2 1002 1002 62 10月 1 16:09 y1
drwx------. 2 zy zy 83 9月 27 00:53 zy
[root@Rocky9 home]$ useradd -u 1002 y2
[root@Rocky9 home]$ ll
总用量 0
drwx------. 2 y2 y2 62 10月 1 16:09 y1
drwx------. 2 y2 y2 62 10月 1 16:21 y2
drwx------. 2 zy zy 83 9月 27 00:53 zy
5、groupadd的常见用法
用法:groupadd [选项] 组
-g, --gid GID 为新组使用 GID
6、groupdel的常见用法
用法:groupdel [选项] 组
选项:
-f, --force 即便是用户的主组也继续删除
7、passwd的常见用法
用法: passwd [选项...] <帐号名称>
--stdin 从标准输入读取密码 注:Ubuntu无此功能
-x, --maximum=DAYS 密码的最长有效时限(只有 root 用户才能进行此操作)
-n, --minimum=DAYS 密码的最短有效时限(只有 root 用户才能进行此操作)
-w, --warning=DAYS 在密码过期前多少天开始提醒用户(只有 root 用户才能进行此操作)
-i, --inactive=DAYS 当密码过期后经过多少天该帐号会被禁用(只有 root 用户才能进行此操作)
#案例
[root@Rocky9 home]$ echo "123456" | passwd --stdin zy
更改用户 zy 的密码 。
passwd:所有的身份验证令牌已经成功更新。
#结合之前的tr实现生成随机密码
[root@Rocky9 home]$ cat /dev/urandom | tr -dc "[:alnum:]" | head -c 10
2S0g87YK3O
[root@Rocky9 home]$ echo $(ccat /dev/urandom | tr -dc "[:alnum:]" | head -c 10) | passwd --stdin
8、文件权限
-
文件
r: 可使用文件查看类工具,比如:cat,可以获取其内容
w: 可修改其内容,文件是否被删除和文件的权限无关
x: 可以执行(运行)此文件(此文件的内容必须是可执行)
-
目录
r:可以查看到目录中的列表,但是无法看见元数据信息也不能查看文件的内容
w:可以在目录中创建和删除内容
x:可以cd进入此目录,也可以查看到执行文件的元数据信息,属于目录可访问的最小权限
X:分配给目录的时候具有x权限,分配给文件则无x权限
10、chown的常见用法
用法:chown [选项]... [所有者][:[组]] 文件...
或:chown [选项]... --reference=参考文件 文件...
修改每个<文件>的所有者和/或所属组为给定的<所有者>和/或<组>
-R 递归修改
[root@Rocky9 y1]$ chown zy:zy a.txt
[root@Rocky9 y1]$ ll
总用量 0
-rw-r--r--. 1 zy zy 0 10月 1 16:49 a.txt
#递归修改用户权限
[root@Rocky9 y1]$ ll -d a a/b a/b/c
drwxr-xr-x. 3 root root 15 10月 1 16:51 a
drwxr-xr-x. 3 root root 15 10月 1 16:51 a/b
drwxr-xr-x. 3 root root 15 10月 1 16:51 a/b/c
[root@Rocky9 y1]$ chown -R zy:root a
[root@Rocky9 y1]$ ll -d a a/b a/b/c
drwxr-xr-x. 3 zy root 15 10月 1 16:51 a
drwxr-xr-x. 3 zy root 15 10月 1 16:51 a/b
drwxr-xr-x. 3 zy root 15 10月 1 16:51 a/b/c
11、chmod的常见用法
用法:chmod [选项]... 模式[,模式]... 文件...
或:chmod [选项]... 八进制模式 文件...
或:chmod [选项]... --reference=参考文件 文件...
将每个文件的权限模式变更至指定模式。
-R, --recursive 递归修改文件和目录
每个模式字符串都应该匹配如下格式:"[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+"。
#模式法 a g o 分别代表用户、组、其它
[root@Rocky9 y1]$ chmod a=rwx a.txt
[root@Rocky9 y1]$ ll a.txt
-rwxrwxrwx. 1 zy zy 0 10月 1 16:49 a.txt
#数字发 r w x 分别用4 2 1表示
[root@Rocky9 y1]$ ll a.txt
-rwxrwxrwx. 1 zy zy 0 10月 1 16:49 a.txt
[root@Rocky9 y1]$ chmod 444 a.txt
[root@Rocky9 y1]$ ll a.txt
-r--r--r--. 1 zy zy 0 10月 1 16:49 a.txt