Linux学习笔记-Ubuntu系统用户、群组、权限管理

一、概述

本文记录Ubuntu系统下通过命令操作用户账户进行管理。

Ubuntu系统版本:

Linux ubuntu 5.15.0-1034-raspi

#37-Ubuntu SMP PREEMPT Mon Jul 17 10:02:14 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux

注:查看系统版本号的指令如下

uname -a

用户管理主要包括:新建用户,查看用户,权限管理,删除用户

修改Root账户默认密码:

刚装完的ubuntu系统,root账户的密码是随机生成,每次开机都会随机生成一个密码,我们客户根据自己的需要设置root账户密码,毕竟管理Ubuntu系统,大部分需要用到root权限。

zero@ubuntu:/home$ sudo passwd    # 设置root账户密码
New password:
Retype new password:
passwd: password updated successfully

二、查看用户

2.1 使用Cat指令查找所有用户

cat /etc/passwd

查询结果如下:

会将所有用户列出,并显示出具体的分组信息,ID,主目录。

ubuntu@ubuntu:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:102:105::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:103:106:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
syslog:x:104:111::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
tss:x:106:112:TPM software stack,,,:/var/lib/tpm:/bin/false
uuidd:x:107:114::/run/uuidd:/usr/sbin/nologin
tcpdump:x:108:115::/nonexistent:/usr/sbin/nologin
sshd:x:109:65534::/run/sshd:/usr/sbin/nologin
pollinate:x:110:1::/var/cache/pollinate:/bin/false
landscape:x:111:118::/var/lib/landscape:/usr/sbin/nologin
fwupd-refresh:x:112:119:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
lxd:x:999:100::/var/snap/lxd/common/lxd:/bin/false

2.2 使用getent查看所有用户信息

getent passwd
ubuntu@ubuntu:~$ getent passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:102:105::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:103:106:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
syslog:x:104:111::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
tss:x:106:112:TPM software stack,,,:/var/lib/tpm:/bin/false
uuidd:x:107:114::/run/uuidd:/usr/sbin/nologin
tcpdump:x:108:115::/nonexistent:/usr/sbin/nologin
sshd:x:109:65534::/run/sshd:/usr/sbin/nologin
pollinate:x:110:1::/var/cache/pollinate:/bin/false
landscape:x:111:118::/var/lib/landscape:/usr/sbin/nologin
fwupd-refresh:x:112:119:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
lxd:x:999:100::/var/snap/lxd/common/lxd:/bin/false

2.3 使用id查找指定用户

id userid

查找指定用户的详细信息内容,如ID,分组。

ubuntu@ubuntu:~$ id root
uid=0(root) gid=0(root) groups=0(root)

2.4 使用who查找当前登录的用户

who
ubuntu@ubuntu:~$ who
ubuntu   pts/0        2023-08-15 08:36 (IP地址)
ubuntu   pts/1        2023-08-15 08:52 (IP地址)

2.5 使用getent group查看用户组,及群组成员

ubuntu@ubuntu:~$ getent group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,ubuntu
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:ubuntu
fax:x:21:
voice:x:22:
cdrom:x:24:ubuntu
floppy:x:25:ubuntu
tape:x:26:
sudo:x:27:ubuntu
audio:x:29:ubuntu
dip:x:30:ubuntu
www-data:x:33:
backup:x:34:# 当后面添加具体的群组名称时,可以查询该群组的所有成员列表
zero@ubuntu:~$ getent group test2
test2:x:1002:test,test4

2.6使用groups查看用户所属群组

zero@ubuntu:~$ groups        # 不带参数,直接查询当前账户的权限
zero adm cdrom sudo dip plugdev lxd# 带名称,可以查询指定用户的所属群组
zero@ubuntu:~$ groups test
test : test2
zero@ubuntu:~$ groups zero
zero : zero adm cdrom sudo dip plugdev lxd

三、用户管理

3.1 创建用户

3.1.1 使用adduser创建用户

adduser可以理解为对useradd封装后的方法,可以比较编辑的添加用户。

zero@ubuntu:~$ sudo adduser test1        # 添加用户
[sudo] password for zero:# 系统会自动添加新的权限信息
Adding user `test1' ...
Adding new group `test1' (1001) ...
Adding new user `test1' (1001) with group `test1' ...
Creating home directory `/home/test1' ...
Copying files from `/etc/skel' ...# 提示设置密码 ,不过有的版本可能没有提示,需要后续再行设置
New password:
Retype new password:
passwd: password updated successfully# 以下内容提示设置用户信息,可根据需要设置
Changing the user information for test1
Enter the new value, or press ENTER for the defaultFull Name []:Room Number []:Work Phone []:Home Phone []:Other []:
Is the information correct? [Y/n] y# 查看用户信息,可以看到已经有响应的权限信息了。
zero@ubuntu:~$ id test1
uid=1001(test1) gid=1001(test1) groups=1001(test1)

3.1.2 使用useradd创建用户

useradd用户是最基础也是最灵活的创建用户的指令,默认情况下会创建一个没有家目录、没有权限组,没有shell版本的用户,需要用户根据需要自行增补。

useradd的基本参数配置

  • -u  :数字,指定一个特定的 UID ;
  • -g  :接群组名称,用于设定账户的初始群组;
  • -G  :可加入的群组名称。会相应修改 /etc/group 內的相关信息!
  • -M  :强制不建立使用者家目录!(系统账户的预设值)
  • -m  :强制建立使用者家目录!(一般账号的预设值)
  • -c  :用户的说明信息。
  • -d  :使用绝对路径指定用户的家目录。
  • -r  :建立系统账号,UID值会有限制。
  • -s  :指定shell ,默认是 /bin/bash。
  • -e  :使用格式为“YYYY-MM-DD”的日期设置账号失效日期。
  • -f  :指定账号的失效天数,0为立刻失效, -1 为永不失效。
  • -D:查看useradd参数的默认值

示例1,使用默认参数创建用户:

# 使用默认参数创建
zero@ubuntu:~$ sudo useradd test2
[sudo] password for zero:# 查询用户
zero@ubuntu:/home$ id test2
uid=1002(test2) gid=1002(test2) groups=1002(test2)# 查看用户信息,有创建用户家目录
zero@ubuntu:/home$ grep test2 /etc/passwd
/etc/passwd:test2:x:1002:1002::/home/test2:/bin/sh

示例2,创建用户时指定默认群组,系统再创建群组:

# 指定uid和群组名称
zero@ubuntu:/home$ useradd -u 1003 -g zero test3
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.
zero@ubuntu:/home$ sudo useradd -u 1003 -g zero test3# 查看用户信息,初始群组就是设置的群组
zero@ubuntu:/home$ id test3
uid=1003(test3) gid=1000(zero) groups=1000(zero)
zero@ubuntu:/home$ grep test3 /etc/passwd
test3:x:1003:1000::/home/test3:/bin/sh

示例3,创建系统账户:

zero@ubuntu:/home$ useradd -r test4    # -r 代表系统账户
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.
zero@ubuntu:/home$ sudo useradd -r test4
[sudo] password for zero:
zero@ubuntu:/home$ id test4
uid=998(test4) gid=998(test4) groups=998(test4)
zero@ubuntu:/home$ grep test4 /etc/passwd
test4:x:998:998::/home/test4:/bin/sh# 系统账户会修改gshadow文件。
zero@ubuntu:/home$ grep test4 /etc/gshadow
grep: /etc/gshadow: Permission denied
zero@ubuntu:/home$ sudo grep test4 /etc/gshadow
test4:!::

3.2 使用passwd修改用户密码

passwd的参数信息:

  • --stdin :可以透過來自前一個管線的資料,作為密碼輸入,對 shell script 有幫助!
  • -l  :是 Lock 的意思,會將 /etc/shadow 第二欄最前面加上 ! 使密碼失效;
  • -u  :與 -l 相對,是 Unlock 的意思!
  • -S  :列出密碼相關參數,亦即 shadow 檔案內的大部分資訊。
  • -n  :後面接天數,shadow 的第 4 欄位,多久不可修改密碼天數
  • -x  :天数,多久内必须修改密码;
  • -w  :日期天数,密码过期前的警告天数
  • -i  :密码失效天数
zero@ubuntu:/home$ sudo passwd test1        # 使用root权限修改指定用户密码
[sudo] password for zero:
New password:
Retype new password:
passwd: password updated successfullyzero@ubuntu:/home$ passwd        # 不加任何参数,为修改当前自身密码
Changing password for zero.
Current password:
New password:
Retype new password:
The password has not been changed.

3.3 使用chage操作密码

参数列表:

  • -l :列出该账号的详细信息;
  • -d :YYYY-MM-DD格式的日期,修改最近一次更改密碼的日期;
  • -E :YYYY-MM-DD的日期,账号失效日期;
  • -I :天数,密码失效天数;
  • -m :天数,密码最短保留天数;
  • -M :天数,密码需要更改的天数;
  • -W :天数,密码过期前的警告天数;

示例1,-l直接查看详细信息,注意,需要使用root权限:

zero@ubuntu:/home$ chage -l test1
chage: Permission denied.
zero@ubuntu:/home$ sudo chage -l test1
Last password change                                    : Sep 08, 2023
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

3.4 使用usermod修改账户信息

3.4.1 参数信息如下:

  • -c  :账号说明内容;
  • -d  :账号家目录;
  • -e  :账号失效日期,格式是 YYYY-MM-DD ;
  • -f  :,0为立刻失效, -1 为永不失效;
  • -g  :接群组名称,用于设定账户的初始群组;
  • -G  :可加入的群组名称,会相应修改 /etc/group 內的相关信息;
  • -a  :与 -G 合用,增加可加入的群组;
  • -l  :修改账号名称;
  • -s  :指定shell,例如 /bin/bash 或 /bin/csh 等等;
  • -u  :修改uid;
  • -L  :锁定账户,使账户无法登录;
  • -U  :解锁账户,使账户可以正常使用。

示例1,将test2的用户名修改为test:

zero@ubuntu:/home$ sudo usermod -l test test2
[sudo] password for zero:
# ...省略部分不必要的数据
test1:x:1001:1001:,,,:/home/test1:/bin/bash
test3:x:1003:1000::/home/test3:/bin/sh
test4:x:998:998::/home/test4:/bin/sh
test:x:1002:1002::/home/test2:/bin/sh

3.4.2 修改用户的shell版本限制用户登录

(1)修改为/sbin/nologin禁止用户登录

# 修改shell
zero@ubuntu:~$ sudo usermod -s /sbin/nologin git_user# 尝试登录
PS C:\WINDOWS\system32> ssh git_user@192.168.60.3
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-83-generic x86_64)* Documentation:  https://help.ubuntu.com* Management:     https://landscape.canonical.com* Support:        https://ubuntu.com/advantageSystem information as of Wed Sep 13 01:33:57 AM UTC 2023System load:  0.00439453125     Processes:              218Usage of /:   37.5% of 9.75GB   Users logged in:        1Memory usage: 12%               IPv4 address for ens33: 192.168.60.3Swap usage:   0%* Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8sjust raised the bar for easy, resilient and secure K8s cluster deployment.https://ubuntu.com/engage/secure-kubernetes-at-the-edgeExpanded Security Maintenance for Applications is not enabled.15 updates can be applied immediately.
3 of these updates are standard security updates.
To see these additional updates run: apt list --upgradableEnable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro statusLast login: Wed Sep 13 01:09:11 2023 from 192.168.60.1
# 这里,提示拒绝访问,然后关闭连接
This account is currently not available.
Connection to 192.168.60.3 closed.

(2)设置为/bin/get-shell限制用户只能通过ssh拉取git库,而不能通过ssh登录服务器

# 修改shell
zero@ubuntu:~$ sudo usermod -s /bin/git-shell git_user# 尝试登录
PS C:\WINDOWS\system32> ssh git_user@192.168.60.3
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-83-generic x86_64)* Documentation:  https://help.ubuntu.com* Management:     https://landscape.canonical.com* Support:        https://ubuntu.com/advantageSystem information as of Wed Sep 13 01:09:10 AM UTC 2023System load:  0.31298828125     Processes:              222Usage of /:   37.5% of 9.75GB   Users logged in:        1Memory usage: 12%               IPv4 address for ens33: 192.168.60.3Swap usage:   0%* Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8sjust raised the bar for easy, resilient and secure K8s cluster deployment.https://ubuntu.com/engage/secure-kubernetes-at-the-edgeExpanded Security Maintenance for Applications is not enabled.15 updates can be applied immediately.
3 of these updates are standard security updates.
To see these additional updates run: apt list --upgradableEnable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro statusLast login: Wed Sep 13 01:07:57 2023 from 192.168.60.1# 提示git-shell未启动,无法登录。
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to 192.168.60.3 closed.

3.5 使用userdel删除用户

使用userdel会直接删除账户的所有相关数据,使用时需谨慎,一般通常是用禁用账号来替代删除账户。

参数:

  • -r:连使用者家目录也一起删除。

示例1,删除test1账户:

zero@ubuntu:/home$ sudo userdel test1
zero@ubuntu:/home$ cat /etc/passwd
# test1账户已删除
test3:x:1003:1000::/home/test3:/bin/sh
test4:x:998:998::/home/test4:/bin/sh
test:x:1002:1002::/home/test2:/bin/sh

四、群组管理

4.1 使用groupadd添加群组

参数如下:

  • -g:指定GID号;
  • -r:建立系统群组;
zero@ubuntu:/$ sudo groupadd test
[sudo] password for zero:
zero@ubuntu:/$ getent group
# 此处省略多余数据
test2:x:1002:
test4:x:998:
test:x:1003:
zero@ubuntu:/$

4.2 使用groupmod修改群组权限

参数如下:

  • -g:修改GID数字;
  • -n:修改群组名称;
# 将群组test更名为Test
zero@ubuntu:/$ sudo groupmod -n Test test
zero@ubuntu:/$ grep Test /etc/group
Test:x:1003:

4.3 使用groupdel删除群组

直接删除群组,会删除响应资料,所以删除需谨慎,需要先修改用户的群组之后再删除。

# 删除Test群组
zero@ubuntu:/$ sudo groupdel Test

4.4 使用gpasswd管理群组管理员

通过gpasswd可以设置某个群组的管理员,然后管理员就可以进行相关的群组管理操作,包括加入,移除等。

4.4.1 设置群组密码

不带任何参数是表示设置群组密码。

# 先创建一个群组
zero@ubuntu:/$ sudo groupdel Test
zero@ubuntu:/$ sudo groupadd test# 然后设置群组的密码,需要使用root权限。
zero@ubuntu:/$ gpasswd test
gpasswd: Permission denied.
zero@ubuntu:/$ sudo gpasswd test
Changing the password for group test
New Password:
Re-enter new password:

4.4.2 通过参数管理群组信息

gpasswd [-A user1,user2,...] [-M user3,user4,....] [-rR] groupname
  • -A:表示将goupname群组的主控权交由后面的使用者管理;
  • -M:表示将某些账户添加到当前群组;
  • -r:移除群组groupname的密码;
  • -R:使群组groupname的密码失效;

4.4.3 通过ad参数添加或删除群组成员

gpasswd [-ad] user groupname
  • -a:将某位使用者加入到群组groupname;
  • -d:将某位成员从群组中移除;

五、使用ACL管理权限

ACL是Access Control List的缩写,主要用来进行权限管理,可以对单一档案或目录进行rwx的权限设置。

5.1 安装ACL

目前大部分linux的CentOS系统都有内置acl,可以先查看下ACL状态。

zero@ubuntu:~$ dpkg -l | grep acl
ii  acl                                   2.3.1-1                                 amd64        access control list - utilities
ii  libacl1:amd64                         2.3.1-1                                 amd64        access control list - shared library

没有安装时会提示错误,可以自行再安装下acl工具。

