当前位置: 代码迷 >> 综合 >> Linux常用命令之权限管理和用户管理命令详解(chmod、chown、chgrp、umask、useradd、passwd、who)
  详细解决方案

Linux常用命令之权限管理和用户管理命令详解(chmod、chown、chgrp、umask、useradd、passwd、who)

热度:44   发布时间:2023-12-25 07:03:55.0

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)