sudo,linux 新建賬號,並開通ssh登錄


新建賬號需要root賬號或sudo權限,sudo配置保存在/etc/sudoers文件。

sudo的作用是允許系統管理員讓普通用戶執行一些或者全部的root命令,這樣就可以不用頻繁的切換到root賬號,也可以靈活的設置權限。執行命令本質上是運行一個個可執行文件,而每個可執行文件都設置了權限,這樣就對不同的賬號區別對待了。

執行 ls -l /usr/bin/sudo得到結果:

---s--x--x. 1 root root 123832 Jul 24  2015 /usr/bin/sudo*

可以看到sudo文件屬主/組都是root,前面的信息表明所有的用戶都能運行它,s代表使用者臨時具有該文件所屬主/組的執行權限,所以運行它后,會以root權限運行。(如果沒有這個s,則是以使用者自己的賬號運行,結果就是如果sudo需要讀取只有root權限才能讀的文件,那么沒有設置s位的話就會失敗)

sudoers的配置格式一般為:

root    ALL=(ALL:ALL) ALL 
%sudo   ALL=(ALL:ALL) ALL

%sudo表示sudo組,第一個ALL表示地址,如localhost或ip等。(ALL:ALL)是可選項,表示以(用戶:用戶組)身份執行,如果沒有這一項,則以自己賬號執行命令;最后一個ALL表示所有命令(/bin/su, /bin/mkdir, /bin/chown等)。

題外話:因為sudo每次使用都需要輸入密碼,有些繁瑣,試着通過配置免去密碼輸入。

依照上面格式添加配置

star    ALL=(ALL:ALL) NOPASSWD:ALL
%sudo   ALL=(ALL:ALL) ALL

發現沒用,因為star屬於sudo組,被組的配置覆蓋了,於是決定從sudo組中退出

gpasswd -d star sudo
groups star

處理完之后發現命令id 和 id star的輸出不一樣,id的結果里面還有sudo組,而id star已經沒有了。重登錄,id也沒有sudo組了。

修改完之后有時候新開一個終端,第一次執行sudo command時,會讓你輸密碼,之后就不會。重登錄,也沒這個問題了。

回過頭查看,其實不把賬號從sudo組里刪除,除了第一次要輸入密碼,后面的sudo命令也不需要密碼,但是直接刪掉更省事些。

中間發生了一個插曲:修改sudoers文件時,修改權限不小心用了

chmod o+w /etc/sudoers

本來是想 u+w,輸錯了。

結果使用star賬號再執行sudo命令時,提示

sudo: /etc/sudoers is world writable

想通過sudo su切換到root也是這個提示,死循環,慌了。。。

百度一下,發現還有別的命令:

pkexec chmod 0440 /etc/sudoers

whatis pkexec --  Execute a command as another user

默認使用root賬號執行,只要知道root密碼就行。一切正常。

 

創建賬號使用的是/usr/sbin/useradd命令,最好使用絕對路徑,因為不同的創建賬戶命令參數格式略有不同。

/usr/sbin/useradd -c koala -d /opt/code/home/koala  -g staff -G apache -m -u 9013 koala 

-d : home目錄

-g : 主要的所屬組

-G : 其他所屬組

-m : 創建home目錄

-u : userID

最后的koala代表用戶名,創建完后再為賬號設置一個密碼:

/usr/bin/passwd koala

創建完成后,可以在/etc/passwd文件中找到koala賬戶信息。但是新建賬號默認是不能通過ssh訪問的,接下來需要開通ssh登錄,以便從外部訪問。

vi /etc/ssh/sshd_config 

插入配置語句:

AllowUsers:koala

如果想讓所有用戶都能訪問,直接:

AllowUsers *

經過這些步驟后,就可以直接ssh登錄koala賬號了

ssh koala@ip

然而每次登陸都需要輸入一次密碼,比較繁瑣,一個登錄免密碼的小技巧:

在創建的koala賬戶下,進入~/.ssh目錄(如果沒有則創建一個),

新建authorized_keys文件,寫入需要登錄koala的遠程賬號的公鑰信息。即,加入是要從另一台機器(IP假設為192.168.66.60)的test賬號登錄koala賬號,

則test賬號下的~/.ssh目錄下有兩個文件id_rsa和id_rsa.pub,分別代表私鑰和公鑰,把id_rsa.pub里的內容復制到koala賬戶下的~/.ssh/authorized_keys文件中。

這樣以后每次從test賬號登錄koala賬號時,都不需要輸入密碼。

 

補充:如果經過以上步驟,還是不能免密碼登錄,則需要檢查一下權限:

◦authorized_keys 文件必須是600權限(也就是-rw——-)或者644
◦.ssh目錄必須是700權限(也就是drwx——)
◦/home/work目錄 必須是 755權限 即drwxr-xr-x

其原因是,不能讓所有者之外的用戶對authorized_keys文件有寫權限,否則,sshd將不允許使用該文件,因為它可能會被其他用戶篡改。

如果authorized_keys文件、$HOME/.ssh目錄 或 $HOME目錄讓本用戶之外的用戶有寫權限,那么sshd都會拒絕使用 ~/.ssh/authorized_keys 文件中的key來進行認證的。

在man sshd中有這段話:

~/.ssh/authorized_keys
             Lists the public keys (RSA/ECDSA/DSA) that can be used for logging in as this user.  The format of this file is described above.  The content of the file is not highly
             sensitive, but the recommended permissions are read/write for the user, and not accessible by others.

             If this file, the ~/.ssh directory, or the user’s home directory are writable by other users, then the file could be modified or replaced by unauthorized users.  In this
             case, sshd will not allow it to be used unless the StrictModes option has been set to “no”.

引用自:http://www.centoscn.com/CentosBug/softbug/2013/1204/2193.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM