【BASH】回顧與知識點梳理(二十三)

【BASH】回顧與知識點梳理 二十三

    • 二十三. Linux 賬號管理(二)
      • 23.1 賬號管理
        • 新增與移除使用者: useradd, 相關配置文件, passwd, usermod, userdel
          • usermod
          • userdel
      • 23.2 用戶功能(普通用戶可使用)
        • id
        • finger
        • chfn
        • chsh
      • 23.3 新增與移除群組
        • groupadd
        • groupmod
        • groupdel
        • gpasswd:群組管理員功能
      • 23.4 賬號管理實例
      • 23.5 使用外部身份認證系統

該系列目錄 --> 【BASH】回顧與知識點梳理(目錄)

二十三. Linux 賬號管理(二)

23.1 賬號管理

接上章,我們繼續學習賬號管理相關內容

新增與移除使用者: useradd, 相關配置文件, passwd, usermod, userdel

usermod

所謂這『人有失手,馬有亂蹄』,您說是吧?所以啰,當然有的時候會『不小心手滑了一下』在 useradd 的時候加入了錯誤的設定數據。或者是,在使用 useradd 后,發現某些地方還可以進行細部修改。 此時,當然我們可以直接到 /etc/passwd 或 /etc/shadow 去修改相對應字段的數據, 不過,Linux 也有提供相關的指令讓大家來進行賬號相關數據的微調呢~那就是 usermod 啰

[root@study ~]# usermod [-cdegGlsuLU] username
選項與參數:
-c :后面接賬號的說明,即 /etc/passwd 第五欄的說明欄,可以加入一些賬號的說明。
-d :后面接賬號的家目錄,即修改 /etc/passwd 的第六欄;
-e :后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 內的第八個字段數據啦!
-f :后面接天數,為 shadow 的第七字段。
-g :后面接初始群組,修改 /etc/passwd 的第四個字段,亦即是 GID 的字段!
-G :后面接次要群組,修改這個使用者能夠支持的群組,修改的是 /etc/group 啰~
-a :與 -G 合用,可『增加次要群組的支持』而非『設定』喔!
-l :后面接賬號名稱。亦即是修改賬號名稱, /etc/passwd 的第一欄!
-s :后面接 Shell 的實際文件,例如 /bin/bash 或 /bin/csh 等等。
-u :后面接 UID 數字啦!即 /etc/passwd 第三欄的資料;
-L :暫時將用戶的密碼凍結,讓他無法登入。其實僅改 /etc/shadow 的密碼欄。
-U :將 /etc/shadow 密碼欄的 ! 拿掉,解凍啦!

如果你仔細的比對,會發現 usermod 的選項與 useradd 非常類似! 這是因為 usermod 也是用來微調useradd 增加的使用者參數嘛!不過 usermod 還是有新增的選項, 那就是-L-U,不過這兩個選項其實與 passwd 的 -l, -u 是相同的!而且也不見得會存在所有的 distribution 當中!接下來,讓我們談談一些變更參數的實例吧!

# 范例一:修改使用者 vbird2 的說明欄,加上『VBird's test』的說明。
[root@study ~]# usermod -c "VBird's test" vbird2
[root@study ~]# grep vbird2 /etc/passwd
vbird2:x:1500:100:VBird's test:/home/vbird2:/bin/bash# 范例二:使用者 vbird2 這個賬號在 2015/12/31 失效。
[root@study ~]# usermod -e "2015-12-31" vbird2
[root@study ~]# chage -l vbird2 | grep 'Account expires'
Account expires : Dec 31, 2015# 范例三:我們建立 vbird3 這個系統賬號時并沒有給予家目錄,請建立他的家目錄
[root@study ~]# ll -d ~vbird3
ls: cannot access /home/vbird3: No such file or directory <==確認一下,確實沒有家目錄的存在!
[root@study ~]# cp -a /etc/skel /home/vbird3
[root@study ~]# chown -R vbird3:vbird3 /home/vbird3
[root@study ~]# chmod 700 /home/vbird3
[root@study ~]# ll -a ~vbird3
drwx------. 3 vbird3 vbird3 74 May 4 17:51 . <==用戶家目錄權限
drwxr-xr-x. 10 root root 4096 Jul 20 22:51 ..
-rw-r--r--. 1 vbird3 vbird3 18 Mar 6 06:06 .bash_logout
-rw-r--r--. 1 vbird3 vbird3 193 Mar 6 06:06 .bash_profile
-rw-r--r--. 1 vbird3 vbird3 231 Mar 6 06:06 .bashrc
drwxr-xr-x. 4 vbird3 vbird3 37 May 4 17:51 .mozilla
# 使用 chown -R 是為了連同家目錄底下的用戶/群組屬性都一起變更的意思;
# 使用 chmod 沒有 -R ,是因為我們僅要修改目錄的權限而非內部文件的權限!
userdel