zero@ubuntu:~$ sudo apt-get install acl
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:acl
0 upgraded, 1 newly installed, 0 to remove and 12 not upgraded.
Need to get 38.5 kB of archives.
After this operation, 205 kB of additional disk space will be used.
Get:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy/main amd64 acl amd64 2.3.1-1 [38.5 kB]
Fetched 38.5 kB in 3s (12.1 kB/s)
Selecting previously unselected package acl.
(Reading database ... 109692 files and directories currently installed.)
Preparing to unpack .../archives/acl_2.3.1-1_amd64.deb ...
Unpacking acl (2.3.1-1) ...
Setting up acl (2.3.1-1) ...
Processing triggers for man-db (2.10.2-1) ...
Scanning processes...
Scanning linux images...Running kernel seems to be up-to-date.No services need to be restarted.No containers need to be restarted.No user sessions are running outdated binaries.No VM guests are running outdated hypervisor (qemu) binaries on this host.

5.2 权限说明含义:

1.文档类型:

  • d:目录
  • -:档案
  • l:连接档
  • b:可供存储的周边设备
  • c:硬件设备,如键盘,鼠标

2.拥有者(owner)权限

3.所属群体(group)权限

4.其他人(other)权限

5.3 使用setfacl设置权限

5.3.1 指令

setfacl [-bkRd] [{-m|-x}] acl参数  目标档案、资料名
  • -m :设定后续acl参数,不可与 -x 合用;
  • -x :刪除后续的 acl 参数,不可与 -m 合用;
  • -b :移除所有的ACL 参数;
  • -k :移除预设的 ACL 参数;
  • -R :巡回设定acl ,亦即包括子目录;
  • -d :设定预设的acl参数!只對目录有效,在该目录新建的档案会引用该参数。
  • 以u:用户:权限组:权限的形式修改档案权限,k

5.3.2 acl参数说明

  • u:用户(user)权限,格式“u:用户名:权限”;
  • g:群组(group)权限,格式“g:群组名:权限”;
  • m:最大权限,即为可设置的最大权限,设定后,超出设定的权限设置会无效,格式“m:权限”;
  • o:其他(other)权限,格式“o:用户名:权限”;
  • 当使用-x参数时,仅需要输入参数即可,不需要输入参数,格式如“u:用户名”;

示例,创建一个文件,然后修改权限:

# 首先创建一个账号
zero@ubuntu:~$ touch acl_test# 查询测试文件状态
zero@ubuntu:~$ ll acl_test
-rw-rw-r-- 1 zero zero 0 Sep  9 05:39 acl_test# 修改用户的权限,使用acl修改后,权限会多一个+号,可以使用getfacl识别
zero@ubuntu:~$ setfacl -m u:test:rwx acl_test
zero@ubuntu:~$ ll acl_test
-rw-rwxr--+ 1 zero zero 0 Sep  9 05:39 acl_test*# 修改用拥有者的权限,用户名防空
zero@ubuntu:~$ setfacl -m u::rwx acl_test
zero@ubuntu:~$ ll acl_test
-rwxrwxr--+ 1 zero zero 0 Sep  9 05:39 acl_test*# 修改其他用户权限
zero@ubuntu:~$ setfacl -m o::rwx acl_test
zero@ubuntu:~$ ll acl_test
-rwxrwxrwx+ 1 zero zero 0 Sep  9 05:39 acl_test*# 删除当前设置的权限
zero@ubuntu:/mnt$ getfacl git
# file: git
# owner: root
# group: root
user::rwx
group::r-x
group:git:rwx    # 当前有群组权限
mask::rwx
other::r-xzero@ubuntu:/mnt$ setfacl -x g:git git    # 删除git群组的权限
setfacl: git: Operation not permitted
zero@ubuntu:/mnt$ sudo setfacl -x g:git git
[sudo] password for zero:
Sorry, try again.
[sudo] password for zero:
zero@ubuntu:/mnt$ getfacl git
# file: git
# owner: root
# group: root
user::rwx
group::r-x        # 权限已删除
mask::r-x
other::r-x

5.4 使用getfacl获取权限

