新建帳號須要root帳號或sudo權限,sudo配置保存在/etc/sudoers文件。html
sudo的做用是容許系統管理員讓普通用戶執行一些或者所有的root命令,這樣就能夠不用頻繁的切換到root帳號,也能夠靈活的設置權限。執行命令本質上是運行一個個可執行文件,而每一個可執行文件都設置了權限,這樣就對不一樣的帳號區別對待了。apache
執行 ls -l /usr/bin/sudo獲得結果:centos
---s--x--x. 1 root root 123832 Jul 24 2015 /usr/bin/sudo*
能夠看到sudo文件屬主/組都是root,前面的信息代表全部的用戶都能運行它,s表明使用者臨時具備該文件所屬主/組的執行權限,因此運行它後,會以root權限運行。(若是沒有這個s,則是以使用者本身的帳號運行,結果就是若是sudo須要讀取只有root權限才能讀的文件,那麼沒有設置s位的話就會失敗)less
sudoers的配置格式通常爲:koa
root ALL=(ALL:ALL) ALL %sudo ALL=(ALL:ALL) ALL
%sudo表示sudo組,第一個ALL表示地址,如localhost或ip等。(ALL:ALL)是可選項,表示以(用戶:用戶組)身份執行,若是沒有這一項,則以本身帳號執行命令;最後一個ALL表示全部命令(/bin/su, /bin/mkdir, /bin/chown等)。ssh
題外話:由於sudo每次使用都須要輸入密碼,有些繁瑣,試着經過配置免去密碼輸入。this
依照上面格式添加配置spa
star ALL=(ALL:ALL) NOPASSWD:ALL
%sudo ALL=(ALL:ALL) ALL
發現沒用,由於star屬於sudo組,被組的配置覆蓋了,因而決定從sudo組中退出code
gpasswd -d star sudo
groups star
處理完以後發現命令id 和 id star的輸出不同,id的結果裏面還有sudo組,而id star已經沒有了。重登陸,id也沒有sudo組了。orm
修改完以後有時候新開一個終端,第一次執行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