這個功能就太簡單了,目的在刪除用戶的相關數據,而用戶的數據有:

  • 用戶賬號/密碼相關參數:/etc/passwd, /etc/shadow
  • 使用者群組相關參數:/etc/group, /etc/gshadow
  • 用戶個人文件數據: /home/username, /var/spool/mail/username…

整個指令的語法非常簡單:

[root@study ~]# userdel [-r] username
選項與參數:
-r :連同用戶的家目錄也一起刪除# 范例一:刪除 vbird2 ,連同家目錄一起刪除
[root@study ~]# userdel -r vbird2

這個指令下達的時候要小心了!通常我們要移除一個賬號的時候,你可以手動的將/etc/passwd/etc/shadow 里頭的該賬號取消即可!一般而言,如果該賬號只是『暫時不啟用』的話,那么將/etc/shadow 里頭賬號失效日期 (第八字段) 設定為 0 就可以讓該賬號無法使用,但是所有跟該賬號相關的數據都會留下來! 使用 userdel 的時機通常是『你真的確定不要讓該用戶在主機上面使用任何數據了!』

另外,其實用戶如果在系統上面操作過一陣子了,那么該用戶其實在系統內可能會含有其他文件的。舉例來說,他的郵件信箱 (mailbox) 或者是例行性工作排程 (crontab, 十五章) 之類的文件。 所以,如果想要完整的將某個賬號完整的移除,最好可以在下達 userdel -r username 之前, 先以『find / -user username』查出整個系統內屬于 username 的文件,然后再加以刪除吧!

23.2 用戶功能(普通用戶可使用)

不論是useradd/usermod/userdel,那都是系統管理員所能夠使用的指令,如果我是一般身份使用者,那么我是否除了密碼之外,就無法更改其他的數據呢? 當然不是啦!這里我們介紹幾個一般身份用戶常用的賬號數據變更與查詢指令啰!

id

id 這個指令則可以查詢某人或自己的相關 UID/GID 等等的信息,他的參數也不少,不過,都不需要記~反正使用 id 就全部都列出啰! 另外,也回想一下,我們在前一章談到的循環時,就有用過這個指令喔! ^_^