getfacl 档案名

直接获取档案的权限信息。

zero@ubuntu:~$ getfacl acl_test
# file: acl_test         # 文件名
# owner: zero            # 拥有者
# group: zero            # 群组
user::rwx                # 拥有者的权限
user:test:rwx            # test的权限
group::rw-               # 群组的权限
mask::rwx                # 最大权限
other::rwx               # 其他用户的权限

5.5 使用chown修改拥有者

sudo chown -R 目标用户 目标文件、文件夹路径
# 修改git_user的家目录拥有着为git_user,-R表示递归修改子目录
zero@ubuntu:/$ sudo chown -R git_user /home/git_user
[sudo] password for zero:
zero@ubuntu:/$ getfacl /home/git_user
getfacl: Removing leading '/' from absolute path names
# file: home/git_user
# owner: git_user
# group: root
user::rwx
group::r-x
other::r-x

5.6 使用chgrp修改拥有群组

sudo chgrp 目标群组 目标路径
# 修改/home/git_user的拥有群组为git
zero@ubuntu:/$ sudo chgrp git /home/git_user
zero@ubuntu:/$ getfacl /home/git_user
getfacl: Removing leading '/' from absolute path names
# file: home/git_user
# owner: git_user
# group: git
user::rwx
group::r-x
other::r-x

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/131615.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PTA作业笔记——简单的计算

PTA作业笔记——简单的计算 7-10 整数算术运算7-11 猫是液体7-11 猫是液体7-13 计算4个整数的平均值7-14 公元前后日期格式化7-15 A除以B7-18 出租车计价 7-10 整数算术运算 本题要求编写程序,计算并输出2个正整数的和、差、积、商与余数。题目保证输入和输出全部在…

过拟合和欠拟合:机器学习模型中的两个重要概念

文章目录 🍋引言🍋过拟合和欠拟合的概念🍋过拟合和欠拟合的影响与危害🍋过拟合和欠拟合的原因与解决方法🍋过拟合和欠拟合的研究现状与发展趋势🍋过拟合&欠拟合---案例🍋总结 🍋…

【基本数据结构 三】线性数据结构:栈

学习了数组和链表后,再来看看第三种线性表结构,也就是栈,栈和后边讲的队列一样是一种受限的线性表结构,正是因为其使用有限制,所以对于一些特定的需要操作可控的场合,受限的结构就非常有用。 栈的定义 我们平时放盘子的时候,都是从下往上一个一个放;取的时候,我们也…

Python 图形化界面基础篇:使用网格布局( Grid Layout )排列元素

Python 图形化界面基础篇:使用网格布局( Grid Layout )排列元素 引言什么是 Tkinter 的网格布局?步骤1:导入 Tkinter 模块步骤2:创建 Tkinter 窗口步骤3:创建网格步骤4:将元素放置在…

【学习笔记】元学习如何解决计算机视觉少样本学习的问题?

