Linux常用命令——权限管理命令
(1)chmod命令:更改文件或目录的权限
chmod 是修改权限的命令,基本信息如下:
- 命令名称:chmod。
- 所在路径:/bin/chmod。
- 执行权限:所有用户。
- 功能描述:修改文件的权限模式。
在Linux系统中,文件的权限有两个人可以更改,一个是文件的所有者,一个是管理员root;
1.1> 更改权限的方式一:chmod [ {ugoa} { +-= } {rwx} ] [ 文件或目录 ]
用户身份:
- -u:代表所有者(user)。
- -g:代表所属组(group)。
- -o:代也人(other)。
- -a:代表全部身份(all)。
赋予方式:
- +:加入权限。
- :减去权限。
- =:设置权限。
权限:
- r:读取权限(read)。
- w:写权限(write)。
- x:执行权限(execute)
[root@redhat tmp]# ls -l services
-rw-r--r--. 1 root root 40 3月 24 01:22 services
[root@redhat tmp]# chmod u+x services
[root@redhat tmp]# ls -l services
-rwxr--r--. 1 root root 40 3月 24 01:22 services[root@redhat tmp]# chmod g+w,o-r services
[root@redhat tmp]# ls -l services
-rwxrw----. 1 root root 40 3月 24 01:22 services[root@redhat tmp]# chmod g=rwx services
[root@redhat tmp]# ls -l services
-rwxrwx---. 1 root root 40 3月 24 01:22 services
1.2> 更改权限的方式二:权限的数字表示,r----4,w----2,x----1;例如:rwxrw-r--: 764
[root@redhat tmp]# chmod 640 services
[root@redhat tmp]# ls -l services
-rw-r-----. 1 root root 40 3月 24 01:22 services
1.3> -R选项:递归设置权限,改变目录权限的同时,将子目录中的所有文件的权限也进行修改;
[root@redhat tmp]# mkdir -p a/b
[root@redhat tmp]# ls -ld a
drwxr-xr-x. 3 root root 4096 3月 24 03:58 a
[root@redhat tmp]# ls -ld a/b
drwxr-xr-x. 2 root root 4096 3月 24 03:58 a/b[root@redhat tmp]# chmod 777 a
[root@redhat tmp]# ls -ld a
drwxrwxrwx. 3 root root 4096 3月 24 03:58 a
[root@redhat tmp]# ls -ld a/b
drwxr-xr-x. 2 root root 4096 3月 24 03:58 a/b[root@redhat tmp]# chmod -R 777 a
[root@redhat tmp]# ls -ld a/b
drwxrwxrwx. 2 root root 4096 3月 24 03:58 a/b
1.4> 在root账户建立一个目录(777权限),在该目录中有一个文件(默认权限),一个普通账户能否删除该目录下的文件呢?
首先在root账户中的/tmp/a(777权限)目录下新建一个文件cfile(其他用户只有 r 权限);
[root@redhat tmp]# touch a/cfile
[root@redhat tmp]# ls -l a/cfile
-rw-r--r--. 1 root root 0 3月 24 04:04 a/cfile
[root@redhat tmp]# ls -ld a
drwxrwxrwx. 3 root root 4096 3月 24 04:04
然后创建一个普通用户账户,并设置密码;
[root@redhat tmp]# adduser yaoyao
[root@redhat tmp]# passwd yaoyao
更改用户 yaoyao 的密码 。
新的 密码:
无效的密码: WAY 过短
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
使用普通用户账户登录,查看是否可以删除/tmp/a/cfile
[root@redhat tmp]# su - yaoyao
[yaoyao@redhat ~]$ rm /tmp/a/cfile
rm:是否删除有写保护的普通空文件 "/tmp/a/cfile"?y
[yaoyao@redhat ~]$ ls /tmp/a
b
那么,为什么普通用户可以删除只有 ‘rw-r--r--’ 权限的/tmp/a/cfile文件呢?
如下表所示,因为/tmp/a目录的权限是777,所以普通用户可以对该目录下的文件进行删除操作,而文件的权限针对的是文件内容的;并不要说删除文件就是对这个文件具有写权限;
代表字符 | 权限 | 对文件的含义 | 对目录的含义 |
---|---|---|---|
r | 读权限 | 可以查看文件的内容 | 可以列出目录中的内容 |
w | 写权限 | 可以修改文件的内容 | 可以在目录中创建,删除文件 |
x | 执行权限 | 可以执行文件 | 可以进入目录 |
(2)chown命令:改变文件或目录的所有者
chown 是修改文件和目录的所有者和所属组的命令,其基本信息如下。
- 命令名称:chown。
- 所在路径:/bin/chown。
- 执行权限:所有用户。
- 功能描述:修改文件和目录的所有者。
在Linux系统中,要改变文件的所有者,只有root账户才可以更改;
[yaoyao@redhat ~]$ touch abcd
[yaoyao@redhat ~]$ ls -l abcd
-rw-rw-r--. 1 yaoyao yaoyao 0 3月 24 04:35 abcd
[yaoyao@redhat ~]$ chown root abcd
chown: 正在更改"abcd" 的所有者: 不允许的操作[root@redhat tmp]# cd /home/yaoyao
[root@redhat yaoyao]# ls
abcd
[root@redhat yaoyao]# chown root abcd
[root@redhat yaoyao]# ls -l abcd
-rw-rw-r--. 1 root yaoyao 0 3月 24 04:35 abcd
(3)chgrp命令:修改文件或目录的所属组
chgrp 是修改文件或目录的所属组的命令,基本信息如下:
- 命令名称:chgrp。
- 所在路径:/bin/chgrp。
- 执行权限:所有用户。
- 功能描述:修改文件或目录的所属组。
修改文件的所属组;
[root@redhat yaoyao]# ls -l abcd
-rw-rw-r--. 1 root yaoyao 0 3月 24 04:35 abcd
[root@redhat yaoyao]# groupadd group1
[root@redhat yaoyao]# chgrp group1 abcd
[root@redhat yaoyao]# ls -l abcd
-rw-rw-r--. 1 root group1 0 3月 24 04:35 abcd
(4)umask命令:令新建文件或目录拥有默认权限
4.1> 在 Linux 中,通过 umask 默认权限来给所有新建立的文件和目录赋予初始权限,文件默认没有执行权限;
[root@redhat yaoyao]# umask -S
u=rwx,g=rx,o=rx
[root@redhat yaoyao]# mkdir lamp
[root@redhat yaoyao]# ls -ld lamp
drwxr-xr-x. 2 root root 4096 3月 24 04:50 lamp
[root@redhat yaoyao]# touch tfile
[root@redhat yaoyao]# ls -l tfile
-rw-r--r--. 1 root root 0 3月 24 04:50 tfile
4.2> 如下图所示:umask-------->0022;
[root@redhat yaoyao]# umask
0022
其中:
0 特殊权限
022 --- -w- -w-777 rwx rwx rwx
022 --- -w- -w-
----------------------- 相减
755 rwx r-x r-x ------->目录的默认权限
644 rw- r-- r-- ------->文件的默认权限
4.3> 所以,如果我们需要将默认的权限更改,例如,将默认的权限更改为700,则需要设置umask的参考值为007(777-700);
[root@redhat yaoyao]# umask 077
[root@redhat yaoyao]# mkdir aaaa
[root@redhat yaoyao]# ls -ld aaaa
drwx------. 2 root root 4096 3月 24 05:03 aaaa
[root@redhat yaoyao]# touch bbbb
[root@redhat yaoyao]# ls -l bbbb
-rw-------. 1 root root 0 3月 24 05:04 bbbb
Linux常用命令——用户管理命令
(1)useradd命令:添加新用户
useradd命令是添加新用户的,基本信息如下:
- 命令名称:useradd。
- 所在路径:/usr/sbin/useradd。
- 执行权限:root用户。
- 功能描述:添加新的用户。
使用useradd命令添加新用户,添加新用户成功后,可以登录系统,并会在/home/目录中生成新用户的家目录;
[root@redhat tmp]# useradd tangyan
[root@redhat tmp]# ls /home
tangyan zhangsan
(2)passwd命令:设置用户密码
passwd命令是设置用户密码的,基本信息如下:
- 命令名称:passwd。
- 所在路径:/usr/bin/passwd。
- 执行权限:所有用户。
- 功能描述:设置用户密码。
root用户可以更改所有用户的密码,如果密码设置过于简单,也是可以修改成功的;
普通用户只能修改自己的密码,并且密码的复杂度要符合要求;
[root@redhat tmp]# passwd tangyan
更改用户 tangyan 的密码 。
新的 密码:
无效的密码: WAY 过短
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
(3)who命令:查看登录用户信息
who命令是查看登录用户信息的,基本信息如下:
- 命令名称:who。
- 所在路径:/usr/bin/who。
- 执行权限:所有用户。
- 功能描述:查看登录用户信息。
who命令可以查看登录用户信息,第一列的信息为:登录的用户名,第二列的信息为:登录终端(tty表示本地登录,pts表示远程登录,用不同的数字号区分不同的登录终端),第三列的信息为:登录时间(登录主机的IP地址)
[root@redhat tmp]# who
root tty1 2019-03-31 20:12 (:0)
root pts/0 2019-03-31 20:13 (:0.0)