[root@study ~]# id [username]
# 范例一:查閱 root 自己的相關 ID 信息!
[root@study ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:
s0-s0:c0.c1023
# 上面信息其實是同一行的數據!包括會顯示 UID/GID 以及支持的所有群組!
# 至于后面那個 context=... 則是 SELinux 的內容,先不要理會他!# 范例二:查閱一下 vbird1 吧~
[root@study ~]# id vbird1
uid=1003(vbird1) gid=1004(vbird1) groups=1004(vbird1)
[root@study ~]# id vbird100
id: vbird100: No such user <== id 這個指令也可以用來判斷系統上面有無某賬號!

finger

finger 的中文字面意義是:『手指』或者是『指紋』的意思。這個 finger 可以查閱很多用戶相關的信息喔! 大部分都是在 /etc/passwd 這個文件里面的信息啦!不過,這個指令有點危險,所以新的版本中已經默認不安裝這個軟件!好啦!現在繼續來安裝軟件先~記得第九章 dos2unix 的安裝方式!假設你已經將光驅或光盤映像文件掛載在 /mnt 底下了,所以:

[root@study ~]# df -hT /mnt
Filesystem Type Size Used Avail Use% Mounted on
/dev/sr0 iso9660 7.1G 7.1G 0 100% /mnt # 先確定是有掛載光盤的啦!
[root@study ~]# rpm -ivh /mnt/Packages/finger-[0-9]*

我們就先來檢查檢查用戶信息吧!

[root@study ~]# finger [-s] username
選項與參數:
-s :僅列出用戶的賬號、全名、終端機代號與登入時間等等;
-m :列出與后面接的賬號相同者,而不是利用部分比對 (包括全名部分)
# 范例一:觀察 vbird1 的用戶相關賬號屬性
[root@study ~]# finger vbird1
Login: vbird1 Name:
Directory: /home/vbird1 Shell: /bin/bash
Never logged in.
No mail.
No Plan.

由于 finger 類似指紋的功能,他會將用戶的相關屬性列出來!如上表所示,其實他列出來的幾乎都是 /etc/passwd 文件里面的東西。列出的信息說明如下:

  • Login:為使用者賬號,亦即 /etc/passwd 內的第一字段;
  • Name:為全名,亦即 /etc/passwd 內的第五字段(或稱為批注);
  • Directory:就是家目錄了;
  • Shell:就是使用的 Shell 文件所在;
  • Never logged in.:figner 還會調查用戶登入主機的情況喔!
  • No mail.:調查 /var/spool/mail 當中的信箱資料;
  • No Plan.:調查 ~vbird1/.plan 文件,并將該文件取出來說明!

不過是否能夠查閱到 Mail 與 Plan 則與權限有關了!因為 Mail / Plan 都是與使用者自己的權限設定有關, root 當然可以查閱到用戶的這些信息,但是 vbird1 就不見得能夠查到 vbird3 的信息, 因為 /var/spool/mail/vbird3 與 /home/vbird3/ 的權限分別是 660, 700 ,那 vbird1 當然就無法查閱的到!這樣解釋可以理解吧?此外,我們可以建立自己想要執行的預定計劃,當然,最多是給自己看的!可以這樣做:

# 范例二:利用 vbird1 建立自己的計劃檔
[vbird1@study ~]$ echo "I will study Linux during this year." > ~/.plan
[vbird1@study ~]$ finger vbird1
Login: vbird1 Name:
Directory: /home/vbird1 Shell: /bin/bash
Last login Mon Jul 20 23:06 (CST) on pts/0
No mail.
Plan:
I will study Linux during this year.# 范例三:找出目前在系統上面登入的用戶與登入時間
[vbird1@study ~]$ finger
Login Name Tty Idle Login Time Office Office Phone Host
dmtsai dmtsai tty2 11d Jul 7 23:07
dmtsai dmtsai pts/0 Jul 20 17:59 

在范例三當中,我們發現輸出的信息還會有 Office, Office Phone 等信息,那這些信息要如何記錄呢?底下我們會介紹 chfn 這個指令!來看看如何修改用戶的 finger 數據吧!

chfn

chfn 有點像是: change finger 的意思!這玩意的使用方法如下:

[root@study ~]# chfn [-foph] [賬號名]
選項與參數:
-f :后面接完整的大名;
-o :您辦公室的房間號碼;
-p :辦公室的電話號碼;
-h :家里的電話號碼!
# 范例一:vbird1 自己更改一下自己的相關信息!
[vbird1@study ~]$ chfn
Changing finger information for vbird1.
Name []: VBird Tsai test <==輸入你想要呈現的全名
Office []: DIC in KSU <==辦公室號碼
Office Phone []: 06-2727175#356 <==辦公室電話
Home Phone []: 06-1234567 <==家里電話號碼
Password: <==確認身份,所以輸入自己的密碼
Finger information changed.
[vbird1@study ~]$ grep vbird1 /etc/passwd
vbird1:x:1003:1004:VBird Tsai test,DIC in KSU,06-2727175#356,06-1234567:/home/vbird1:/bin/bash
# 其實就是改到第五個字段,該字段里面用多個『 , 』分隔就是了!
[vbird1@study ~]$ finger vbird1
Login: vbird1 Name: VBird Tsai test
Directory: /home/vbird1 Shell: /bin/bash
Office: DIC in KSU, 06-2727175#356 Home Phone: 06-1234567
Last login Mon Jul 20 23:12 (CST) on pts/0
No mail.
Plan:
I will study Linux during this year.
# 就是上面特殊字體呈現的那些地方是由 chfn 所修改出來的!

這個指令說實在的,除非是你的主機有很多的用戶,否則倒真是用不著這個程序!這就有點像是 bbs 里頭更改你『個人屬性』的那一個資料啦!不過還是可以自己玩一玩!尤其是用來提醒自己相關資料啦! ^_^

chsh

這就是 change shell 的簡寫!使用方法就更簡單了!

[vbird1@study ~]$ chsh [-ls]
選項與參數:
-l :列出目前系統上面可用的 shell ,其實就是 /etc/shells 的內容!
-s :設定修改自己的 Shell 啰
# 范例一:用 vbird1 的身份列出系統上所有合法的 shell,并且指定 csh 為自己的 shell
[vbird1@study ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin <==所謂:合法不可登入的 Shell 就是這玩意!
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh <==這就是 C shell 啦!
# 其實上面的信息就是我們在 bash 中談到的 /etc/shells 啦!
[vbird1@study ~]$ chsh -s /bin/csh; grep vbird1 /etc/passwd
Changing shell for vbird1.
Password: <==確認身份,請輸入 vbird1 的密碼
Shell changed.
vbird1:x:1003:1004:VBird Tsai test,DIC in KSU,06-2727175#356,06-1234567:/home/vbird1:/bin/csh
[vbird1@study ~]$ chsh -s /bin/bash
# 測試完畢后,立刻改回來!
[vbird1@study ~]$ ll $(which chsh)
-rws--x--x. 1 root root 23856 Mar 6 13:59 /bin/chsh

不論是 chfn 與 chsh ,都是能夠讓一般用戶修改 /etc/passwd 這個系統文件的!所以你猜猜,這兩個文件的權限是什么? 一定是 SUID 的功能啦!看到這里,想到前面! 這就是 Linux 的學習方法~^_^

23.3 新增與移除群組

OK!了解了賬號的新增、刪除、更動與查詢后,再來我們可以聊一聊群組的相關內容了。 基本上,群組的內容都與這兩個文件有關:/etc/group, /etc/gshadow。 群組的內容其實很簡單,都是上面兩個文件的新增、修改與移除而已, 不過,如果再加上有效群組的概念,那么newgrp 與 gpasswd 則不可不知呢!

groupadd

[root@study ~]# groupadd [-g gid] [-r] 組名
選項與參數:
-g :后面接某個特定的 GID ,用來直接給予某個 GID ~
-r :建立系統群組啦!與 /etc/login.defs 內的 GID_MIN 有關。
# 范例一:新建一個群組,名稱為 group1
[root@study ~]# groupadd group1
[root@study ~]# grep group1 /etc/group /etc/gshadow
/etc/group:group1:x:1503:
/etc/gshadow:group1:!::
# 群組的 GID 也是會由 1000 以上最大 GID+1 來決定!

groupmod

跟 usermod 類似的,這個指令僅是在進行 group 相關參數的修改而已。

[root@study ~]# groupmod [-g gid] [-n group_name] 群組名
選項與參數:
-g :修改既有的 GID 數字;
-n :修改既有的組名
# 范例一:將剛剛上個指令建立的 group1 名稱改為 mygroup , GID 為 201
[root@study ~]# groupmod -g 201 -n mygroup group1
[root@study ~]# grep mygroup /etc/group /etc/gshadow
/etc/group:mygroup:x:201:
/etc/gshadow:mygroup:!::

不過,還是那句老話,不要隨意的更動 GID ,容易造成系統資源的錯亂喔!

groupdel

呼呼! groupdel 自然就是在刪除群組的啰~用法很簡單:

[root@study ~]# groupdel [groupname]
# 范例一:將剛剛的 mygroup 刪除!
[root@study ~]# groupdel mygroup# 范例二:若要刪除 vbird1 這個群組的話?
[root@study ~]# groupdel vbird1
groupdel: cannot remove the primary group of user 'vbird1'

為什么 mygroup 可以刪除,但是 vbird1 就不能刪除呢?原因很簡單,『有某個賬號 (/etc/passwd) 的initial group 使用該群組!』 如果查閱一下,你會發現在 /etc/passwd 內的 vbird1 第四欄的 GID 就是 /etc/group 內的 vbird1 那個群組的 GID ,所以啰,當然無法刪除~否則 vbird1 這個用戶登入系統后, 就會找不到 GID ,那可是會造成很大的困擾的!那么如果硬要刪除 vbird1 這個群組呢? 你『必須要確認 /etc/passwd 內的賬號沒有任何人使用該群組作為 initial group 』才行喔!所以,你可以:

  • 修改 vbird1 的 GID ,
  • 或者是刪除 vbird1 這個使用者。

gpasswd:群組管理員功能

如果系統管理員太忙碌了,導致某些賬號想要加入某個項目時找不到人幫忙!這個時候可以建立『群組管理員』喔! 什么是群組管理員呢?就是讓某個群組具有一個管理員,這個群組管理員可以管理哪些賬號可以加入/移出該群組! 那要如何『建立一個群組管理員』呢?就得要透過 gpasswd 啰!

# 關于系統管理員(root)做的動作:
[root@study ~]# gpasswd groupname
[root@study ~]# gpasswd [-A user1,...] [-M user3,...] groupname
[root@study ~]# gpasswd [-rR] groupname
選項與參數::若沒有任何參數時,表示給予 groupname 一個密碼(/etc/gshadow)
-A :將 groupname 的主控權交由后面的使用者管理(該群組的管理員)
-M :將某些賬號加入這個群組當中!
-r :將 groupname 的密碼移除
-R :讓 groupname 的密碼欄失效# 關于群組管理員(Group administrator)做的動作:
[someone@study ~]$ gpasswd [-ad] user groupname
選項與參數:
-a :將某位使用者加入到 groupname 這個群組當中!
-d :將某位使用者移除出 groupname 這個群組當中。
# 范例一:建立一個新群組,名稱為 testgroup 且群組交由 vbird1 管理:
[root@study ~]# groupadd testgroup <==先建立群組
[root@study ~]# gpasswd testgroup <==給這個群組一個密碼吧!
Changing the password for group testgroup
New Password:
Re-enter new password:
# 輸入兩次密碼就對了!
[root@study ~]# gpasswd -A vbird1 testgroup <==加入群組管理員為 vbird1
[root@study ~]# grep testgroup /etc/group /etc/gshadow
/etc/group:testgroup:x:1503:
/etc/gshadow:testgroup:$6$MnmChP3D$mrUn.Vo.buDjObMm8F2emTkvGSeuWikhRzaKHxpJ...:vbird1:
# 很有趣吧!此時 vbird1 則擁有 testgroup 的主控權喔!身份有點像板主啦!# 范例二:以 vbird1 登入系統,并且讓他加入 vbird1, vbird3 成為 testgroup 成員
[vbird1@study ~]$ id
uid=1003(vbird1) gid=1004(vbird1) groups=1004(vbird1) ...
# 看得出來,vbird1 尚未加入 testgroup 群組喔!
[vbird1@study ~]$ gpasswd -a vbird1 testgroup
[vbird1@study ~]$ gpasswd -a vbird3 testgroup
[vbird1@study ~]$ grep testgroup /etc/group
testgroup:x:1503:vbird1,vbird3

23.4 賬號管理實例

賬號管理不是隨意建置幾個賬號就算了!有時候我們需要考慮到一部主機上面可能有多個賬號在協同工作! 舉例來說,在大學任教時,我們學校的專題生是需要分組的,這些同一組的同學間必須要能夠互相修改對方的數據文件, 但是同時這些同學又需要保留自己的私密數據,因此直接公開家目錄是不適宜的。那該如何是好? 為此,我們底下提供幾個例子來讓大家思考看看啰:

任務一:單純的完成上頭交代的任務,假設我們需要的賬號數據如下,你該如何實作?

賬號名稱賬號全名支援次要群組是否可登入主機密碼
myuser11st usermygroup1可以password
myuser22nd usermygroup1可以password
myuser33rd user無額外支持不可以password
# 先處理賬號相關屬性的數據:
[root@study ~]# groupadd mygroup1
[root@study ~]# useradd -G mygroup1 -c "1st user" myuser1
[root@study ~]# useradd -G mygroup1 -c "2nd user" myuser2
[root@study ~]# useradd -c "3rd user" -s /sbin/nologin myuser3
# 再處理賬號的密碼相關屬性的數據:
[root@study ~]# echo "password" | passwd --stdin myuser1
[root@study ~]# echo "password" | passwd --stdin myuser2
[root@study ~]# echo "password" | passwd --stdin myuser3

要注意的地方主要有:myuser1 與 myuser2 都有支援次要群組,但該群組不見得會存在,因此需要先手動建立他! 然后 myuser3 是『不可登入系統』的賬號,因此需要使用 /sbin/nologin 這個 shell 來給予,這樣該賬號就無法登入啰! 這樣是否理解啊!接下來再來討論比較難一些的環境!如果是專題環境該如何制作?

任務二:我的使用者 pro1, pro2, pro3 是同一個項目計劃的開發人員,我想要讓這三個用戶在同一個目錄底下工作, 但這三個用戶還是擁有自己的家目錄與基本的私有群組。假設我要讓這個項目計劃在 /srv/projecta 目錄下開發, 可以如何進行?

# 1. 假設這三個賬號都尚未建立,可先建立一個名為 projecta 的群組,
# 再讓這三個用戶加入其次要群組的支持即可:
[root@study ~]# groupadd projecta
[root@study ~]# useradd -G projecta -c "projecta user" pro1
[root@study ~]# useradd -G projecta -c "projecta user" pro2
[root@study ~]# useradd -G projecta -c "projecta user" pro3
[root@study ~]# echo "password" | passwd --stdin pro1
[root@study ~]# echo "password" | passwd --stdin pro2
[root@study ~]# echo "password" | passwd --stdin pro3# 2. 開始建立此項目的開發目錄:
[root@study ~]# mkdir /srv/projecta
[root@study ~]# chgrp projecta /srv/projecta
[root@study ~]# chmod 2770 /srv/projecta
[root@study ~]# ll -d /srv/projecta
drwxrws---. 2 root projecta 6 Jul 20 23:32 /srv/projecta

但接下來有個困擾的問題發生了!假如任務一的 myuser1 是 projecta 這個項目的助理,他需要這個項目的內容, 但是他『不可以修改』項目目錄內的任何數據!那該如何是好?你或許可以這樣做:

  • 將 myuser1 加入 projecta 這個群組的支持,但是這樣會讓 myuser1 具有完整的 /srv/projecta 的權限,myuser1 是可以刪除該目錄下的任何數據的!這樣是有問題的;
  • 將 /srv/projecta 的權限改為 2775 ,讓 myuser1 可以進入查閱數據。但此時會發生所有其他人均可進入該目錄查閱的困擾! 這也不是我們要的環境。

真要命!傳統的 Linux 權限無法針對某個個人設定專屬的權限嗎?其實是可以啦!接下來我們就來談談這個功能吧!

23.5 使用外部身份認證系統

有時候,除了本機的賬號之外,我們可能還會使用到其他外部的身份驗證服務器所提供的驗證身份的功能!舉例來說, windows 底下有個很有名的身份驗證系統,稱為 Active Directory (AD)的東西,還有 Linux 為了提供不同主機使用同一組賬號密碼, 也會使用到LDAP, NIS等服務器提供的身份驗證等等!

如果你的 Linux 主機要使用到上面提到的這些外部身份驗證系統時,可能就得要額外的設定一些數據了! 為了簡化用戶的操作流程,所以 CentOS 提供一只名為authconfig-tui的指令給我們參考,這個指令的執行結果如下:
在這里插入圖片描述你可以在該畫面中使用 [tab] 按鈕在各個項目中間切換,不過,因為我們沒有適用的服務器可以測試,因此這里僅是提供一個參考的依據, 未來如果談到服務器章節時,你要如果談到服務器章節時,服器有印象,處理外部身份驗證的方式可以透過 authconfig-tui 就好了! 上圖中最多可供操作的,大概僅有支持 MD5 這個早期的密碼格式就是了!此外,不要隨便將已經啟用的項目 (上頭有星號 *的項目) 取消喔! 可能某些賬號會失效…

該系列目錄 --> 【BASH】回顧與知識點梳理(目錄)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38251.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38251.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38251.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【數據庫系統】--【2】DBMS架構

DBMS架構 01DBMS架構概述02 DBMS的物理架構03 DBMS的運行和數據架構DBMS的運行架構DBMS的數據架構PostgreSQL的體系結構RMDB的運行架構 04DBMS的邏輯和開發架構DBMS的層次結構DBMS的開發架構DBMS的代碼架構 05小結 01DBMS架構概述 02 DBMS的物理架構 數據庫系統的體系結構 數據…

騰訊Perfdog支持Windows PC端體驗性能測試

一、背景 最近在做抖音的小玩法&#xff0c;其基于unity引擎&#xff0c;然后掛載到直播伴侶。以及Perfdog近期也支持了Windows的測試&#xff0c;所以做一個體驗測試。 二、如何做 查看PC端的支持&#xff0c;目前是beat版本 選擇或搜索自己需要的對應的程序&#xff0c;如…

python實現文本相似度排名計算

項目中&#xff0c;客戶突然提出需要根據一份企業名單查找對應的內部系統用戶信息&#xff0c;然后根據直接的企業社會統一信用號和企業名稱進行匹配&#xff0c;發現匹配率只有2.86%&#xff0c;低得可憐。所以根據客戶的要求&#xff0c;需要將匹配率提高到70-80%左右&#x…

vue2+百度地圖web端開發

在Vue 2中開發百度地圖Web端應用&#xff0c;你可以使用百度地圖JavaScript API來實現地圖功能。以下是一個簡單的示例&#xff1a; 簡單的示例&#xff1a; 首先&#xff0c;在你的Vue項目中安裝vue-baidu-map插件&#xff1a; npm install vue-baidu-map --save在你的Vue組…

大數據Flink(五十九):Flink on Yarn的三種部署方式介紹以及注意

文章目錄 Flink on Yarn的三種部署方式介紹以及注意 一、Pre-Job 模式部署作業

對任意類型數都可以排序的函數:qsort函數

之前我們學習過冒泡排序&#xff1a; int main() {int arr[] { 9,7,8,6,5,4,3,2,1,0 };int sz sizeof(arr)/sizeof(arr[0]);int i 0;for (i 0; i < sz-1; i) {int j 0;for (j 0; j < sz-1-i; j) {if (arr[j] > arr[j 1]){int temp 0;temp arr[j];arr[j] ar…

接口測試及接口抓包常用的測試工具

接口 接口測試是測試系統組件間接口的一種測試。接口測試主要用于檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換&#xff0c;傳遞和控制管理過程&#xff0c;以及系統間的相互邏輯依賴關系等。 接口測試的重要性 是節省時間前后端不…

七、dokcer-compose部署springboot的jar

1、準備 打包后包名為 ruoyi-admin.jar 增加接口 httpL//{ip}:{port}/common/test/han #環境變量預application.yml 中REDIS_HOSTt的值&#xff0c;去環境變量去找&#xff1b;如果找不到REDIS_HOST就用myredis 1、Dockerfile FROM hlw/java:8-jreRUN ln -sf /usr/share/z…

私密相冊管家-加密碼保護私人相冊照片安全

App Store史上最安全、最強大、最卓越的私密相冊App&#xff01;再也不用擔心私密照片視頻被別人看見了&#xff01;?私密相冊為你提供多重密碼保護機制、簡單便捷的照片存儲空間&#xff0c;完美地將你的私密照片遠離一切惡意偷窺者的窺探&#xff01; 【產品功能】? √ 支…

Redis—持久化

這里寫目錄標題 AOF三種寫回策略寫回策略的優缺點AOF 重寫機制AOF后臺重寫AOF優缺點使用命令 RDBRDB 持久化的工作原理執行快照時&#xff0c;數據能被修改嗎RDB 持久化的優點RDB 持久化的缺點 混合持久化大key對持久化的影響 AOF 保存寫操作命令到日志的持久化方式&#xff0…

開源數據庫Mysql_DBA運維實戰 (DML/DQL語句)

DML/DQL DML INSERT 實現數據的 插入 實例&#xff1a; DELETE 實現數據的 刪除 實例&#xff1a; UPDATE 實現數據的 更新 實例1&#xff1a; 實例2&#xff1a; 實例3&#xff1a; DQL DML/DQL DML語句 數據庫操縱語言&#xff1a; 插入數據INSERT、刪除數據DELE…

2023年即將推出的CSS特性對你影響大不大?

Google開發者大會每年都會提出有關于 Web UI 和 CSS 方面的新特性&#xff0c;今年又上新了許多新功能&#xff0c;今天就從中找出了影響最大的幾個功能給大家介紹一下 :has :has() 可以通過檢查父元素是否包含特定子元素或這些子元素是否處于特定狀態來改變樣式&#xff0c;也…

Python|OpenCV-繪制圖形和添加文字的方法(2)

前言 本文是該專欄的第2篇,后面將持續分享OpenCV計算機視覺的干貨知識,記得關注。 OpenCV作為一個強大的計算機視覺功能庫,除了能解決圖像處理和計算機視覺任務之外,它還有著非常豐富的圖像繪制功能。可以說,不論是在計算機視覺任務中標記目標領域,還是在圖像上繪制一些…

二刷LeetCode--155. 最小棧(C++版本),思維題

思路:本題需要使用兩個棧,一個就是正常棧,執行出入操作,另一個棧只負責將對應的最小值進行保存即可.每次入棧的時候,最小值棧的棧頂也需要入棧元素,不過這個元素是最小值,那么就需要進行比較,因此在getmin()的時候只需要將最小值棧的棧頂元素彈出即可.初始化的時候只需要將最小…

【vue3】點擊按鈕彈出卡片,點擊卡片中的取消按鈕取消彈出的卡片(附代碼)

實現思路&#xff1a; 在按鈕上綁定一個點擊事件&#xff0c;默認是true&#xff1b;在export default { }中注冊變量給卡片標簽用v-if判斷是否要顯示卡片&#xff0c;ture則顯示&#xff1b;在卡片里面寫好你想要展示的數據&#xff1b;給卡片添加一個取消按鈕&#xff0c;綁…

JVM G1垃圾回收機制介紹

G1(Garbage First)收集器 (標記-整理算法)&#xff1a; Java堆并行收集器&#xff0c;G1收集器是JDK1.7提供的一個新收集器&#xff0c;G1收集器基于“標記-整理”算法實現&#xff0c;也就是說不會產生內存碎片。此外&#xff0c;G1收集器不同于之前的收集器的一個重要特點是&…

vue中 contenteditable 中如何將光標聚焦到最后位置

場景: 1. 在vue中, 又在for循環中, 給div元素配置contenteditable屬性, 但是使用不了v-model綁定 2. 點擊外部元素需要聚焦并將光標聚焦到最后位置 方案: 1. 使用vue-input-contenteditable第三方包, 可以使用v-model綁定, // 下載 yarn add vue-input-contenteditable…

每日一學——網絡層

網絡層是計算機網絡體系結構中的一個關鍵層級。它負責將數據從源主機發送到目標主機&#xff0c;通過路由選擇和路徑管理實現在不同網絡之間的數據傳輸。以下是網絡層的詳細資料&#xff0c;包括應用、案例和常見問題&#xff1a; 功能&#xff1a;網絡層的主要功能是提供端到端…

[Poetize6] IncDec Sequence

題目描述 給定一個長度為 n 的數列 a_1,a_2,...,a_n&#xff0c;每次可以選擇一個區間[l,r]&#xff0c;使這個區間內的數都加 1 或者都減 1。 請問至少需要多少次操作才能使數列中的所有數都一樣&#xff0c;并求出在保證最少次數的前提下&#xff0c;最終得到的數列有多…

django部署到centos服務器上

具體的操作步驟 步驟一 更新系統和安裝依賴&#xff0c; sudo yum update sudo yum install python3 python3-pip python3-devel git步驟二&#xff1a;創建并激活虛擬環境 在終端中執行以下命令&#xff1a; python3 -m venv myenv source myenv/bin/activate可以不創建虛擬…