目录 1 计算机视觉少样本学习 2 元学习 3 寻找最优初始参数值方法:MAML 3.1 算法步骤 3.2 代码:使用MAML 和 FO-MAML、任务增强完成Few-shot Classification 4 距离度量方法:Siamese Network,ProtoNet,RN 4.1 孪生网络(Sia…

软件测试7大误区

随着软件测试对提高软件质量重要性的不断提高,软件测试也不断受到重视。但是,国内软件测试过程的不规范,重视开发和轻视测试的现象依旧存在。因此,对于软件测试的重要性、测试方法和测试过程等方面都存在很多不恰当的认识&#xf…

驱动开发,stm32mp157a开发板的led灯控制实验(再优化),使用ioctl函数,通过字符设备驱动分步注册方式编写LED驱动,完成设备文件和设备的绑定

1.实验目的 编写LED灯的驱动,在应用程序中编写控制LED灯亮灭的代码逻辑实现LED灯功能的控制; 2. LED灯相关寄存器分析 LED1->PE10 LED1亮灭: RCC寄存器[4]->1 0X50000A28 GPIOE_MODER[21:20]->01 (输出) 0X50006000 GPIOE_ODR[10]-&…

024 - STM32学习笔记 - 液晶屏控制(一) - LTDC与DMA2D初始

024- STM32学习笔记 - LTDC控制液晶屏 在学习如何控制液晶屏之前,先了解一下显示屏的分类,按照目前市场上存在的各种屏幕材质,主要分为CRT阴极射线管显示屏、LCD液晶显示屏、LED显示屏、OLED显示屏,在F429的开发板上,…

Linux HTTP协议

目录 1.浏览器与服务器通信过程2.HTTP请求报头(1)HTTP的请求报头结构(2)HTTP的请求方法 3.HTTP应答报头(1)HTTP的应答报头结构(2) HTTP的应答状态 1.浏览器与服务器通信过程 浏览器…

Unity3D之动态生成指定数量带间隔的地面

文章目录 准备代码实现实现效果 准备 空物体生成脚本地面预制体 代码实现 using System.Collections; using System.Collections.Generic; using System.Runtime.CompilerServices; using UnityEngine;public class CreateGround : MonoBehaviour {[SerializeField]public i…

Java版的数据结构——栈和队列

目录 1. 栈(Stack) 1.1 概念 1.2 栈的使用 1.3 栈的模拟实现 1.4 栈的应用场景 1.4.1 改变元素的序列 1.4.2 将递归转化为循环 2. 队列(Queue) 2.1 概念 2.2 队列的使用 2.3 队列模拟实现 2.4 循环队列 3. 双端队列&…

Navicat15 /16 已连接数据库密码解密

前言 相信你会遇到使用navicat忘记已连接数据密码的问题吧!实在是,密码太多容易忘记!!! 感谢大佬as_dmy的文章如何查看navicat已连接数据库密码,然后才有了此文! 1.0版本需要手动查看导出的co…

垃圾收集算法

1.如何判断对象是否存活? 1.1引用计数算法 基本思路: 在对象中添加一个引用计数器每当有一个地方引用它的时候,计数器就加1每当有一个引用失效的时候,计数器就减-1当计数器的值为0的时候,那么该对象就是可被GC回收的…

vue基础知识八:为什么data属性是一个函数而不是一个对象?

一、实例和组件定义data的区别 vue实例的时候定义data属性既可以是一个对象,也可以是一个函数 const app new Vue({el:"#app",// 对象格式data:{foo:"foo"},// 函数格式data(){return {foo:"foo"}} })组件中定义data属性&#xff…

网站文章生成技术-网站文章生成工具免费

大家好,今天我想和大家分享一些关于网站文章生成的疑虑和期待。作为一个常常需要在网站上发布文章的人,我对这项技术的发展充满了好奇和担忧。在这篇文章中,我将坦率地表达我的想法,希望能引发一些思考。 让我谈一谈我的疑虑。网站…

基于SSM的农产品仓库管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

TypeScript命名空间和模块

🎬 岸边的风:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 命名空间(Namespace) 命名空间(Namespace)使用场景 第三方库 兼容…

【C语言】【strcpy的使用和模拟实现】

1.strcpy的使用: char* strcpy(char* destination,const char* source)返回类型是字符指针,参数是接受方字符串的首地址和要拷贝的字符串的首地址 从接受地的‘\0’开始拷贝,会将源字符串中的’\0’也拷贝过来目标空间必须足够大&#xff0…

【JavaEE】_CSS引入方式与选择器

目录 1. 基本语法格式 2. 引入方式 2.1 内部样式 2.2 内联样式 2.3 外部样式 3. 基础选择器 3.1 标签选择器 3.2 类选择器 3.3 ID选择器 4. 复合选择器 4.1 后代选择器 4.2 子选择器 4.3 并集选择器 4.4 伪类选择器 1. 基本语法格式 选择器若干属性声明 2. 引入…

terraform简单的开始-安装和一些配置

terraform的安装: 官方下载: 浏览器打开terraform官方主页https://www.terraform.io/ 点击Download Terraform 跳转到程序下载页面: 找到自己对应的操作系统,按照操作系统选择安装terraform的方式: linux为例&…